- Update to gdb 7.12.1

* negative repeat count for x examines backwards
  * fortran: support structs/arrays with dynamically types fields
  * support MPX bound checking
  * support for the Rust language
  * 'catch syscall' now can catch groups of related syscalls
  * New (sub)commands:
    - skip {-file,-gfile,-function,-rfunction}: generic skip
      mechanism
    - maint {selftest,info line-table}
    - new-ui: create new user interface for GUI clients
  * (fast) tracepoints on s390x and ppc64le added to gdbserver
  * New target Andes NDS32
- Remove patch gdb-aarch64-v81-hwbreakpoints.diff (upstream)
- Add patches from Fedora package:
    gdb-6.7-testsuite-stable-results.patch
    gdb-add-index-chmod.patch
    gdb-bison-old.patch
    gdb-container-rh-pkg.patch
    gdb-libexec-add-index.patch
    gdb-linux_perf-bundle.patch
    gdb-physname-pr11734-test.patch
    gdb-physname-pr12273-test.patch
    gdb-rhbz1007614-memleak-infpy_read_memory-test.patch
    gdb-rhbz1084404-ppc64-s390x-wrong-prologue-skip-O2-g-3of3.patch
    gdb-rhbz1149205-catch-syscall-after-fork-test.patch
    gdb-rhbz1156192-recursive-dlopen-test.patch
    gdb-rhbz1186476-internal-error-unqualified-name-re-set-test.patch
    gdb-rhbz1350436-type-printers-error.patch
    gdb-test-ivy-bridge.patch

OBS-URL: https://build.opensuse.org/package/show/devel:gcc/gdb?expand=0&rev=151
This commit is contained in:
Michael Matz 2017-02-15 16:05:56 +00:00 committed by Git OBS Bridge
parent ed65659810
commit a2f8e1d8c6
57 changed files with 9888 additions and 2625 deletions

View File

@ -108,7 +108,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/testsuite/gdb.base/gcore-shmid0.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.6.50.20130731-cvs/gdb/testsuite/gdb.base/gcore-shmid0.c 2013-08-02 22:22:17.573599496 +0200
@@ -0,0 +1,127 @@
@@ -0,0 +1,128 @@
+/* Copyright 2007, 2009 Free Software Foundation, Inc.
+
+ This file is part of GDB.
@ -139,6 +139,7 @@ Index: gdb-7.6.50.20130731-cvs/gdb/testsuite/gdb.base/gcore-shmid0.c
+#include <stdlib.h>
+#include <unistd.h>
+#include <assert.h>
+#include <time.h>
+
+/* The same test running in a parallel testsuite may steal us the zero SID,
+ even if we never get any EEXIST. Just try a while. */

View File

@ -1,8 +1,8 @@
Index: gdb-7.10.1/gdb/build-id.c
Index: gdb-7.12.1/gdb/build-id.c
===================================================================
--- gdb-7.10.1.orig/gdb/build-id.c 2016-01-14 16:19:02.000000000 +0100
+++ gdb-7.10.1/gdb/build-id.c 2016-01-14 16:21:43.000000000 +0100
@@ -830,9 +830,9 @@ missing_rpm_enlist (const char *filename
--- gdb-7.12.1.orig/gdb/build-id.c 2017-02-14 15:56:04.000000000 +0100
+++ gdb-7.12.1/gdb/build-id.c 2017-02-14 15:58:29.000000000 +0100
@@ -841,9 +841,9 @@ missing_rpm_enlist_1 (const char *filena
if (h == NULL)
break;
@ -15,7 +15,7 @@ Index: gdb-7.10.1/gdb/build-id.c
&err);
if (!debuginfo)
{
@@ -840,60 +840,19 @@ missing_rpm_enlist (const char *filename
@@ -851,60 +851,19 @@ missing_rpm_enlist_1 (const char *filena
err);
continue;
}
@ -25,12 +25,12 @@ Index: gdb-7.10.1/gdb/build-id.c
- if (s > debuginfo && memcmp (s, ".src.rpm", srcrpmlen) == 0)
- {
- /* s2 = `-%{release}.src.rpm-debuginfo.%{arch}' */
- s2 = memrchr (debuginfo, '-', s - debuginfo);
- s2 = (char *) memrchr (debuginfo, '-', s - debuginfo);
- }
- if (s2)
- {
- /* s2 = `-%{version}-%{release}.src.rpm-debuginfo.%{arch}' */
- s2 = memrchr (debuginfo, '-', s2 - debuginfo);
- s2 = (char *) memrchr (debuginfo, '-', s2 - debuginfo);
- }
- if (!s2)
- {
@ -54,7 +54,7 @@ Index: gdb-7.10.1/gdb/build-id.c
+ /* Verify the debuginfo file is not already installed. */
/* RPMDBI_PACKAGES requires keylen == sizeof (int). */
/* RPMDBI_LABEL is an interface for NVR-based dbiFindByLabel(). */
mi_debuginfo = rpmtsInitIterator_p (ts, RPMDBI_LABEL, debuginfo, 0);
mi_debuginfo = rpmtsInitIterator_p (ts, (rpmTag) RPMDBI_LABEL, debuginfo, 0);
- xfree (debuginfo);
if (mi_debuginfo)
{
@ -78,7 +78,7 @@ Index: gdb-7.10.1/gdb/build-id.c
/* Base package name for `debuginfo-install'. We do not use the
`yum' command directly as the line
yum --enablerepo='*debug*' install NAME-debuginfo.ARCH
@@ -978,10 +937,7 @@ missing_rpm_list_print (void)
@@ -1035,10 +994,7 @@ missing_rpm_list_print (void)
(int (*) (const void *, const void *)) missing_rpm_list_compar);
printf_unfiltered (_("Missing separate debuginfos, use: %s"),
@ -90,7 +90,7 @@ Index: gdb-7.10.1/gdb/build-id.c
for (array_iter = array; array_iter < array + missing_rpm_list_entries;
array_iter++)
{
@@ -1194,13 +1150,12 @@ debug_print_missing (const char *binary,
@@ -1251,13 +1207,12 @@ debug_print_missing (const char *binary,
fprintf_unfiltered (gdb_stdlog,
_("Missing separate debuginfo for %s\n"), binary);
if (debug != NULL)

View File

@ -1,25 +1,16 @@
Index: gdb-7.10.50.20160106/gdb/event-top.c
Index: gdb-7.11.50.20160630/gdb/event-top.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/event-top.c
+++ gdb-7.10.50.20160106/gdb/event-top.c
@@ -37,6 +37,7 @@
#include "gdbcmd.h" /* for dont_repeat() */
#include "annotate.h"
#include "maint.h"
--- gdb-7.11.50.20160630.orig/gdb/event-top.c 2016-07-02 23:43:24.085214144 +0200
+++ gdb-7.11.50.20160630/gdb/event-top.c 2016-07-03 14:37:12.572130734 +0200
@@ -40,6 +40,7 @@
#include "buffer.h"
#include "ser-event.h"
#include "gdb_select.h"
+#include "symfile.h"
/* readline include files. */
#include "readline/readline.h"
@@ -180,6 +181,8 @@ rl_callback_read_char_wrapper (gdb_clien
void
cli_command_loop (void *data)
{
+ debug_flush_missing ();
+
display_gdb_prompt (0);
/* Now it's time to start the event loop. */
@@ -298,6 +301,8 @@ display_gdb_prompt (const char *new_prom
@@ -347,6 +348,8 @@
/* Reset the nesting depth used when trace-commands is set. */
reset_command_nest_depth ();
@ -28,11 +19,23 @@ Index: gdb-7.10.50.20160106/gdb/event-top.c
old_chain = make_cleanup (free_current_contents, &actual_gdb_prompt);
/* Do not call the python hook on an explicit prompt change as
Index: gdb-7.10.50.20160106/gdb/symfile.h
@@ -794,7 +797,10 @@
command_handler (cmd);
if (ui->prompt_state != PROMPTED)
- display_gdb_prompt (0);
+ {
+ debug_flush_missing ();
+ display_gdb_prompt (0);
+ }
}
}
Index: gdb-7.11.50.20160630/gdb/symfile.h
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/symfile.h
+++ gdb-7.10.50.20160106/gdb/symfile.h
@@ -587,6 +587,8 @@ void map_symbol_filenames (symbol_filena
--- gdb-7.11.50.20160630.orig/gdb/symfile.h 2016-07-03 14:34:32.032753668 +0200
+++ gdb-7.11.50.20160630/gdb/symfile.h 2016-07-03 14:37:12.573130742 +0200
@@ -592,6 +592,8 @@
/* build-id support. */
extern struct bfd_build_id *build_id_addr_get (CORE_ADDR addr);
extern void debug_print_missing (const char *binary, const char *debug);
@ -41,48 +44,10 @@ Index: gdb-7.10.50.20160106/gdb/symfile.h
/* From dwarf2read.c */
Index: gdb-7.10.50.20160106/gdb/testsuite/lib/gdb.exp
Index: gdb-7.11.50.20160630/gdb/aclocal.m4
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/testsuite/lib/gdb.exp
+++ gdb-7.10.50.20160106/gdb/testsuite/lib/gdb.exp
@@ -1642,7 +1642,7 @@ proc default_gdb_start { } {
warning "Couldn't set the width to 0."
}
}
- # Turn off the missing warnings as the testsuite does not expect it.
+ # Turn off the missing RPMs warnings as the testsuite does not expect it.
send_gdb "set build-id-verbose 0\n"
gdb_expect 10 {
-re "$gdb_prompt $" {
Index: gdb-7.10.50.20160106/gdb/testsuite/lib/mi-support.exp
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/testsuite/lib/mi-support.exp
+++ gdb-7.10.50.20160106/gdb/testsuite/lib/mi-support.exp
@@ -204,7 +204,7 @@ proc default_mi_gdb_start { args } {
warning "Couldn't set the width to 0."
}
}
- # Turn off the missing warnings as the testsuite does not expect it.
+ # Turn off the missing RPMs warnings as the testsuite does not expect it.
send_gdb "190-gdb-set build-id-verbose 0\n"
gdb_expect 10 {
-re ".*190-gdb-set build-id-verbose 0\r\n190\\\^done\r\n$mi_gdb_prompt$" {
Index: gdb-7.10.50.20160106/gdb/tui/tui-interp.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/tui/tui-interp.c
+++ gdb-7.10.50.20160106/gdb/tui/tui-interp.c
@@ -31,6 +31,7 @@
#include "tui/tui-io.h"
#include "infrun.h"
#include "observer.h"
+#include "symfile.h"
static struct ui_out *tui_ui_out (struct interp *self);
Index: gdb-7.10.50.20160106/gdb/aclocal.m4
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/aclocal.m4
+++ gdb-7.10.50.20160106/gdb/aclocal.m4
--- gdb-7.11.50.20160630.orig/gdb/aclocal.m4 2016-07-02 23:43:24.085214144 +0200
+++ gdb-7.11.50.20160630/gdb/aclocal.m4 2016-07-03 14:37:12.576130768 +0200
@@ -11,6 +11,221 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@ -305,10 +270,10 @@ Index: gdb-7.10.50.20160106/gdb/aclocal.m4
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
Index: gdb-7.10.50.20160106/gdb/config.in
Index: gdb-7.11.50.20160630/gdb/config.in
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/config.in
+++ gdb-7.10.50.20160106/gdb/config.in
--- gdb-7.11.50.20160630.orig/gdb/config.in 2016-07-02 23:43:24.085214144 +0200
+++ gdb-7.11.50.20160630/gdb/config.in 2016-07-03 14:37:12.576130768 +0200
@@ -33,6 +33,9 @@
/* Define to BFD's default target vector. */
#undef DEFAULT_BFD_VEC
@ -319,7 +284,7 @@ Index: gdb-7.10.50.20160106/gdb/config.in
/* Define to 1 if translation of program messages to the user's native
language is requested. */
#undef ENABLE_NLS
@@ -258,6 +261,9 @@
@@ -261,6 +264,9 @@
/* Define if Python 2.7 is being used. */
#undef HAVE_LIBPYTHON2_7
@ -329,11 +294,11 @@ Index: gdb-7.10.50.20160106/gdb/config.in
/* Define to 1 if you have the <libunwind-ia64.h> header file. */
#undef HAVE_LIBUNWIND_IA64_H
Index: gdb-7.10.50.20160106/gdb/configure
Index: gdb-7.11.50.20160630/gdb/configure
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/configure
+++ gdb-7.10.50.20160106/gdb/configure
@@ -705,6 +705,11 @@ PKGVERSION
--- gdb-7.11.50.20160630.orig/gdb/configure 2016-07-02 23:43:24.085214144 +0200
+++ gdb-7.11.50.20160630/gdb/configure 2016-07-03 14:37:12.581130811 +0200
@@ -705,6 +705,11 @@
HAVE_NATIVE_GCORE_TARGET
TARGET_OBS
subdirs
@ -345,7 +310,7 @@ Index: gdb-7.10.50.20160106/gdb/configure
GDB_DATADIR
DEBUGDIR
MAKEINFO_EXTRA_FLAGS
@@ -813,6 +818,7 @@ with_gdb_datadir
@@ -814,6 +819,7 @@
with_relocated_sources
with_auto_load_dir
with_auto_load_safe_path
@ -353,7 +318,7 @@ Index: gdb-7.10.50.20160106/gdb/configure
enable_targets
enable_64_bit_bfd
enable_gdbcli
@@ -869,6 +875,11 @@ CCC
@@ -870,6 +876,11 @@
CPP
MAKEINFO
MAKEINFOFLAGS
@ -365,7 +330,7 @@ Index: gdb-7.10.50.20160106/gdb/configure
YACC
YFLAGS
XMKMF'
@@ -1540,6 +1551,8 @@ Optional Packages:
@@ -1541,6 +1552,8 @@
[--with-auto-load-dir]
--without-auto-load-safe-path
do not restrict auto-loaded files locations
@ -374,7 +339,7 @@ Index: gdb-7.10.50.20160106/gdb/configure
--with-libunwind-ia64 use libunwind frame unwinding for ia64 targets
--with-curses use the curses library instead of the termcap
library
@@ -1595,6 +1608,13 @@ Some influential environment variables:
@@ -1595,6 +1608,13 @@
MAKEINFO Parent configure detects if it is of sufficient version.
MAKEINFOFLAGS
Parameters for MAKEINFO.
@ -388,7 +353,7 @@ Index: gdb-7.10.50.20160106/gdb/configure
YACC The `Yet Another C Compiler' implementation to use. Defaults to
the first program found out of: `bison -y', `byacc', `yacc'.
YFLAGS The list of arguments that will be passed by default to $YACC.
@@ -5655,6 +5675,494 @@ _ACEOF
@@ -5613,6 +5633,494 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_auto_load_safe_path" >&5
$as_echo "$with_auto_load_safe_path" >&6; }
@ -883,11 +848,11 @@ Index: gdb-7.10.50.20160106/gdb/configure
subdirs="$subdirs testsuite"
Index: gdb-7.10.50.20160106/gdb/configure.ac
Index: gdb-7.11.50.20160630/gdb/configure.ac
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/configure.ac
+++ gdb-7.10.50.20160106/gdb/configure.ac
@@ -177,6 +177,199 @@ AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escap
--- gdb-7.11.50.20160630.orig/gdb/configure.ac 2016-07-02 23:43:24.085214144 +0200
+++ gdb-7.11.50.20160630/gdb/configure.ac 2016-07-03 14:37:12.582130819 +0200
@@ -177,6 +177,199 @@
[Directories safe to hold auto-loaded files.])
AC_MSG_RESULT([$with_auto_load_safe_path])
@ -1087,11 +1052,11 @@ Index: gdb-7.10.50.20160106/gdb/configure.ac
AC_CONFIG_SUBDIRS(testsuite)
# Check whether to support alternative target configurations
Index: gdb-7.10.50.20160106/gdb/corelow.c
Index: gdb-7.11.50.20160630/gdb/corelow.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/corelow.c
+++ gdb-7.10.50.20160106/gdb/corelow.c
@@ -310,7 +310,7 @@ build_id_locate_exec (int from_tty)
--- gdb-7.11.50.20160630.orig/gdb/corelow.c 2016-07-03 14:34:32.022753582 +0200
+++ gdb-7.11.50.20160630/gdb/corelow.c 2016-07-03 14:37:12.582130819 +0200
@@ -310,7 +310,7 @@
symfile_objfile->flags |= OBJF_BUILD_ID_CORE_LOADED;
}
else
@ -1100,10 +1065,10 @@ Index: gdb-7.10.50.20160106/gdb/corelow.c
do_cleanups (back_to);
Index: gdb-7.10.50.20160106/gdb/build-id.c
Index: gdb-7.11.50.20160630/gdb/build-id.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/build-id.c
+++ gdb-7.10.50.20160106/gdb/build-id.c
--- gdb-7.11.50.20160630.orig/gdb/build-id.c 2016-07-03 14:36:50.124938187 +0200
+++ gdb-7.11.50.20160630/gdb/build-id.c 2016-07-03 14:42:25.171812134 +0200
@@ -35,6 +35,7 @@
#include "elf/common.h"
#include "elf-bfd.h"
@ -1112,7 +1077,7 @@ Index: gdb-7.10.50.20160106/gdb/build-id.c
#define BUILD_ID_VERBOSE_NONE 0
#define BUILD_ID_VERBOSE_FILENAMES 1
@@ -665,8 +666,366 @@ build_id_to_filename (const struct bfd_b
@@ -665,8 +666,366 @@
return result;
}
@ -1221,13 +1186,13 @@ Index: gdb-7.10.50.20160106/gdb/build-id.c
+ return 0;
+ }
+
+ if (!((headerFormat_p = dlsym (h, "headerFormat"))
+ && (rpmReadConfigFiles_p = dlsym (h, "rpmReadConfigFiles"))
+ && (rpmdbFreeIterator_p = dlsym (h, "rpmdbFreeIterator"))
+ && (rpmdbNextIterator_p = dlsym (h, "rpmdbNextIterator"))
+ && (rpmtsCreate_p = dlsym (h, "rpmtsCreate"))
+ && (rpmtsFree_p = dlsym (h, "rpmtsFree"))
+ && (rpmtsInitIterator_p = dlsym (h, "rpmtsInitIterator"))))
+ if (!((headerFormat_p = (char *(*) (Header h, const char * fmt, errmsg_t *errmsg)) dlsym (h, "headerFormat"))
+ && (rpmReadConfigFiles_p = (int (*) (const char * file, const char * target)) dlsym (h, "rpmReadConfigFiles"))
+ && (rpmdbFreeIterator_p = (rpmdbMatchIterator (*) (rpmdbMatchIterator mi)) dlsym (h, "rpmdbFreeIterator"))
+ && (rpmdbNextIterator_p = (Header (*) (rpmdbMatchIterator mi)) dlsym (h, "rpmdbNextIterator"))
+ && (rpmtsCreate_p = (rpmts (*) (void)) dlsym (h, "rpmtsCreate"))
+ && (rpmtsFree_p = (rpmts (*) (rpmts ts)) dlsym (h, "rpmtsFree"))
+ && (rpmtsInitIterator_p = (rpmdbMatchIterator (*) (const rpmts ts, rpmTag rpmtag, const void *keyp, size_t keylen)) dlsym (h, "rpmtsInitIterator"))))
+ {
+ warning (_("Opened library \"%s\" is incompatible (%s), "
+ "missing debuginfos notifications will not be displayed"),
@ -1283,12 +1248,12 @@ Index: gdb-7.10.50.20160106/gdb/build-id.c
+ if (s > debuginfo && memcmp (s, ".src.rpm", srcrpmlen) == 0)
+ {
+ /* s2 = `-%{release}.src.rpm-debuginfo.%{arch}' */
+ s2 = memrchr (debuginfo, '-', s - debuginfo);
+ s2 = (char *) memrchr (debuginfo, '-', s - debuginfo);
+ }
+ if (s2)
+ {
+ /* s2 = `-%{version}-%{release}.src.rpm-debuginfo.%{arch}' */
+ s2 = memrchr (debuginfo, '-', s2 - debuginfo);
+ s2 = (char *) memrchr (debuginfo, '-', s2 - debuginfo);
+ }
+ if (!s2)
+ {
@ -1311,7 +1276,7 @@ Index: gdb-7.10.50.20160106/gdb/build-id.c
+
+ /* RPMDBI_PACKAGES requires keylen == sizeof (int). */
+ /* RPMDBI_LABEL is an interface for NVR-based dbiFindByLabel(). */
+ mi_debuginfo = rpmtsInitIterator_p (ts, RPMDBI_LABEL, debuginfo, 0);
+ mi_debuginfo = rpmtsInitIterator_p (ts, (rpmTag) RPMDBI_LABEL, debuginfo, 0);
+ xfree (debuginfo);
+ if (mi_debuginfo)
+ {
@ -1362,7 +1327,7 @@ Index: gdb-7.10.50.20160106/gdb/build-id.c
+
+ *slot = debuginfo;
+
+ missing_rpm = xmalloc (sizeof (*missing_rpm) + strlen (debuginfo));
+ missing_rpm = (struct missing_rpm *) xmalloc (sizeof (*missing_rpm) + strlen (debuginfo));
+ strcpy (missing_rpm->rpm, debuginfo);
+ missing_rpm->next = missing_rpm_list;
+ missing_rpm_list = missing_rpm;
@ -1400,7 +1365,7 @@ Index: gdb-7.10.50.20160106/gdb/build-id.c
+ if (missing_rpm_list_entries == 0)
+ return;
+
+ array = xmalloc (sizeof (*array) * missing_rpm_list_entries);
+ array = (char **) xmalloc (sizeof (*array) * missing_rpm_list_entries);
+ cleanups = make_cleanup (xfree, array);
+
+ array_iter = array;
@ -1480,7 +1445,7 @@ Index: gdb-7.10.50.20160106/gdb/build-id.c
avoidance. */
struct missing_filepair
@@ -720,11 +1079,17 @@ missing_filepair_change (void)
@@ -720,11 +1079,17 @@
/* All their memory came just from missing_filepair_OBSTACK. */
missing_filepair_hash = NULL;
}
@ -1498,7 +1463,7 @@ Index: gdb-7.10.50.20160106/gdb/build-id.c
missing_filepair_change ();
}
@@ -791,14 +1156,39 @@ debug_print_missing (const char *binary,
@@ -791,14 +1156,39 @@
*slot = missing_filepair;

View File

@ -1,3 +1,6 @@
gdb returns an incorrect back trace when applying a debuginfo
https://bugzilla.redhat.com/show_bug.cgi?id=1339862
Index: gdb-7.9.90.20150709/gdb/solib-svr4.c
===================================================================
--- gdb-7.9.90.20150709.orig/gdb/solib-svr4.c 2015-07-09 18:18:54.526417766 +0200
@ -57,3 +60,163 @@ Index: gdb-7.9.90.20150709/gdb/solib-svr4.c
xfree (build_id_filename);
xfree (build_id);
--- /dev/null 2016-07-02 20:29:01.679404943 +0200
+++ gdb-7.11.50.20160721/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib.exp 2016-07-31 23:04:49.062753722 +0200
@@ -0,0 +1,105 @@
+# Copyright 2016 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if {[skip_shlib_tests]} {
+ return 0
+}
+
+set testfile "gcore-buildid-exec-but-not-solib"
+set srcmainfile ${testfile}-main.c
+set srclibfile ${testfile}-lib.c
+set libfile [standard_output_file ${testfile}-lib.so]
+set objfile [standard_output_file ${testfile}-main.o]
+set executable ${testfile}-main
+set binfile [standard_output_file ${executable}]
+set gcorefile [standard_output_file ${executable}.gcore]
+set outdir [file dirname $binfile]
+
+if { [gdb_compile_shlib ${srcdir}/${subdir}/${srclibfile} ${libfile} "debug additional_flags=-Wl,--build-id"] != ""
+ || [gdb_compile ${srcdir}/${subdir}/${srcmainfile} ${objfile} object {debug}] != "" } {
+ unsupported "-Wl,--build-id compilation failed"
+ return -1
+}
+set opts [list debug shlib=${libfile} "additional_flags=-Wl,--build-id"]
+if { [gdb_compile ${objfile} ${binfile} executable $opts] != "" } {
+ unsupported "-Wl,--build-id compilation failed"
+ return -1
+}
+
+clean_restart $executable
+gdb_load_shlib $libfile
+
+# Does this gdb support gcore?
+set test "help gcore"
+gdb_test_multiple $test $test {
+ -re "Undefined command: .gcore.*\r\n$gdb_prompt $" {
+ # gcore command not supported -- nothing to test here.
+ unsupported "gdb does not support gcore on this target"
+ return -1;
+ }
+ -re "Save a core file .*\r\n$gdb_prompt $" {
+ pass $test
+ }
+}
+
+if { ![runto lib] } then {
+ return -1
+}
+
+set escapedfilename [string_to_regexp ${gcorefile}]
+
+set test "save a corefile"
+gdb_test_multiple "gcore ${gcorefile}" $test {
+ -re "Saved corefile ${escapedfilename}\r\n$gdb_prompt $" {
+ pass $test
+ }
+ -re "Can't create a corefile\r\n$gdb_prompt $" {
+ unsupported $test
+ return -1
+ }
+}
+
+# Now restart gdb and load the corefile.
+
+clean_restart $executable
+gdb_load_shlib $libfile
+
+set buildid [build_id_debug_filename_get $libfile]
+
+regsub {\.debug$} $buildid {} buildid
+
+set debugdir [standard_output_file ${testfile}-debugdir]
+file delete -force -- $debugdir
+
+file mkdir $debugdir/[file dirname $libfile]
+file copy $libfile $debugdir/${libfile}
+
+file mkdir $debugdir/[file dirname $buildid]
+file copy $libfile $debugdir/${buildid}
+
+remote_exec build "ln -s /lib ${debugdir}/"
+remote_exec build "ln -s /lib64 ${debugdir}/"
+# /usr is not needed, all the libs are in /lib64: libm.so.6 libc.so.6 ld-linux-x86-64.so.2
+
+gdb_test "set solib-absolute-prefix $debugdir"
+
+gdb_test_no_output "set debug-file-directory $debugdir" "set debug-file-directory"
+
+gdb_test "core ${gcorefile}" "Core was generated by .*" "re-load generated corefile"
+
+gdb_test "frame" "#0 \[^\r\n\]* lib .*" "library got loaded"
+
+gdb_test "bt"
+gdb_test "info shared"
--- /dev/null 2016-07-02 20:29:01.679404943 +0200
+++ gdb-7.11.50.20160721/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib-main.c 2016-07-28 21:06:40.977786922 +0200
@@ -0,0 +1,25 @@
+/* Copyright 2010 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+extern void lib (void);
+
+int
+main (void)
+{
+ lib ();
+ return 0;
+}
--- /dev/null 2016-07-02 20:29:01.679404943 +0200
+++ gdb-7.11.50.20160721/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib-lib.c 2016-07-28 21:06:40.977786922 +0200
@@ -0,0 +1,21 @@
+/* Copyright 2010 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+void
+lib (void)
+{
+}

View File

@ -1,7 +1,7 @@
Index: gdb-7.10.90.20160211/gdb/corelow.c
Index: gdb-7.11.50.20160630/gdb/corelow.c
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/corelow.c 2016-02-15 23:25:00.859346221 +0100
+++ gdb-7.10.90.20160211/gdb/corelow.c 2016-02-15 23:26:46.516096395 +0100
--- gdb-7.11.50.20160630.orig/gdb/corelow.c 2016-07-03 14:33:28.130205528 +0200
+++ gdb-7.11.50.20160630/gdb/corelow.c 2016-07-03 14:34:32.022753582 +0200
@@ -45,6 +45,10 @@
#include "gdb_bfd.h"
#include "completer.h"
@ -94,11 +94,11 @@ Index: gdb-7.10.90.20160211/gdb/corelow.c
+ NULL, NULL, NULL,
+ &setlist, &showlist);
}
Index: gdb-7.10.90.20160211/gdb/doc/gdb.texinfo
Index: gdb-7.11.50.20160630/gdb/doc/gdb.texinfo
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/doc/gdb.texinfo 2016-02-15 23:25:36.455598958 +0100
+++ gdb-7.10.90.20160211/gdb/doc/gdb.texinfo 2016-02-15 23:26:06.362811302 +0100
@@ -18684,6 +18684,27 @@
--- gdb-7.11.50.20160630.orig/gdb/doc/gdb.texinfo 2016-07-03 14:33:28.130205528 +0200
+++ gdb-7.11.50.20160630/gdb/doc/gdb.texinfo 2016-07-03 14:34:32.030753651 +0200
@@ -18916,6 +18916,27 @@
@end table
@ -126,10 +126,10 @@ Index: gdb-7.10.90.20160211/gdb/doc/gdb.texinfo
@cindex @code{.gnu_debuglink} sections
@cindex debug link sections
A debug link is a special section of the executable file named
Index: gdb-7.10.90.20160211/gdb/solib-svr4.c
Index: gdb-7.11.50.20160630/gdb/solib-svr4.c
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/solib-svr4.c 2016-02-15 23:25:00.859346221 +0100
+++ gdb-7.10.90.20160211/gdb/solib-svr4.c 2016-02-15 23:26:46.613097083 +0100
--- gdb-7.11.50.20160630.orig/gdb/solib-svr4.c 2016-07-03 14:33:28.130205528 +0200
+++ gdb-7.11.50.20160630/gdb/solib-svr4.c 2016-07-03 14:34:32.031753659 +0200
@@ -45,6 +45,7 @@
#include "auxv.h"
#include "gdb_bfd.h"
@ -194,10 +194,10 @@ Index: gdb-7.10.90.20160211/gdb/solib-svr4.c
xfree (buffer);
/* If this entry has no name, or its name matches the name
Index: gdb-7.10.90.20160211/gdb/elfread.c
Index: gdb-7.11.50.20160630/gdb/elfread.c
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/elfread.c 2016-02-15 23:25:00.859346221 +0100
+++ gdb-7.10.90.20160211/gdb/elfread.c 2016-02-15 23:26:06.364811316 +0100
--- gdb-7.11.50.20160630.orig/gdb/elfread.c 2016-07-03 14:33:28.130205528 +0200
+++ gdb-7.11.50.20160630/gdb/elfread.c 2016-07-03 14:34:32.031753659 +0200
@@ -1259,9 +1259,10 @@
&& objfile->separate_debug_objfile == NULL
&& objfile->separate_debug_objfile_backlink == NULL)
@ -224,11 +224,11 @@ Index: gdb-7.10.90.20160211/gdb/elfread.c
}
}
Index: gdb-7.10.90.20160211/gdb/symfile.h
Index: gdb-7.11.50.20160630/gdb/symfile.h
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/symfile.h 2016-02-15 23:25:00.859346221 +0100
+++ gdb-7.10.90.20160211/gdb/symfile.h 2016-02-15 23:26:46.516096395 +0100
@@ -584,6 +584,10 @@
--- gdb-7.11.50.20160630.orig/gdb/symfile.h 2016-07-03 14:33:28.130205528 +0200
+++ gdb-7.11.50.20160630/gdb/symfile.h 2016-07-03 14:34:32.032753668 +0200
@@ -589,6 +589,10 @@
void map_symbol_filenames (symbol_filename_ftype *fun, void *data,
int need_fullname);
@ -239,11 +239,11 @@ Index: gdb-7.10.90.20160211/gdb/symfile.h
/* From dwarf2read.c */
/* Names for a dwarf2 debugging section. The field NORMAL is the normal
Index: gdb-7.10.90.20160211/gdb/testsuite/lib/gdb.exp
Index: gdb-7.11.50.20160630/gdb/testsuite/lib/gdb.exp
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/testsuite/lib/gdb.exp 2016-02-15 23:25:00.859346221 +0100
+++ gdb-7.10.90.20160211/gdb/testsuite/lib/gdb.exp 2016-02-15 23:26:46.516096395 +0100
@@ -1640,6 +1640,16 @@
--- gdb-7.11.50.20160630.orig/gdb/testsuite/lib/gdb.exp 2016-07-03 14:33:28.130205528 +0200
+++ gdb-7.11.50.20160630/gdb/testsuite/lib/gdb.exp 2016-07-03 14:34:32.033753676 +0200
@@ -1641,6 +1641,16 @@
warning "Couldn't set the width to 0."
}
}
@ -260,11 +260,11 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/lib/gdb.exp
return 0
}
Index: gdb-7.10.90.20160211/gdb/testsuite/lib/mi-support.exp
Index: gdb-7.11.50.20160630/gdb/testsuite/lib/mi-support.exp
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/testsuite/lib/mi-support.exp 2016-02-15 23:25:00.859346221 +0100
+++ gdb-7.10.90.20160211/gdb/testsuite/lib/mi-support.exp 2016-02-15 23:26:46.516096395 +0100
@@ -204,6 +204,16 @@
--- gdb-7.11.50.20160630.orig/gdb/testsuite/lib/mi-support.exp 2016-07-03 14:33:28.130205528 +0200
+++ gdb-7.11.50.20160630/gdb/testsuite/lib/mi-support.exp 2016-07-03 14:34:32.033753676 +0200
@@ -309,6 +309,16 @@ proc default_mi_gdb_start { args } {
warning "Couldn't set the width to 0."
}
}
@ -279,12 +279,22 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/lib/mi-support.exp
+ }
+ }
# Create the new PTY for the inferior process.
if { $separate_inferior_pty } {
Index: gdb-7.10.90.20160211/gdb/objfiles.h
mi_create_inferior_pty
--- gdb-7.11.90.20160907/gdb/testsuite/gdb.base/new-ui-pending-input.exp-orig 2016-09-07 04:01:15.000000000 +0200
+++ gdb-7.11.90.20160907/gdb/testsuite/gdb.base/new-ui-pending-input.exp 2016-09-07 22:35:35.818534069 +0200
@@ -62,6 +62,7 @@ proc test_command_line_new_ui_pending_in
set options ""
append options " -iex \"set height 0\""
append options " -iex \"set width 0\""
+ append options " -iex \"set build-id-verbose 0\""
append options " -iex \"new-ui console $extra_tty_name\""
append options " -ex \"b $bpline\""
append options " -ex \"run\""
Index: gdb-7.11.50.20160630/gdb/objfiles.h
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/objfiles.h 2016-02-15 23:25:00.859346221 +0100
+++ gdb-7.10.90.20160211/gdb/objfiles.h 2016-02-15 23:26:06.366811330 +0100
--- gdb-7.11.50.20160630.orig/gdb/objfiles.h 2016-07-03 14:33:28.130205528 +0200
+++ gdb-7.11.50.20160630/gdb/objfiles.h 2016-07-03 14:34:32.034753685 +0200
@@ -489,6 +489,10 @@
#define OBJF_NOT_FILENAME (1 << 6)
@ -296,10 +306,10 @@ Index: gdb-7.10.90.20160211/gdb/objfiles.h
/* Declarations for functions defined in objfiles.c */
extern struct objfile *allocate_objfile (bfd *, const char *name, int);
Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/corefile.exp
Index: gdb-7.11.50.20160630/gdb/testsuite/gdb.base/corefile.exp
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/testsuite/gdb.base/corefile.exp 2016-02-15 23:25:00.859346221 +0100
+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.base/corefile.exp 2016-02-15 23:26:55.178157896 +0100
--- gdb-7.11.50.20160630.orig/gdb/testsuite/gdb.base/corefile.exp 2016-07-03 14:33:28.130205528 +0200
+++ gdb-7.11.50.20160630/gdb/testsuite/gdb.base/corefile.exp 2016-07-03 14:34:32.034753685 +0200
@@ -293,3 +293,33 @@
pass $test
}
@ -334,10 +344,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/corefile.exp
+ gdb_test "info files" "Local exec file:\r\n\[ \t\]*`[string_to_regexp $debugdir/$buildid]', file type .*"
+ pass $wholetest
+}
Index: gdb-7.10.90.20160211/gdb/build-id.c
Index: gdb-7.11.50.20160630/gdb/build-id.c
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/build-id.c 2016-02-15 23:25:00.859346221 +0100
+++ gdb-7.10.90.20160211/gdb/build-id.c 2016-02-15 23:26:46.516096395 +0100
--- gdb-7.11.50.20160630.orig/gdb/build-id.c 2016-07-03 14:33:28.130205528 +0200
+++ gdb-7.11.50.20160630/gdb/build-id.c 2016-07-03 14:36:50.124938187 +0200
@@ -26,11 +26,67 @@
#include "objfiles.h"
#include "filenames.h"
@ -385,10 +395,10 @@ Index: gdb-7.10.90.20160211/gdb/build-id.c
+ && memcmp (xnp->name, "GNU", sizeof "GNU") == 0)
+ {
+ size_t size = descsz;
+ gdb_byte *data = (void *) descdata;
+ gdb_byte *data = (gdb_byte *) descdata;
+ struct bfd_build_id *retval;
+
+ retval = xmalloc (sizeof *retval - 1 + size);
+ retval = (struct bfd_build_id *) xmalloc (sizeof *retval - 1 + size);
+ retval->size = size;
+ memcpy (retval->data, data, size);
+
@ -429,7 +439,7 @@ Index: gdb-7.10.90.20160211/gdb/build-id.c
+ gdb_byte *buf;
+ int err;
+
+ buf = xmalloc (hdr->p_filesz);
+ buf = (gdb_byte *) xmalloc (hdr->p_filesz);
+ err = target_read_memory (loadbase + i_phdr[i].p_vaddr, buf,
+ hdr->p_filesz);
+ if (err == 0)
@ -633,8 +643,8 @@ Index: gdb-7.10.90.20160211/gdb/build-id.c
+ x_phdrs_size = (bfd_get_arch_size (templ) == 64 ? sizeof (Elf64_External_Phdr)
+ : sizeof (Elf32_External_Phdr));
+
+ i_phdrs = xmalloc (i_ehdr.e_phnum * (sizeof *i_phdrs + x_phdrs_size));
+ x_phdrs_ptr = (void *) &i_phdrs[i_ehdr.e_phnum];
+ i_phdrs = (Elf_Internal_Phdr *) xmalloc (i_ehdr.e_phnum * (sizeof *i_phdrs + x_phdrs_size));
+ x_phdrs_ptr = (gdb_byte *) &i_phdrs[i_ehdr.e_phnum];
+ err = target_read_memory (ehdr_vma + i_ehdr.e_phoff, (bfd_byte *) x_phdrs_ptr,
+ i_ehdr.e_phnum * x_phdrs_size);
+ if (err)
@ -700,7 +710,7 @@ Index: gdb-7.10.90.20160211/gdb/build-id.c
+ {
+ struct build_id_addr_sect *candidate;
+
+ candidate = xmalloc (sizeof *candidate);
+ candidate = (struct build_id_addr_sect *) xmalloc (sizeof *candidate);
+ candidate->next = build_id_addr_sect;
+ build_id_addr_sect = candidate;
+ candidate->sect = sect;
@ -825,7 +835,7 @@ Index: gdb-7.10.90.20160211/gdb/build-id.c
- + (sizeof "/.build-id/" - 1) + 1
- + 2 * build_id_len + (sizeof ".debug" - 1) + 1);
- link = (char *) alloca (alloc_len);
+ link = xmalloc (strlen (debug_file_directory) + 2 * build_id_len + 50);
+ link = (char *) xmalloc (strlen (debug_file_directory) + 2 * build_id_len + 50);
/* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
cause "/.build-id/..." lookups. */
@ -937,7 +947,7 @@ Index: gdb-7.10.90.20160211/gdb/build-id.c
+ {
+ size_t len_orig = strlen (link_all);
+
+ link_all = xrealloc (link_all,
+ link_all = (char *) xrealloc (link_all,
+ len_orig + 1 + strlen (link0_resolved) + 1);
+
+ /* Use whitespace instead of DIRNAME_SEPARATOR to be compatible with
@ -1095,7 +1105,7 @@ Index: gdb-7.10.90.20160211/gdb/build-id.c
+ if (*slot != NULL)
+ return;
+
+ missing_filepair = obstack_alloc (&missing_filepair_obstack,
+ missing_filepair = (struct missing_filepair *) obstack_alloc (&missing_filepair_obstack,
+ sizeof (*missing_filepair) - 1
+ + binary_len0 + debug_len0);
+ missing_filepair->binary = missing_filepair->data;
@ -1166,10 +1176,10 @@ Index: gdb-7.10.90.20160211/gdb/build-id.c
+
+ observer_attach_executable_changed (debug_print_executable_changed);
+}
Index: gdb-7.10.90.20160211/gdb/build-id.h
Index: gdb-7.11.50.20160630/gdb/build-id.h
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/build-id.h 2016-02-15 23:25:00.859346221 +0100
+++ gdb-7.10.90.20160211/gdb/build-id.h 2016-02-15 23:26:06.368811345 +0100
--- gdb-7.11.50.20160630.orig/gdb/build-id.h 2016-07-03 14:33:28.130205528 +0200
+++ gdb-7.11.50.20160630/gdb/build-id.h 2016-07-03 14:34:32.035753694 +0200
@@ -20,9 +20,10 @@
#ifndef BUILD_ID_H
#define BUILD_ID_H
@ -1204,11 +1214,11 @@ Index: gdb-7.10.90.20160211/gdb/build-id.h
+ char **build_id_filename_return);
#endif /* BUILD_ID_H */
Index: gdb-7.10.90.20160211/gdb/dwarf2read.c
Index: gdb-7.11.50.20160630/gdb/dwarf2read.c
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/dwarf2read.c 2016-02-15 23:25:36.461599001 +0100
+++ gdb-7.10.90.20160211/gdb/dwarf2read.c 2016-02-15 23:26:06.373811380 +0100
@@ -2516,7 +2516,7 @@
--- gdb-7.11.50.20160630.orig/gdb/dwarf2read.c 2016-07-03 14:33:28.130205528 +0200
+++ gdb-7.11.50.20160630/gdb/dwarf2read.c 2016-07-03 14:34:32.040753736 +0200
@@ -2535,7 +2535,7 @@
}
if (dwz_bfd == NULL)
@ -1217,11 +1227,11 @@ Index: gdb-7.10.90.20160211/gdb/dwarf2read.c
if (dwz_bfd == NULL)
error (_("could not find '.gnu_debugaltlink' file for %s"),
Index: gdb-7.10.90.20160211/gdb/python/py-objfile.c
Index: gdb-7.11.50.20160630/gdb/python/py-objfile.c
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/python/py-objfile.c 2016-02-15 23:25:00.859346221 +0100
+++ gdb-7.10.90.20160211/gdb/python/py-objfile.c 2016-02-15 23:26:06.373811380 +0100
@@ -139,7 +139,7 @@
--- gdb-7.11.50.20160630.orig/gdb/python/py-objfile.c 2016-07-03 14:33:28.130205528 +0200
+++ gdb-7.11.50.20160630/gdb/python/py-objfile.c 2016-07-03 14:34:32.040753736 +0200
@@ -136,7 +136,7 @@
TRY
{
@ -1230,7 +1240,7 @@ Index: gdb-7.10.90.20160211/gdb/python/py-objfile.c
}
CATCH (except, RETURN_MASK_ALL)
{
@@ -548,7 +548,7 @@
@@ -547,7 +547,7 @@
/* Don't return separate debug files. */
if (objfile->separate_debug_objfile_backlink != NULL)
continue;
@ -1239,11 +1249,11 @@ Index: gdb-7.10.90.20160211/gdb/python/py-objfile.c
if (obfd_build_id == NULL)
continue;
if (objfpy_build_id_matches (obfd_build_id, build_id))
Index: gdb-7.10.90.20160211/gdb/coffread.c
Index: gdb-7.11.50.20160630/gdb/coffread.c
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/coffread.c 2016-02-15 23:25:00.859346221 +0100
+++ gdb-7.10.90.20160211/gdb/coffread.c 2016-02-15 23:26:06.374811387 +0100
@@ -739,7 +739,7 @@
--- gdb-7.11.50.20160630.orig/gdb/coffread.c 2016-07-03 14:33:28.130205528 +0200
+++ gdb-7.11.50.20160630/gdb/coffread.c 2016-07-03 14:34:32.041753745 +0200
@@ -737,7 +737,7 @@
{
char *debugfile;

View File

@ -35,7 +35,7 @@ Index: gdb-7.5.50.20130215/gdb/testsuite/gdb.arch/powerpc-power6.exp
+
+set testfile "powerpc-power6"
+set srcfile ${testfile}.s
+set objfile ${objdir}/${subdir}/${testfile}.o
+set objfile [standard_output_file ${testfile}.o]
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } {
+ untested "PowerPC prologue tests"

View File

@ -1,8 +1,8 @@
Index: gdb-7.10.50.20151022/gdb/infrun.c
Index: gdb-7.11.90.20160904/gdb/infrun.c
===================================================================
--- gdb-7.10.50.20151022.orig/gdb/infrun.c 2015-10-22 22:30:15.887224452 +0200
+++ gdb-7.10.50.20151022/gdb/infrun.c 2015-10-22 22:30:25.742282478 +0200
@@ -2175,7 +2175,7 @@ static const char *const scheduler_enums
--- gdb-7.11.90.20160904.orig/gdb/infrun.c 2016-09-04 17:57:12.733853848 +0200
+++ gdb-7.11.90.20160904/gdb/infrun.c 2016-09-04 17:57:45.568145391 +0200
@@ -2218,7 +2218,7 @@
schedlock_replay,
NULL
};
@ -11,11 +11,11 @@ Index: gdb-7.10.50.20151022/gdb/infrun.c
static void
show_scheduler_mode (struct ui_file *file, int from_tty,
struct cmd_list_element *c, const char *value)
Index: gdb-7.10.50.20151022/gdb/testsuite/gdb.mi/mi-cli.exp
Index: gdb-7.11.90.20160904/gdb/testsuite/gdb.mi/mi-cli.exp
===================================================================
--- gdb-7.10.50.20151022.orig/gdb/testsuite/gdb.mi/mi-cli.exp 2015-10-22 22:29:38.352003447 +0200
+++ gdb-7.10.50.20151022/gdb/testsuite/gdb.mi/mi-cli.exp 2015-10-22 22:30:15.888224458 +0200
@@ -199,7 +199,7 @@ mi_expect_stop "breakpoint-hit" "main" "
--- gdb-7.11.90.20160904.orig/gdb/testsuite/gdb.mi/mi-cli.exp 2016-09-04 17:57:12.733853848 +0200
+++ gdb-7.11.90.20160904/gdb/testsuite/gdb.mi/mi-cli.exp 2016-09-04 17:57:45.569145399 +0200
@@ -199,7 +199,7 @@
# Test that the token is output even for CLI commands
# Also test that *stopped includes frame information.
mi_gdb_test "34 next" \
@ -24,11 +24,11 @@ Index: gdb-7.10.50.20151022/gdb/testsuite/gdb.mi/mi-cli.exp
"34 next: run"
# Test that the new current source line is output to the console
Index: gdb-7.10.50.20151022/gdb/testsuite/gdb.mi/mi-logging.exp
Index: gdb-7.11.90.20160904/gdb/testsuite/gdb.mi/mi-logging.exp
===================================================================
--- gdb-7.10.50.20151022.orig/gdb/testsuite/gdb.mi/mi-logging.exp 2015-10-22 22:29:38.352003447 +0200
+++ gdb-7.10.50.20151022/gdb/testsuite/gdb.mi/mi-logging.exp 2015-10-22 22:30:15.888224458 +0200
@@ -53,7 +53,7 @@ close $chan
--- gdb-7.11.90.20160904.orig/gdb/testsuite/gdb.mi/mi-logging.exp 2016-09-04 17:57:12.733853848 +0200
+++ gdb-7.11.90.20160904/gdb/testsuite/gdb.mi/mi-logging.exp 2016-09-04 17:57:45.569145399 +0200
@@ -53,7 +53,7 @@
set mi_log_prompt "\[(\]gdb\[)\] \[\r\n\]+"
@ -37,7 +37,7 @@ Index: gdb-7.10.50.20151022/gdb/testsuite/gdb.mi/mi-logging.exp
pass "Log file contents"
} else {
fail "Log file contents"
@@ -76,7 +76,7 @@ set chan [open $milogfile]
@@ -76,7 +76,7 @@
set logcontent [read $chan]
close $chan
@ -46,11 +46,11 @@ Index: gdb-7.10.50.20151022/gdb/testsuite/gdb.mi/mi-logging.exp
pass "Redirect log file contents"
} else {
fail "Redirect log file contents"
Index: gdb-7.10.50.20151022/gdb/testsuite/gdb.mi/mi-console.exp
Index: gdb-7.11.90.20160904/gdb/testsuite/gdb.mi/mi-console.exp
===================================================================
--- gdb-7.10.50.20151022.orig/gdb/testsuite/gdb.mi/mi-console.exp 2015-10-22 22:29:38.353003453 +0200
+++ gdb-7.10.50.20151022/gdb/testsuite/gdb.mi/mi-console.exp 2015-10-22 22:30:15.888224458 +0200
@@ -60,6 +60,9 @@ if { [gdb_compile "${srcdir}/${subdir}/
--- gdb-7.11.90.20160904.orig/gdb/testsuite/gdb.mi/mi-console.exp 2016-09-04 17:57:12.733853848 +0200
+++ gdb-7.11.90.20160904/gdb/testsuite/gdb.mi/mi-console.exp 2016-09-04 17:57:45.569145399 +0200
@@ -60,6 +60,9 @@
mi_run_to_main
@ -60,3 +60,16 @@ Index: gdb-7.10.50.20151022/gdb/testsuite/gdb.mi/mi-console.exp
# The output we get from the target depends on how it is hosted. If
# we are semihosted (e.g., the sim or a remote target that supports
# the File I/O remote protocol extension), we see the target I/O
Index: gdb-7.11.90.20160904/gdb/testsuite/gdb.opt/inline-cmds.exp
===================================================================
--- gdb-7.11.90.20160904.orig/gdb/testsuite/gdb.opt/inline-cmds.exp 2016-09-04 17:59:44.600202299 +0200
+++ gdb-7.11.90.20160904/gdb/testsuite/gdb.opt/inline-cmds.exp 2016-09-04 18:00:04.616380027 +0200
@@ -331,7 +331,7 @@
send_gdb "interpreter-exec console \"step\"\n"
gdb_expect {
- -re "\\^running\r\n\\*running,thread-id=\"all\"\r\n${mi_gdb_prompt}${cli_output_re}" {
+ -re "\\^running\r\n\\*running,thread-id=\"1\"\r\n${mi_gdb_prompt}${cli_output_re}" {
pass $message
}
timeout {

View File

@ -68,7 +68,7 @@ http://sourceware.org/ml/gdb-patches/2007-09/msg00228.html
+
+set testfile "ppc-clobbered-registers-O2"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+set binfile [standard_output_file ${testfile}]
+set compile_flags "debug additional_flags=-O2"
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable ${compile_flags}] != "" } {

View File

@ -0,0 +1,101 @@
gdb/testsuite/gdb.base/fileio.c:
gdb/testsuite/gdb.base/fileio.exp:
2007-12-08 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.base/fileio.c (ROOTSUBDIR): New macro.
(main): CHDIR into ROOTSUBDIR. CHOWN ROOTSUBDIR and CHDIR into
ROOTSUBDIR if we are being run as root.
* gdb.base/fileio.exp: Change the startup and finish cleanup.
Change the test file reference to be into the `fileio.dir' directory.
sources/gdb/testsuite/gdb.base/dump.exp:
Found on RHEL-5.s390x.
gdb-6.8.50.20090209/gdb/testsuite/gdb.base/auxv.exp:
random FAIL: gdb.base/auxv.exp: matching auxv data from live and gcore
gdb-6.8.50.20090209/gdb/testsuite/gdb.base/annota1.exp:
frames-invalid can happen asynchronously.
Index: gdb-7.12/gdb/testsuite/gdb.base/fileio.c
===================================================================
--- gdb-7.12.orig/gdb/testsuite/gdb.base/fileio.c 2016-08-01 17:50:21.000000000 +0200
+++ gdb-7.12/gdb/testsuite/gdb.base/fileio.c 2016-10-07 22:49:20.689346914 +0200
@@ -556,6 +556,28 @@
int
main ()
{
+ /* These tests
+ Open for write but no write permission returns EACCES
+ Unlinking a file in a directory w/o write access returns EACCES
+ fail if we are being run as root - drop the privileges here. */
+
+ if (geteuid () == 0)
+ {
+ uid_t uid = 99;
+
+ if (chown (OUTDIR, uid, uid) != 0)
+ {
+ printf ("chown %d.%d %s: %s\n", (int) uid, (int) uid,
+ OUTDIR, strerror (errno));
+ exit (1);
+ }
+ if (setuid (uid) || geteuid () == 0)
+ {
+ printf ("setuid %d: %s\n", (int) uid, strerror (errno));
+ exit (1);
+ }
+ }
+
/* Don't change the order of the calls. They partly depend on each other */
test_open ();
test_write ();
Index: gdb-7.12/gdb/testsuite/gdb.base/fileio.exp
===================================================================
--- gdb-7.12.orig/gdb/testsuite/gdb.base/fileio.exp 2016-08-01 17:50:21.000000000 +0200
+++ gdb-7.12/gdb/testsuite/gdb.base/fileio.exp 2016-10-07 22:54:44.680071906 +0200
@@ -24,9 +24,9 @@
standard_testfile
if {[is_remote host]} {
- set outdir .
+ set outdir "fileio.dir"
} else {
- set outdir [standard_output_file {}]
+ set outdir [standard_output_file "fileio.dir"]
}
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
@@ -47,7 +47,8 @@
if {[file exists $dir2] && ![file writable $dir2]} {
system "chmod +w $dir2"
}
-system "rm -rf [standard_output_file *.fileio.test]"
+system "rm -rf [standard_output_file fileio.dir]"
+system "mkdir -m777 [standard_output_file fileio.dir]"
set oldtimeout $timeout
set timeout [expr "$timeout + 60"]
@@ -89,7 +90,7 @@
gdb_test "continue" ".*" ""
-catch "system \"chmod -f -w [standard_output_file nowrt.fileio.test]\""
+catch "system \"chmod -f -w [standard_output_file fileio.dir/nowrt.fileio.test]\""
gdb_test continue \
"Continuing\\..*open 5:.*EACCES$stop_msg" \
@@ -276,9 +277,7 @@
gdb_exit
# Make dir2 writable again so rm -rf of a build tree Just Works.
-if {[file exists $dir2] && ![file writable $dir2]} {
- system "chmod +w $dir2"
-}
+system "chmod -R +w $outdir"
set timeout $oldtimeout
return 0

View File

@ -1,7 +1,8 @@
diff -dup -rup gdb-7.10.50.20160106-orig/gdb/infrun.c gdb-7.10.50.20160106/gdb/infrun.c
--- gdb-7.10.50.20160106-orig/gdb/infrun.c 2016-01-09 15:05:06.127481758 +0100
+++ gdb-7.10.50.20160106/gdb/infrun.c 2016-01-09 15:05:24.054593048 +0100
@@ -626,6 +626,13 @@ holding the child stopped. Try \"set de
Index: gdb-7.11.50.20160716/gdb/infrun.c
===================================================================
--- gdb-7.11.50.20160716.orig/gdb/infrun.c 2016-07-16 14:37:09.317178150 +0200
+++ gdb-7.11.50.20160716/gdb/infrun.c 2016-07-16 14:37:10.636188765 +0200
@@ -620,6 +620,13 @@
target_pid_to_str (process_ptid));
}
@ -15,10 +16,11 @@ diff -dup -rup gdb-7.10.50.20160106-orig/gdb/infrun.c gdb-7.10.50.20160106/gdb/i
target_detach (NULL, 0);
}
diff -dup -rup gdb-7.10.50.20160106-orig/gdb/linux-nat.c gdb-7.10.50.20160106/gdb/linux-nat.c
--- gdb-7.10.50.20160106-orig/gdb/linux-nat.c 2016-01-09 15:05:06.225482366 +0100
+++ gdb-7.10.50.20160106/gdb/linux-nat.c 2016-01-09 15:05:24.050593023 +0100
@@ -194,6 +194,11 @@ enum tribool have_ptrace_getregset = TRI
Index: gdb-7.11.50.20160716/gdb/linux-nat.c
===================================================================
--- gdb-7.11.50.20160716.orig/gdb/linux-nat.c 2016-07-16 14:37:09.320178174 +0200
+++ gdb-7.11.50.20160716/gdb/linux-nat.c 2016-07-16 14:38:09.574663094 +0200
@@ -194,6 +194,11 @@
static struct target_ops *linux_ops;
static struct target_ops linux_ops_saved;
@ -30,7 +32,7 @@ diff -dup -rup gdb-7.10.50.20160106-orig/gdb/linux-nat.c gdb-7.10.50.20160106/gd
/* The method to call, if any, when a new thread is attached. */
static void (*linux_nat_new_thread) (struct lwp_info *);
@@ -961,6 +966,9 @@ linux_nat_post_attach_wait (ptid_t ptid,
@@ -1047,6 +1052,9 @@
if (debug_linux_nat)
fprintf_unfiltered (gdb_stdlog,
"LNPAW: Attaching to a stopped process\n");
@ -40,8 +42,8 @@ diff -dup -rup gdb-7.10.50.20160106-orig/gdb/linux-nat.c gdb-7.10.50.20160106/gd
/* The process is definitely stopped. It is in a job control
stop, unless the kernel predates the TASK_STOPPED /
@@ -1303,6 +1311,25 @@ get_pending_status (struct lwp_info *lp,
gdb_signal_to_string (signo));
@@ -1404,6 +1412,25 @@
return gdb_signal_to_host (signo);
}
+#ifdef NEED_DETACH_SIGSTOP
@ -66,18 +68,18 @@ diff -dup -rup gdb-7.10.50.20160106-orig/gdb/linux-nat.c gdb-7.10.50.20160106/gd
return 0;
}
@@ -1416,6 +1443,10 @@ linux_nat_detach (struct target_ops *ops
}
else
linux_ops->to_detach (ops, args, from_tty);
+#ifdef NEED_DETACH_SIGSTOP
@@ -1562,6 +1589,10 @@
detach_one_lwp (main_lwp, &signo);
inf_ptrace_detach_success (ops);
+
+#ifdef NEED_DETACH_SIGSTOP
+ pid_was_stopped = 0;
+#endif
}
/* Resume execution of the inferior process. If STEP is nonzero,
@@ -1674,6 +1705,16 @@ linux_nat_resume (struct target_ops *ops
delete_lwp (main_lwp->ptid);
}
@@ -1823,6 +1854,16 @@
return;
}
@ -94,7 +96,7 @@ diff -dup -rup gdb-7.10.50.20160106-orig/gdb/linux-nat.c gdb-7.10.50.20160106/gd
if (resume_many)
iterate_over_lwps (ptid, linux_nat_resume_callback, lp);
@@ -3618,6 +3659,10 @@ linux_nat_mourn_inferior (struct target_
@@ -3819,6 +3860,10 @@
/* Let the arch-specific native code know this process is gone. */
linux_nat_forget_process (pid);
@ -105,10 +107,11 @@ diff -dup -rup gdb-7.10.50.20160106-orig/gdb/linux-nat.c gdb-7.10.50.20160106/gd
}
/* Convert a native/host siginfo object, into/from the siginfo in the
diff -dup -rup gdb-7.10.50.20160106-orig/gdb/testsuite/gdb.threads/attach-stopped.exp gdb-7.10.50.20160106/gdb/testsuite/gdb.threads/attach-stopped.exp
--- gdb-7.10.50.20160106-orig/gdb/testsuite/gdb.threads/attach-stopped.exp 2016-01-06 02:48:38.000000000 +0100
+++ gdb-7.10.50.20160106/gdb/testsuite/gdb.threads/attach-stopped.exp 2016-01-09 15:05:48.917747101 +0100
@@ -56,7 +56,65 @@ proc corefunc { threadtype } {
Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.threads/attach-stopped.exp
===================================================================
--- gdb-7.11.50.20160716.orig/gdb/testsuite/gdb.threads/attach-stopped.exp 2016-07-16 14:37:09.321178182 +0200
+++ gdb-7.11.50.20160716/gdb/testsuite/gdb.threads/attach-stopped.exp 2016-07-16 14:37:10.640188797 +0200
@@ -56,7 +56,65 @@
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}

View File

@ -5,38 +5,42 @@ Some of the threads may not be properly PTRACE_DETACHed which hurts if they
should have been detached with SIGSTOP (as they are accidentally left running
on the debugger termination).
diff -dup -rup gdb-7.10.50.20160106-orig/gdb/defs.h gdb-7.10.50.20160106/gdb/defs.h
--- gdb-7.10.50.20160106-orig/gdb/defs.h 2016-01-09 15:06:57.658172875 +0100
+++ gdb-7.10.50.20160106/gdb/defs.h 2016-01-09 15:07:12.431264378 +0100
@@ -145,6 +145,9 @@ extern void set_quit_flag (void);
Index: gdb-7.11.50.20160630/gdb/defs.h
===================================================================
--- gdb-7.11.50.20160630.orig/gdb/defs.h 2016-07-03 16:40:43.423078926 +0200
+++ gdb-7.11.50.20160630/gdb/defs.h 2016-07-03 16:41:08.568271741 +0200
@@ -175,6 +175,10 @@
/* Flag that function quit should call quit_force. */
extern volatile int sync_quit_force_run;
+#ifdef NEED_DETACH_SIGSTOP
+extern int quit_flag_cleanup;
+#endif
extern int immediate_quit;
+
extern void quit (void);
diff -dup -rup gdb-7.10.50.20160106-orig/gdb/extension.c gdb-7.10.50.20160106/gdb/extension.c
--- gdb-7.10.50.20160106-orig/gdb/extension.c 2016-01-06 02:48:37.000000000 +0100
+++ gdb-7.10.50.20160106/gdb/extension.c 2016-01-09 15:07:12.434264396 +0100
@@ -833,6 +833,11 @@ check_quit_flag (void)
/* Helper for the QUIT macro. */
Index: gdb-7.11.50.20160630/gdb/extension.c
===================================================================
--- gdb-7.11.50.20160630.orig/gdb/extension.c 2016-07-03 16:40:41.723065890 +0200
+++ gdb-7.11.50.20160630/gdb/extension.c 2016-07-03 16:41:44.896550309 +0200
@@ -830,6 +830,11 @@
int i, result = 0;
const struct extension_language_defn *extlang;
+#ifdef NEED_DETACH_SIGSTOP
+ if (quit_flag_cleanup)
+ return 0;
+
+#endif
+
ALL_ENABLED_EXTENSION_LANGUAGES (i, extlang)
{
if (extlang->ops->check_quit_flag != NULL)
diff -dup -rup gdb-7.10.50.20160106-orig/gdb/top.c gdb-7.10.50.20160106/gdb/top.c
--- gdb-7.10.50.20160106-orig/gdb/top.c 2016-01-06 02:48:38.000000000 +0100
+++ gdb-7.10.50.20160106/gdb/top.c 2016-01-09 15:07:12.432264384 +0100
@@ -1557,7 +1557,13 @@ quit_force (char *args, int from_tty)
Index: gdb-7.11.50.20160630/gdb/top.c
===================================================================
--- gdb-7.11.50.20160630.orig/gdb/top.c 2016-07-03 16:40:41.724065898 +0200
+++ gdb-7.11.50.20160630/gdb/top.c 2016-07-03 16:40:43.424078934 +0200
@@ -1617,7 +1617,13 @@
qt.args = args;
qt.from_tty = from_tty;
@ -50,20 +54,21 @@ diff -dup -rup gdb-7.10.50.20160106-orig/gdb/top.c gdb-7.10.50.20160106/gdb/top.
/* Get out of tfind mode, and kill or detach all inferiors. */
TRY
diff -dup -rup gdb-7.10.50.20160106-orig/gdb/utils.c gdb-7.10.50.20160106/gdb/utils.c
--- gdb-7.10.50.20160106-orig/gdb/utils.c 2016-01-09 15:06:57.654172850 +0100
+++ gdb-7.10.50.20160106/gdb/utils.c 2016-01-09 15:07:12.433264390 +0100
@@ -122,6 +122,13 @@ int job_control;
Index: gdb-7.11.50.20160630/gdb/utils.c
===================================================================
--- gdb-7.11.50.20160630.orig/gdb/utils.c 2016-07-03 16:40:41.725065905 +0200
+++ gdb-7.11.50.20160630/gdb/utils.c 2016-07-03 16:41:38.961504799 +0200
@@ -109,6 +109,13 @@
int immediate_quit;
int job_control;
+#ifdef NEED_DETACH_SIGSTOP
+/* Nonzero means we are already processing the quitting cleanups and we should
+ no longer get aborted. */
+
+int quit_flag_cleanup;
+
+#endif
+
/* Nonzero means that strings with character values >0x7F should be printed
as octal escapes. Zero means just print the value (e.g. it's an
international character, and the terminal or window can cope.) */

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:52497db17119a21d59bc62ac5f1138b8061990f97fee6138c4e8b4d7104e67e0
size 27307242

3
gdb-7.12.1.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fc284fa344bd7d3440da19fd8660b4e9e524dea32abea0bddbf4e2225845140e
size 27786483

View File

@ -1,65 +0,0 @@
From: Andrew Pinski <apinski@cavium.com>
Date: Sat, 23 Jul 2016 16:56:44 +0000 (-0700)
Subject: Fix ARMv8.1/v8.2 for hw watchpoint and breakpoint
X-Git-Url: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff_plain;h=49ecef2a7da2ee9df4ae675f99b70518fbf1bb23
Fix ARMv8.1/v8.2 for hw watchpoint and breakpoint
The problem here is ARMv8.1 (and ARMv8.2) define a
different debug version than ARMv8 (7 and 8 respectively).
This fixes hw watchpoints and breakpoints by checking
for those debug versions too.
Committed as obvious after a test on aarch64-linux-gnu
(on a ThunderX machine which has ARMv8.1 support enabled).
ChangeLog:
* nat/aarch64-linux-hw-point.c
(aarch64_linux_get_debug_reg_capacity): Handle
ARMv8.1 and ARMv8.2 debug versions.
* nat/aarch64-linux-hw-point.h
(AARCH64_DEBUG_ARCH_V8_1): New define.
(AARCH64_DEBUG_ARCH_V8_2): New define.
Signed-off-by: Andrew Pinski <apinski@cavium.com>
---
diff --git a/gdb/nat/aarch64-linux-hw-point.c b/gdb/nat/aarch64-linux-hw-point.c
index a06a6e6..f9e04d9 100644
--- a/gdb/nat/aarch64-linux-hw-point.c
+++ b/gdb/nat/aarch64-linux-hw-point.c
@@ -630,7 +630,9 @@ aarch64_linux_get_debug_reg_capacity (int tid)
/* Get hardware watchpoint register info. */
if (ptrace (PTRACE_GETREGSET, tid, NT_ARM_HW_WATCH, &iov) == 0
- && AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8)
+ && (AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8
+ || AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8_1
+ || AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8_2))
{
aarch64_num_wp_regs = AARCH64_DEBUG_NUM_SLOTS (dreg_state.dbg_info);
if (aarch64_num_wp_regs > AARCH64_HWP_MAX_NUM)
@@ -650,7 +652,9 @@ aarch64_linux_get_debug_reg_capacity (int tid)
/* Get hardware breakpoint register info. */
if (ptrace (PTRACE_GETREGSET, tid, NT_ARM_HW_BREAK, &iov) == 0
- && AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8)
+ && (AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8
+ || AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8_1
+ || AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8_2))
{
aarch64_num_bp_regs = AARCH64_DEBUG_NUM_SLOTS (dreg_state.dbg_info);
if (aarch64_num_bp_regs > AARCH64_HBP_MAX_NUM)
diff --git a/gdb/nat/aarch64-linux-hw-point.h b/gdb/nat/aarch64-linux-hw-point.h
index acf0a49..16efb7c 100644
--- a/gdb/nat/aarch64-linux-hw-point.h
+++ b/gdb/nat/aarch64-linux-hw-point.h
@@ -68,6 +68,8 @@
/* Macro for the expected version of the ARMv8-A debug architecture. */
#define AARCH64_DEBUG_ARCH_V8 0x6
+#define AARCH64_DEBUG_ARCH_V8_1 0x7
+#define AARCH64_DEBUG_ARCH_V8_2 0x8
/* ptrace expects control registers to be formatted as follows:

69
gdb-add-index-chmod.patch Normal file
View File

@ -0,0 +1,69 @@
http://sourceware.org/ml/gdb-patches/2017-01/msg00110.html
Subject: [patch] contrib/gdb-add-index.sh: chmod u+w
--AhhlLboLdkugWU4S
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Hi,
in Fedora 24 it still worked, in Fedora 25 it does not - *-debuginfo.rpm
no longer have the .gdb_index accelerating section now.
It happens because:
objcopy: unable to copy file 'foo.debug'; reason: Permission denied
*.debug files in Fedora were always 444 but the time gdb-add-index is run is
still before the *.debug split and in Fedora 24 the files were -rwxr-xr-x
that time while in Fedora 25 they are apparently no longer w.
OK for check-in?
Jan
--AhhlLboLdkugWU4S
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline; filename=1
gdb/ChangeLog
2017-01-06 Jan Kratochvil <jan.kratochvil@redhat.com>
* contrib/gdb-add-index.sh: Use chmod u+w for $file.
diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh
index 0cd4ce3..5a190a0 100755
--- a/gdb/contrib/gdb-add-index.sh
+++ b/gdb/contrib/gdb-add-index.sh
@@ -38,10 +38,11 @@ fi
dir="${file%/*}"
test "$dir" = "$file" && dir="."
index="${file}.gdb-index"
+mode="${file}.mode"
-rm -f $index
+rm -f $index $mode
# Ensure intermediate index file is removed when we exit.
-trap "rm -f $index" 0
+trap "rm -f $index $mode" 0
$GDB --batch -nx -iex 'set auto-load no' \
-ex "file $file" -ex "save gdb-index $dir" || {
@@ -58,8 +59,13 @@ $GDB --batch -nx -iex 'set auto-load no' \
status=0
if test -f "$index"; then
+ touch "$mode"
+ chmod --reference="$file" "$mode"
+ # objcopy: unable to copy file 'foo.debug'; reason: Permission denied
+ chmod u+w "$file"
$OBJCOPY --add-section .gdb_index="$index" \
--set-section-flags .gdb_index=readonly "$file" "$file"
+ chmod --reference="$mode" "$file"
status=$?
else
echo "$myname: No index was created for $file" 1>&2
--AhhlLboLdkugWU4S--

View File

@ -1,8 +1,8 @@
Index: gdb-7.10.50.20160121/gdb/breakpoint.c
Index: gdb-7.11.90.20160829/gdb/breakpoint.c
===================================================================
--- gdb-7.10.50.20160121.orig/gdb/breakpoint.c 2016-01-21 21:52:34.243387043 +0100
+++ gdb-7.10.50.20160121/gdb/breakpoint.c 2016-01-21 21:53:00.365542925 +0100
@@ -16139,6 +16139,50 @@
--- gdb-7.11.90.20160829.orig/gdb/breakpoint.c 2016-08-29 09:41:57.054875810 +0200
+++ gdb-7.11.90.20160829/gdb/breakpoint.c 2016-08-29 09:45:04.166612376 +0200
@@ -16176,6 +16176,50 @@
static struct cmd_list_element *enablebreaklist = NULL;
void
@ -34,7 +34,7 @@ Index: gdb-7.10.50.20160121/gdb/breakpoint.c
+ && relocated_address < obj_section_endaddr (osect))
+ {
+ if (bl->inserted)
+ remove_breakpoint (bl, mark_uninserted);
+ remove_breakpoint (bl);
+
+ bl->address += delta_offset;
+ bl->requested_address += delta_offset;
@ -53,11 +53,11 @@ Index: gdb-7.10.50.20160121/gdb/breakpoint.c
_initialize_breakpoint (void)
{
struct cmd_list_element *c;
Index: gdb-7.10.50.20160121/gdb/breakpoint.h
Index: gdb-7.11.90.20160829/gdb/breakpoint.h
===================================================================
--- gdb-7.10.50.20160121.orig/gdb/breakpoint.h 2016-01-21 21:52:34.244387049 +0100
+++ gdb-7.10.50.20160121/gdb/breakpoint.h 2016-01-21 21:53:00.366542931 +0100
@@ -1629,4 +1629,7 @@
--- gdb-7.11.90.20160829.orig/gdb/breakpoint.h 2016-08-29 09:41:57.054875810 +0200
+++ gdb-7.11.90.20160829/gdb/breakpoint.h 2016-08-29 09:42:24.370129320 +0200
@@ -1644,4 +1644,7 @@
UIOUT iff debugging multiple threads. */
extern void maybe_print_thread_hit_breakpoint (struct ui_out *uiout);
@ -65,10 +65,10 @@ Index: gdb-7.10.50.20160121/gdb/breakpoint.h
+ struct section_offsets *delta);
+
#endif /* !defined (BREAKPOINT_H) */
Index: gdb-7.10.50.20160121/gdb/objfiles.c
Index: gdb-7.11.90.20160829/gdb/objfiles.c
===================================================================
--- gdb-7.10.50.20160121.orig/gdb/objfiles.c 2016-01-21 21:52:34.245387055 +0100
+++ gdb-7.10.50.20160121/gdb/objfiles.c 2016-01-21 21:53:00.367542937 +0100
--- gdb-7.11.90.20160829.orig/gdb/objfiles.c 2016-08-29 09:41:57.054875810 +0200
+++ gdb-7.11.90.20160829/gdb/objfiles.c 2016-08-29 09:42:24.370129320 +0200
@@ -916,6 +916,11 @@
obj_section_addr (s));
}

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@ http://sourceware.org/gdb/wiki/ProjectArcher
http://sourceware.org/gdb/wiki/ArcherBranchManagement
GIT snapshot:
commit f0ee78c5ccefe388a64273353ecd5c99dae62558
commit cfee64ee869a6a6e4ab0b64af149d4cf59517d80
tromey/python
@ -16,10 +16,10 @@ index 0000000..173b8ea
+This branch originally held the Python code for gdb. It still exists
+because a small amount of code here has not yet been merged upstream.
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 95104ef..a9b198a 100644
index 5af6103..9c69cb0 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -1534,6 +1534,12 @@ stamp-h: $(srcdir)/config.in config.status
@@ -1553,6 +1553,12 @@ stamp-h: $(srcdir)/config.in config.status
CONFIG_LINKS= \
$(SHELL) config.status
@ -33,10 +33,10 @@ index 95104ef..a9b198a 100644
$(SHELL) config.status --recheck
diff --git a/gdb/data-directory/Makefile.in b/gdb/data-directory/Makefile.in
index 30cfd17..e977b30 100644
index 3f23516..b5d6390 100644
--- a/gdb/data-directory/Makefile.in
+++ b/gdb/data-directory/Makefile.in
@@ -65,7 +65,10 @@ PYTHON_FILE_LIST = \
@@ -66,7 +66,10 @@ PYTHON_FILE_LIST = \
gdb/unwinder.py \
gdb/prompt.py \
gdb/xmethod.py \
@ -47,8 +47,8 @@ index 30cfd17..e977b30 100644
gdb/command/xmethods.py \
gdb/command/frame_filters.py \
gdb/command/unwinders.py \
@@ -76,6 +79,8 @@ PYTHON_FILE_LIST = \
gdb/function/__init__.py \
@@ -78,6 +81,8 @@ PYTHON_FILE_LIST = \
gdb/function/as_string.py \
gdb/function/caller_is.py \
gdb/function/strfns.py \
+ gdb/function/caller_is.py \
@ -57,7 +57,7 @@ index 30cfd17..e977b30 100644
gdb/printer/bound_registers.py
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 1665372..c4caffc 100644
index f5dde61..1d92bd6 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -1225,6 +1225,16 @@ for remote debugging.
@ -78,7 +78,7 @@ index 1665372..c4caffc 100644
@item -tui
@cindex @code{--tui}
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
index 57ec22e..13beb05 100644
index a17e37d..c56068b 100644
--- a/gdb/doc/python.texi
+++ b/gdb/doc/python.texi
@@ -88,8 +88,6 @@ containing @code{end}. For example:
@ -111,7 +111,7 @@ index 05a38b2..9801fdf 100644
set variable $gdb_init_done = 1
diff --git a/gdb/main.c b/gdb/main.c
index aecd60a..d0f7834 100644
index 5477379..b7e413f 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -33,6 +33,7 @@
@ -122,7 +122,7 @@ index aecd60a..d0f7834 100644
#include "source.h"
#include "cli/cli-cmds.h"
#include "objfiles.h"
@@ -453,6 +454,8 @@ captured_main (void *data)
@@ -459,6 +460,8 @@ captured_main (void *data)
char *cdarg = NULL;
char *ttyarg = NULL;
@ -190,7 +190,7 @@ index aecd60a..d0f7834 100644
{
/* The remaining options are the command-line options for the
inferior. The first one is the sym/exec file, and the rest
@@ -1137,7 +1171,8 @@ captured_main (void *data)
@@ -1127,7 +1161,8 @@ captured_main (void *data)
/* Read in the old history after all the command files have been
read. */
@ -200,7 +200,7 @@ index aecd60a..d0f7834 100644
if (batch_flag)
{
@@ -1148,13 +1183,25 @@ captured_main (void *data)
@@ -1138,13 +1173,25 @@ captured_main (void *data)
/* Show time and/or space usage. */
do_cleanups (pre_stat_chain);
@ -232,7 +232,7 @@ index aecd60a..d0f7834 100644
}
/* No exit -- exit is through quit_command. */
}
@@ -1188,6 +1235,12 @@ print_gdb_help (struct ui_file *stream)
@@ -1187,6 +1234,12 @@ print_gdb_help (struct ui_file *stream)
fputs_unfiltered (_("\
This is the GNU debugger. Usage:\n\n\
gdb [options] [executable-file [core-file or process-id]]\n\
@ -245,7 +245,7 @@ index aecd60a..d0f7834 100644
gdb [options] --args executable-file [inferior-arguments ...]\n\n\
"), stream);
fputs_unfiltered (_("\
@@ -1232,6 +1285,13 @@ Output and user interface control:\n\n\
@@ -1231,6 +1284,13 @@ Output and user interface control:\n\n\
#endif
fputs_unfiltered (_("\
--dbx DBX compatibility mode.\n\
@ -443,10 +443,10 @@ index 0000000..8742680
+
+InScope ()
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 4f88b0e..870a1ba 100644
index 621e201..703a1a0 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -93,6 +93,8 @@ const struct extension_language_defn extension_language_python =
@@ -95,6 +95,8 @@ const struct extension_language_defn extension_language_python =
#include "linespec.h"
#include "source.h"
#include "version.h"
@ -455,7 +455,7 @@ index 4f88b0e..870a1ba 100644
#include "target.h"
#include "gdbthread.h"
#include "interps.h"
@@ -1262,6 +1264,83 @@ gdbpy_print_stack (void)
@@ -1263,6 +1265,92 @@ gdbpy_print_stack (void)
/* Return the current Progspace.
There always is one. */
@ -477,7 +477,14 @@ index 4f88b0e..870a1ba 100644
+ return PyErr_Format (PyExc_RuntimeError, _("Cannot invoke CLI from MI."));
+
+ in_cli = 1;
+ current_interp_command_loop ();
+ /* See captured_command_loop. */
+
+ /* Give the interpreter a chance to print a prompt. */
+ interp_pre_command_loop (top_level_interpreter ());
+
+ /* Now it's time to start the event loop. */
+ start_event_loop ();
+
+ in_cli = 0;
+
+ Py_RETURN_NONE;
@ -500,13 +507,15 @@ index 4f88b0e..870a1ba 100644
+ PySys_SetArgv (argc - 1, argv + 1);
+#else
+ {
+ wchar_t **wargv = alloca (sizeof (*wargv) * (argc + 1));
+ wchar_t **wargv = (wchar_t **) alloca (sizeof (*wargv) * (argc + 1));
+ int i;
+
+ for (i = 1; i < argc; i++)
+ {
+ size_t len = mbstowcs (NULL, argv[i], 0);
+ size_t len2;
+ /* Python-related GDB sources are built with -DNDEBUG
+ https://sourceware.org/bugzilla/show_bug.cgi?id=20445 */
+ size_t len2 ATTRIBUTE_UNUSED;
+
+ if (len == (size_t) -1)
+ {
@ -514,7 +523,7 @@ index 4f88b0e..870a1ba 100644
+ i, argv[i]);
+ exit (1);
+ }
+ wargv[i] = alloca (sizeof (**wargv) * (len + 1));
+ wargv[i] = (wchar_t *) alloca (sizeof (**wargv) * (len + 1));
+ len2 = mbstowcs (wargv[i], argv[i], len + 1);
+ assert (len2 == len);
+ }
@ -539,7 +548,7 @@ index 4f88b0e..870a1ba 100644
static PyObject *
gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
@@ -1982,6 +2061,8 @@ PyMethodDef python_GdbMethods[] =
@@ -1981,6 +2069,8 @@ PyMethodDef python_GdbMethods[] =
Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
a Python String containing the output of the command if to_string is\n\
set to True." },
@ -549,7 +558,7 @@ index 4f88b0e..870a1ba 100644
"Return a gdb parameter's value" },
diff --git a/gdb/python/python.h b/gdb/python/python.h
index e6bfcca..688daa3 100644
index b810187..a3620ab 100644
--- a/gdb/python/python.h
+++ b/gdb/python/python.h
@@ -25,4 +25,6 @@
@ -560,10 +569,10 @@ index e6bfcca..688daa3 100644
+
#endif /* GDB_PYTHON_H */
diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest.exp
index 9f25a48..88b0842 100644
index 2fdd9e3..391900d 100644
--- a/gdb/testsuite/gdb.gdb/selftest.exp
+++ b/gdb/testsuite/gdb.gdb/selftest.exp
@@ -92,6 +92,10 @@ proc do_steps_and_nexts {} {
@@ -87,6 +87,10 @@ proc do_steps_and_nexts {} {
set description "step over cmdarg_vec initialization"
set command "step"
}
@ -575,7 +584,7 @@ index 9f25a48..88b0842 100644
set description "next over make_command_stats_cleanup and everything it calls"
set command "next"
diff --git a/gdb/testsuite/gdb.python/py-frame.exp b/gdb/testsuite/gdb.python/py-frame.exp
index 33fdbe5..264d00f 100644
index b5a4682..d5451a6 100644
--- a/gdb/testsuite/gdb.python/py-frame.exp
+++ b/gdb/testsuite/gdb.python/py-frame.exp
@@ -95,6 +95,8 @@ gdb_test "python print ('result = %s' % f0.read_var ('a'))" " = 1" "test Frame.r
@ -588,10 +597,10 @@ index 33fdbe5..264d00f 100644
gdb_test "python print ('result = %s' % (gdb.selected_frame ().read_register ('sp') == gdb.parse_and_eval ('\$sp')))" \
" = True" \
diff --git a/gdb/testsuite/gdb.python/py-value.exp b/gdb/testsuite/gdb.python/py-value.exp
index baa17b7..45ad67e 100644
index 57a9ba1..d90d85a 100644
--- a/gdb/testsuite/gdb.python/py-value.exp
+++ b/gdb/testsuite/gdb.python/py-value.exp
@@ -388,6 +388,15 @@ proc test_value_after_death {} {
@@ -397,6 +397,15 @@ proc test_value_after_death {} {
"print value's type"
}
@ -607,7 +616,7 @@ index baa17b7..45ad67e 100644
# Regression test for invalid subscript operations. The bug was that
# the type of the value was not being checked before allowing a
# subscript operation to proceed.
@@ -517,6 +526,7 @@ test_value_in_inferior
@@ -526,6 +535,7 @@ test_value_in_inferior
test_inferior_function_call
test_lazy_strings
test_value_after_death

View File

@ -37,13 +37,13 @@ gdb/gdbserver/
(linux_create_inferior, linux_tracefork_child): Call it instead of
direct ptrace.
Index: gdb-7.10.50.20160106/gdb/nat/linux-ptrace.c
Index: gdb-7.11.90.20160829/gdb/nat/linux-ptrace.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/nat/linux-ptrace.c 2016-01-08 19:15:57.580707944 +0100
+++ gdb-7.10.50.20160106/gdb/nat/linux-ptrace.c 2016-01-08 19:16:02.654736246 +0100
@@ -24,6 +24,10 @@
#include "gdb_wait.h"
--- gdb-7.11.90.20160829.orig/gdb/nat/linux-ptrace.c 2016-08-29 09:35:26.798230659 +0200
+++ gdb-7.11.90.20160829/gdb/nat/linux-ptrace.c 2016-08-29 09:35:43.162384100 +0200
@@ -25,6 +25,10 @@
#include "gdb_ptrace.h"
#include <sys/procfs.h>
+#ifdef HAVE_SELINUX_SELINUX_H
+# include <selinux/selinux.h>
@ -52,7 +52,7 @@ Index: gdb-7.10.50.20160106/gdb/nat/linux-ptrace.c
/* Stores the ptrace options supported by the running kernel.
A value of -1 means we did not check for features yet. A value
of 0 means there are no supported features. */
@@ -48,6 +52,8 @@
@@ -49,6 +53,8 @@
buffer_xml_printf (buffer, _("process %d is a zombie "
"- the process has already terminated"),
(int) pid);
@ -61,7 +61,7 @@ Index: gdb-7.10.50.20160106/gdb/nat/linux-ptrace.c
}
/* See linux-ptrace.h. */
@@ -594,6 +600,22 @@
@@ -592,6 +598,22 @@
linux_ptrace_test_ret_to_nx ();
}
@ -84,11 +84,11 @@ Index: gdb-7.10.50.20160106/gdb/nat/linux-ptrace.c
/* Extract extended ptrace event from wait status. */
int
Index: gdb-7.10.50.20160106/gdb/nat/linux-ptrace.h
Index: gdb-7.11.90.20160829/gdb/nat/linux-ptrace.h
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/nat/linux-ptrace.h 2016-01-08 19:15:57.581707950 +0100
+++ gdb-7.10.50.20160106/gdb/nat/linux-ptrace.h 2016-01-08 19:16:02.655736251 +0100
@@ -164,6 +164,7 @@
--- gdb-7.11.90.20160829.orig/gdb/nat/linux-ptrace.h 2016-08-29 09:35:26.798230659 +0200
+++ gdb-7.11.90.20160829/gdb/nat/linux-ptrace.h 2016-08-29 09:35:43.162384100 +0200
@@ -185,6 +185,7 @@
extern char *linux_ptrace_attach_fail_reason_string (ptid_t ptid, int err);
extern void linux_ptrace_init_warnings (void);
@ -96,11 +96,11 @@ Index: gdb-7.10.50.20160106/gdb/nat/linux-ptrace.h
extern void linux_check_ptrace_features (void);
extern void linux_enable_event_reporting (pid_t pid, int attached);
extern void linux_disable_event_reporting (pid_t pid);
Index: gdb-7.10.50.20160106/gdb/configure.ac
Index: gdb-7.11.90.20160829/gdb/configure.ac
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/configure.ac 2016-01-08 19:15:57.582707955 +0100
+++ gdb-7.10.50.20160106/gdb/configure.ac 2016-01-08 19:16:02.656736257 +0100
@@ -2077,6 +2077,10 @@
--- gdb-7.11.90.20160829.orig/gdb/configure.ac 2016-08-29 09:35:26.799230668 +0200
+++ gdb-7.11.90.20160829/gdb/configure.ac 2016-08-29 09:35:43.163384109 +0200
@@ -2108,6 +2108,10 @@
esac
AC_DEFINE_UNQUOTED(GDBINIT,"$gdbinit",[The .gdbinit filename.])
@ -111,11 +111,11 @@ Index: gdb-7.10.50.20160106/gdb/configure.ac
dnl Handle optional features that can be enabled.
# Support for --with-sysroot is a copy of GDB_AC_WITH_DIR,
Index: gdb-7.10.50.20160106/gdb/gdbserver/configure.ac
Index: gdb-7.11.90.20160829/gdb/gdbserver/configure.ac
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/gdbserver/configure.ac 2016-01-08 19:15:57.582707955 +0100
+++ gdb-7.10.50.20160106/gdb/gdbserver/configure.ac 2016-01-08 19:16:02.656736257 +0100
@@ -524,6 +524,10 @@
--- gdb-7.11.90.20160829.orig/gdb/gdbserver/configure.ac 2016-08-29 09:35:26.799230668 +0200
+++ gdb-7.11.90.20160829/gdb/gdbserver/configure.ac 2016-08-29 09:35:43.163384109 +0200
@@ -472,6 +472,10 @@
fi
fi
@ -126,11 +126,11 @@ Index: gdb-7.10.50.20160106/gdb/gdbserver/configure.ac
AC_SUBST(GDBSERVER_DEPFILES)
AC_SUBST(GDBSERVER_LIBS)
AC_SUBST(srv_xmlbuiltin)
Index: gdb-7.10.50.20160106/gdb/gdbserver/linux-low.c
Index: gdb-7.11.90.20160829/gdb/gdbserver/linux-low.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/gdbserver/linux-low.c 2016-01-08 19:15:57.585707972 +0100
+++ gdb-7.10.50.20160106/gdb/gdbserver/linux-low.c 2016-01-08 19:16:02.658736268 +0100
@@ -853,6 +853,29 @@
--- gdb-7.11.90.20160829.orig/gdb/gdbserver/linux-low.c 2016-08-29 09:35:26.801230687 +0200
+++ gdb-7.11.90.20160829/gdb/gdbserver/linux-low.c 2016-08-29 09:35:43.165384128 +0200
@@ -933,6 +933,29 @@
return lwp;
}
@ -160,7 +160,7 @@ Index: gdb-7.10.50.20160106/gdb/gdbserver/linux-low.c
/* Start an inferior process and returns its pid.
ALLARGS is a vector of program-name and args. */
@@ -876,7 +899,7 @@
@@ -956,7 +979,7 @@
if (pid == 0)
{
close_most_fds ();
@ -169,10 +169,10 @@ Index: gdb-7.10.50.20160106/gdb/gdbserver/linux-low.c
setpgid (0, 0);
Index: gdb-7.10.50.20160106/gdb/inf-ptrace.c
Index: gdb-7.11.90.20160829/gdb/inf-ptrace.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/inf-ptrace.c 2016-01-08 19:15:57.586707977 +0100
+++ gdb-7.10.50.20160106/gdb/inf-ptrace.c 2016-01-08 19:16:02.659736274 +0100
--- gdb-7.11.90.20160829.orig/gdb/inf-ptrace.c 2016-08-29 09:35:26.801230687 +0200
+++ gdb-7.11.90.20160829/gdb/inf-ptrace.c 2016-08-29 09:35:43.165384128 +0200
@@ -79,7 +79,15 @@
inf_ptrace_me (void)
{
@ -189,11 +189,11 @@ Index: gdb-7.10.50.20160106/gdb/inf-ptrace.c
}
/* Start a new inferior Unix child process. EXEC_FILE is the file to
Index: gdb-7.10.50.20160106/gdb/linux-nat.c
Index: gdb-7.11.90.20160829/gdb/linux-nat.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/linux-nat.c 2016-01-08 19:15:57.587707983 +0100
+++ gdb-7.10.50.20160106/gdb/linux-nat.c 2016-01-08 19:16:02.660736279 +0100
@@ -1016,6 +1016,7 @@
--- gdb-7.11.90.20160829.orig/gdb/linux-nat.c 2016-08-29 09:35:26.802230697 +0200
+++ gdb-7.11.90.20160829/gdb/linux-nat.c 2016-08-29 09:35:43.166384137 +0200
@@ -1102,6 +1102,7 @@
{
struct cleanup *restore_personality
= maybe_disable_address_space_randomization (disable_randomization);
@ -201,7 +201,7 @@ Index: gdb-7.10.50.20160106/gdb/linux-nat.c
/* The fork_child mechanism is synchronous and calls target_wait, so
we have to mask the async mode. */
@@ -1023,7 +1024,28 @@
@@ -1109,7 +1110,28 @@
/* Make sure we report all signals during startup. */
linux_nat_pass_signals (ops, 0, NULL);
@ -231,11 +231,11 @@ Index: gdb-7.10.50.20160106/gdb/linux-nat.c
do_cleanups (restore_personality);
}
Index: gdb-7.10.50.20160106/gdb/config.in
Index: gdb-7.11.90.20160829/gdb/config.in
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/config.in 2016-01-08 19:15:57.588707989 +0100
+++ gdb-7.10.50.20160106/gdb/config.in 2016-01-08 19:16:02.660736279 +0100
@@ -264,6 +264,9 @@
--- gdb-7.11.90.20160829.orig/gdb/config.in 2016-08-29 09:35:26.803230706 +0200
+++ gdb-7.11.90.20160829/gdb/config.in 2016-08-29 09:35:43.166384137 +0200
@@ -267,6 +267,9 @@
/* Define if librpm library is being used. */
#undef HAVE_LIBRPM
@ -245,7 +245,7 @@ Index: gdb-7.10.50.20160106/gdb/config.in
/* Define to 1 if you have the <libunwind-ia64.h> header file. */
#undef HAVE_LIBUNWIND_IA64_H
@@ -396,6 +399,9 @@
@@ -399,6 +402,9 @@
/* Define to 1 if you have the `scm_new_smob' function. */
#undef HAVE_SCM_NEW_SMOB
@ -255,11 +255,11 @@ Index: gdb-7.10.50.20160106/gdb/config.in
/* Define to 1 if you have the `setlocale' function. */
#undef HAVE_SETLOCALE
Index: gdb-7.10.50.20160106/gdb/configure
Index: gdb-7.11.90.20160829/gdb/configure
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/configure 2016-01-08 19:15:57.593708017 +0100
+++ gdb-7.10.50.20160106/gdb/configure 2016-01-08 19:16:02.665736307 +0100
@@ -14653,6 +14653,64 @@
--- gdb-7.11.90.20160829.orig/gdb/configure 2016-08-29 09:35:26.806230734 +0200
+++ gdb-7.11.90.20160829/gdb/configure 2016-08-29 09:35:43.170384175 +0200
@@ -14642,6 +14642,64 @@
_ACEOF
@ -324,11 +324,11 @@ Index: gdb-7.10.50.20160106/gdb/configure
# Support for --with-sysroot is a copy of GDB_AC_WITH_DIR,
# except that the argument to --with-sysroot is optional.
Index: gdb-7.10.50.20160106/gdb/gdbserver/config.in
Index: gdb-7.11.90.20160829/gdb/gdbserver/config.in
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/gdbserver/config.in 2016-01-08 19:15:57.595708028 +0100
+++ gdb-7.10.50.20160106/gdb/gdbserver/config.in 2016-01-08 19:16:02.665736307 +0100
@@ -117,6 +117,9 @@
--- gdb-7.11.90.20160829.orig/gdb/gdbserver/config.in 2016-08-29 09:35:26.807230743 +0200
+++ gdb-7.11.90.20160829/gdb/gdbserver/config.in 2016-08-29 09:35:43.170384175 +0200
@@ -120,6 +120,9 @@
/* Define to 1 if you have the `mcheck' library (-lmcheck). */
#undef HAVE_LIBMCHECK
@ -338,7 +338,7 @@ Index: gdb-7.10.50.20160106/gdb/gdbserver/config.in
/* Define if the target supports branch tracing. */
#undef HAVE_LINUX_BTRACE
@@ -193,6 +196,9 @@
@@ -196,6 +199,9 @@
/* Define to 1 if you have the `pwrite' function. */
#undef HAVE_PWRITE
@ -348,11 +348,11 @@ Index: gdb-7.10.50.20160106/gdb/gdbserver/config.in
/* Define to 1 if you have the `setns' function. */
#undef HAVE_SETNS
Index: gdb-7.10.50.20160106/gdb/gdbserver/configure
Index: gdb-7.11.90.20160829/gdb/gdbserver/configure
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/gdbserver/configure 2016-01-08 19:15:57.597708039 +0100
+++ gdb-7.10.50.20160106/gdb/gdbserver/configure 2016-01-08 19:16:02.667736318 +0100
@@ -7311,6 +7311,64 @@
--- gdb-7.11.90.20160829.orig/gdb/gdbserver/configure 2016-08-29 09:35:26.809230762 +0200
+++ gdb-7.11.90.20160829/gdb/gdbserver/configure 2016-08-29 09:35:43.172384194 +0200
@@ -7561,6 +7561,64 @@
fi
fi

44
gdb-bison-old.patch Normal file
View File

@ -0,0 +1,44 @@
bison-3.0.4-4.fc24.x86_64
vs.
bison-2.7-4.el7.x86_64
bison:
8d0b7cef7df7fead44b9574cee342de336008625 tags/v3.0.1~2
parsers: rename YY_NULL as YY_NULLPTR to avoid conflicts with Flex
ada-lex.c:113:0: error: "YY_NULL" redefined [-Werror]
#define YY_NULL 0
ada-exp.c:158:0: note: this is the location of the previous definition
# define YY_NULL nullptr
*-exp.c cp-name-parser.c
vs.
ada-lex.c
# ifndef YY_NULL
# if defined __cplusplus && 201103L <= __cplusplus
# define YY_NULL nullptr
# else
# define YY_NULL 0
# endif
# endif
# ifndef YY_NULLPTR
# if defined __cplusplus && 201103L <= __cplusplus
# define YY_NULLPTR nullptr
# else
# define YY_NULLPTR 0
# endif
# endif
--- gdb-clean712/gdb/Makefile.in 2016-08-29 09:16:15.505393928 +0200
+++ gdb-clean712/gdb/Makefile.in 2016-09-07 13:32:34.744270346 +0200
@@ -1900,6 +1945,7 @@ po/$(PACKAGE).pot: force
-e 's/\([ \t;,(]\)free\([ \t]*[&(),]\)/\1xfree\2/g' \
-e 's/\([ \t;,(]\)free$$/\1xfree/g' \
-e '/^#line.*y.tab.c/d' \
+ -e 's/\<YY_NULL\>/YY_NULLPTR/g' \
< $@.tmp > $@
rm -f $@.tmp
.l.c:

View File

@ -1,7 +1,7 @@
Index: gdb-7.10.90.20160211/gdb/config/i386/linux64.mh
Index: gdb-7.11.90.20160807/gdb/config/i386/linux64.mh
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/config/i386/linux64.mh 2016-02-11 20:56:32.470674877 +0100
+++ gdb-7.10.90.20160211/gdb/config/i386/linux64.mh 2016-02-11 20:56:51.158797712 +0100
--- gdb-7.11.90.20160807.orig/gdb/config/i386/linux64.mh 2016-08-07 22:27:13.889285274 +0200
+++ gdb-7.11.90.20160807/gdb/config/i386/linux64.mh 2016-08-07 22:29:20.451311124 +0200
@@ -7,7 +7,7 @@
linux-procfs.o linux-ptrace.o linux-btrace.o \
linux-waitpid.o linux-personality.o x86-linux.o \
@ -11,10 +11,10 @@ Index: gdb-7.10.90.20160211/gdb/config/i386/linux64.mh
NAT_CDEPS = $(srcdir)/proc-service.list
# The dynamically loaded libthread_db needs access to symbols in the
Index: gdb-7.10.90.20160211/gdb/config/i386/linux.mh
Index: gdb-7.11.90.20160807/gdb/config/i386/linux.mh
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/config/i386/linux.mh 2016-02-11 20:56:26.925638430 +0100
+++ gdb-7.10.90.20160211/gdb/config/i386/linux.mh 2016-02-11 20:56:32.471674884 +0100
--- gdb-7.11.90.20160807.orig/gdb/config/i386/linux.mh 2016-08-07 22:27:13.889285274 +0200
+++ gdb-7.11.90.20160807/gdb/config/i386/linux.mh 2016-08-07 22:29:20.451311124 +0200
@@ -1,6 +1,6 @@
# Host: Intel 386 running GNU/Linux.
@ -23,10 +23,10 @@ Index: gdb-7.10.90.20160211/gdb/config/i386/linux.mh
NATDEPFILES= inf-ptrace.o fork-child.o \
x86-nat.o x86-dregs.o i386-linux-nat.o x86-linux-nat.o \
proc-service.o linux-thread-db.o \
Index: gdb-7.10.90.20160211/gdb/config/i386/nm-linux.h
Index: gdb-7.11.90.20160807/gdb/config/i386/nm-linux.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.10.90.20160211/gdb/config/i386/nm-linux.h 2016-02-11 20:56:32.471674884 +0100
+++ gdb-7.11.90.20160807/gdb/config/i386/nm-linux.h 2016-08-07 22:29:20.451311124 +0200
@@ -0,0 +1,28 @@
+/* Native support for GNU/Linux i386.
+
@ -56,10 +56,10 @@ Index: gdb-7.10.90.20160211/gdb/config/i386/nm-linux.h
+#define target_can_use_hardware_watchpoint(type, cnt, ot) 1
+
+#endif /* NM_LINUX64_H */
Index: gdb-7.10.90.20160211/gdb/config/i386/nm-linux64.h
Index: gdb-7.11.90.20160807/gdb/config/i386/nm-linux64.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.10.90.20160211/gdb/config/i386/nm-linux64.h 2016-02-11 20:56:32.471674884 +0100
+++ gdb-7.11.90.20160807/gdb/config/i386/nm-linux64.h 2016-08-07 22:29:20.451311124 +0200
@@ -0,0 +1,28 @@
+/* Native support for GNU/Linux amd64.
+
@ -89,13 +89,13 @@ Index: gdb-7.10.90.20160211/gdb/config/i386/nm-linux64.h
+#define target_can_use_hardware_watchpoint(type, cnt, ot) 1
+
+#endif /* NM_LINUX64_H */
Index: gdb-7.10.90.20160211/gdb/target.h
Index: gdb-7.11.90.20160807/gdb/target.h
===================================================================
--- gdb-7.10.90.20160211.orig/gdb/target.h 2016-02-11 20:56:26.926638437 +0100
+++ gdb-7.10.90.20160211/gdb/target.h 2016-02-11 20:56:32.472674890 +0100
@@ -1924,9 +1924,11 @@
CNT is the number of such watchpoints used so far, including this
one. OTHERTYPE is who knows what... */
--- gdb-7.11.90.20160807.orig/gdb/target.h 2016-08-07 22:27:13.889285274 +0200
+++ gdb-7.11.90.20160807/gdb/target.h 2016-08-07 22:29:20.452311132 +0200
@@ -1939,9 +1939,11 @@
one. OTHERTYPE is the number of watchpoints of other types than
this one used so far. */
+#ifndef target_can_use_hardware_watchpoint
#define target_can_use_hardware_watchpoint(TYPE,CNT,OTHERTYPE) \
@ -105,10 +105,10 @@ Index: gdb-7.10.90.20160211/gdb/target.h
/* Returns the number of debug registers needed to watch the given
memory region, or zero if not supported. */
Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp
Index: gdb-7.11.90.20160807/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp 2016-02-11 20:56:32.472674890 +0100
+++ gdb-7.11.90.20160807/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp 2016-08-07 22:29:20.452311132 +0200
@@ -0,0 +1,40 @@
+# Copyright 2009, 2010 Free Software Foundation, Inc.
+
@ -150,3 +150,16 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp
+gdb_test "" "main .* at .*" "start"
+
+gdb_test "continue" "Continuing.\r\n\r\nHardware read watchpoint \[0-9\]+: watchee\r\n\r\nValue = 0\r\n.*"
Index: gdb-7.11.90.20160807/gdb/breakpoint.c
===================================================================
--- gdb-7.11.90.20160807.orig/gdb/breakpoint.c 2016-08-07 22:33:38.835405458 +0200
+++ gdb-7.11.90.20160807/gdb/breakpoint.c 2016-08-07 22:34:45.023941950 +0200
@@ -14953,7 +14953,7 @@
if (bpt->type == bp_hardware_breakpoint)
{
- int i;
+ int i ATTRIBUTE_UNUSED;
i = hw_breakpoint_used_count ();
target_resources_ok =
target_can_use_hardware_watchpoint (bp_hardware_breakpoint,

View File

@ -0,0 +1,21 @@
--- gdb-7.11/gdb/remote.c-orig 2016-04-06 17:46:52.428921496 +0200
+++ gdb-7.11/gdb/remote.c 2016-04-06 18:28:26.781923516 +0200
@@ -13002,7 +13002,17 @@ remote_pid_to_exec_file (struct target_o
char *annex = NULL;
if (packet_support (PACKET_qXfer_exec_file) != PACKET_ENABLE)
- return NULL;
+ {
+ warning (_("Remote gdbserver does not support determining executable "
+ "automatically.\n"
+"RHEL <=6.8 and <=7.2 versions of gdbserver do not support such automatic executable detection.\n"
+"The following versions of gdbserver support it:\n"
+"- Upstream version of gdbserver (unsupported) 7.10 or later\n"
+"- Red Hat Developer Toolset (DTS) version of gdbserver from DTS 4.0 or later (only on x86_64)\n"
+"- RHEL-7.3 versions of gdbserver (on any architecture)"
+));
+ return NULL;
+ }
if (filename != NULL)
xfree (filename);

View File

@ -1,10 +1,10 @@
https://bugzilla.redhat.com/show_bug.cgi?id=1020004
Index: gdb-7.9.50.20150520/gdb/data-directory/Makefile.in
Index: gdb-7.11.50.20160630/gdb/data-directory/Makefile.in
===================================================================
--- gdb-7.9.50.20150520.orig/gdb/data-directory/Makefile.in 2015-05-31 18:05:43.046746351 +0200
+++ gdb-7.9.50.20150520/gdb/data-directory/Makefile.in 2015-05-31 18:05:58.483841655 +0200
@@ -60,6 +60,8 @@ PYTHON_FILE_LIST = \
--- gdb-7.11.50.20160630.orig/gdb/data-directory/Makefile.in 2016-07-03 16:32:13.788164041 +0200
+++ gdb-7.11.50.20160630/gdb/data-directory/Makefile.in 2016-07-03 16:32:17.868198850 +0200
@@ -61,6 +61,8 @@
gdb/frames.py \
gdb/FrameIterator.py \
gdb/FrameDecorator.py \
@ -13,18 +13,18 @@ Index: gdb-7.9.50.20150520/gdb/data-directory/Makefile.in
gdb/types.py \
gdb/printing.py \
gdb/unwinder.py \
@@ -76,6 +78,7 @@ PYTHON_FILE_LIST = \
@@ -77,6 +79,7 @@
gdb/command/pretty_printers.py \
gdb/command/prompt.py \
gdb/command/explore.py \
+ gdb/command/backtrace.py \
gdb/function/__init__.py \
gdb/function/as_string.py \
gdb/function/caller_is.py \
gdb/function/strfns.py \
Index: gdb-7.9.50.20150520/gdb/python/lib/gdb/FrameWrapper.py
Index: gdb-7.11.50.20160630/gdb/python/lib/gdb/FrameWrapper.py
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.9.50.20150520/gdb/python/lib/gdb/FrameWrapper.py 2015-05-31 18:05:58.484841661 +0200
+++ gdb-7.11.50.20160630/gdb/python/lib/gdb/FrameWrapper.py 2016-07-03 16:32:17.869198859 +0200
@@ -0,0 +1,122 @@
+# Wrapper API for frames.
+
@ -148,10 +148,10 @@ Index: gdb-7.9.50.20150520/gdb/python/lib/gdb/FrameWrapper.py
+
+ def __getattr__ (self, name):
+ return getattr (self.frame, name)
Index: gdb-7.9.50.20150520/gdb/python/lib/gdb/backtrace.py
Index: gdb-7.11.50.20160630/gdb/python/lib/gdb/backtrace.py
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.9.50.20150520/gdb/python/lib/gdb/backtrace.py 2015-05-31 18:05:58.484841661 +0200
+++ gdb-7.11.50.20160630/gdb/python/lib/gdb/backtrace.py 2016-07-03 16:32:17.869198859 +0200
@@ -0,0 +1,42 @@
+# Filtering backtrace.
+
@ -195,10 +195,10 @@ Index: gdb-7.9.50.20150520/gdb/python/lib/gdb/backtrace.py
+ return iter
+ return old_frame_filter (iter)
+
Index: gdb-7.9.50.20150520/gdb/python/lib/gdb/command/backtrace.py
Index: gdb-7.11.50.20160630/gdb/python/lib/gdb/command/backtrace.py
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.9.50.20150520/gdb/python/lib/gdb/command/backtrace.py 2015-05-31 18:05:58.484841661 +0200
+++ gdb-7.11.50.20160630/gdb/python/lib/gdb/command/backtrace.py 2016-07-03 16:32:17.869198859 +0200
@@ -0,0 +1,106 @@
+# New backtrace command.
+

View File

@ -11,11 +11,11 @@ gdb/
Work around PR libc/13097.
* solib.c (update_solib_list): Ignore "linux-vdso.so.1".
Index: gdb-7.11.1/gdb/solib.c
Index: gdb-7.9.50.20150520/gdb/solib.c
===================================================================
--- gdb-7.11.1.orig/gdb/solib.c 2016-02-10 04:19:39.000000000 +0100
+++ gdb-7.11.1/gdb/solib.c 2016-08-08 17:34:35.000000000 +0200
@@ -891,8 +891,13 @@ update_solib_list (int from_tty, struct
--- gdb-7.9.50.20150520.orig/gdb/solib.c 2015-05-31 17:04:16.870802493 +0200
+++ gdb-7.9.50.20150520/gdb/solib.c 2015-05-31 17:04:38.824941054 +0200
@@ -893,8 +893,11 @@ update_solib_list (int from_tty, struct
TRY
{
@ -25,8 +25,6 @@ Index: gdb-7.11.1/gdb/solib.c
+ Work around PR libc/13097. */
+ if (!solib_map_sections (i)
+ && strcmp (i->so_original_name, "linux-vdso.so.1") != 0
+ && strcmp (i->so_original_name, "linux-vdso32.so.1") != 0
+ && strcmp (i->so_original_name, "linux-vdso64.so.1") != 0
+ && strcmp (i->so_original_name, "linux-gate.so.1") != 0)
{
not_found++;

View File

@ -0,0 +1,16 @@
diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh
index cca7153..73181ec 100755
--- a/gdb/contrib/gdb-add-index.sh
+++ b/gdb/contrib/gdb-add-index.sh
@@ -21,6 +21,11 @@
GDB=${GDB:=gdb}
OBJCOPY=${OBJCOPY:=objcopy}
+GDB2=/usr/libexec/gdb
+if test -x $GDB2 && ! which $GDB &>/dev/null; then
+ GDB=$GDB2
+fi
+
myname="${0##*/}"
if test $# != 1; then

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ae85ba0279cbf1f3d7d263b5136613c2dd707b80907b3f991db43b3b23432cc1
size 19356

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c620865e7c00c9c2e644fa693a11170bbf2fec83c078c597e61606c38d2e2562
size 19254

232
gdb-linux_perf-bundle.patch Normal file
View File

@ -0,0 +1,232 @@
Index: gdb-7.11.90.20160904/gdb/nat/linux-btrace.h
===================================================================
--- gdb-7.11.90.20160904.orig/gdb/nat/linux-btrace.h 2016-09-04 04:02:13.000000000 +0200
+++ gdb-7.11.90.20160904/gdb/nat/linux-btrace.h 2016-09-04 20:11:47.375275492 +0200
@@ -28,6 +28,177 @@
# include <linux/perf_event.h>
#endif
+#ifdef PERF_ATTR_SIZE_VER5_BUNDLE
+#ifndef HAVE_LINUX_PERF_EVENT_H
+# error "PERF_ATTR_SIZE_VER5_BUNDLE && !HAVE_LINUX_PERF_EVENT_H"
+#endif
+#ifndef PERF_ATTR_SIZE_VER5
+#define PERF_ATTR_SIZE_VER5
+#define perf_event_mmap_page perf_event_mmap_page_bundle
+// kernel-headers-3.10.0-493.el7.x86_64/usr/include/linux/perf_event.h
+/*
+ * Structure of the page that can be mapped via mmap
+ */
+struct perf_event_mmap_page {
+ __u32 version; /* version number of this structure */
+ __u32 compat_version; /* lowest version this is compat with */
+
+ /*
+ * Bits needed to read the hw events in user-space.
+ *
+ * u32 seq, time_mult, time_shift, index, width;
+ * u64 count, enabled, running;
+ * u64 cyc, time_offset;
+ * s64 pmc = 0;
+ *
+ * do {
+ * seq = pc->lock;
+ * barrier()
+ *
+ * enabled = pc->time_enabled;
+ * running = pc->time_running;
+ *
+ * if (pc->cap_usr_time && enabled != running) {
+ * cyc = rdtsc();
+ * time_offset = pc->time_offset;
+ * time_mult = pc->time_mult;
+ * time_shift = pc->time_shift;
+ * }
+ *
+ * index = pc->index;
+ * count = pc->offset;
+ * if (pc->cap_user_rdpmc && index) {
+ * width = pc->pmc_width;
+ * pmc = rdpmc(index - 1);
+ * }
+ *
+ * barrier();
+ * } while (pc->lock != seq);
+ *
+ * NOTE: for obvious reason this only works on self-monitoring
+ * processes.
+ */
+ __u32 lock; /* seqlock for synchronization */
+ __u32 index; /* hardware event identifier */
+ __s64 offset; /* add to hardware event value */
+ __u64 time_enabled; /* time event active */
+ __u64 time_running; /* time event on cpu */
+ union {
+ __u64 capabilities;
+ struct {
+ __u64 cap_bit0 : 1, /* Always 0, deprecated, see commit 860f085b74e9 */
+ cap_bit0_is_deprecated : 1, /* Always 1, signals that bit 0 is zero */
+
+ cap_user_rdpmc : 1, /* The RDPMC instruction can be used to read counts */
+ cap_user_time : 1, /* The time_* fields are used */
+ cap_user_time_zero : 1, /* The time_zero field is used */
+ cap_____res : 59;
+ };
+ };
+
+ /*
+ * If cap_user_rdpmc this field provides the bit-width of the value
+ * read using the rdpmc() or equivalent instruction. This can be used
+ * to sign extend the result like:
+ *
+ * pmc <<= 64 - width;
+ * pmc >>= 64 - width; // signed shift right
+ * count += pmc;
+ */
+ __u16 pmc_width;
+
+ /*
+ * If cap_usr_time the below fields can be used to compute the time
+ * delta since time_enabled (in ns) using rdtsc or similar.
+ *
+ * u64 quot, rem;
+ * u64 delta;
+ *
+ * quot = (cyc >> time_shift);
+ * rem = cyc & (((u64)1 << time_shift) - 1);
+ * delta = time_offset + quot * time_mult +
+ * ((rem * time_mult) >> time_shift);
+ *
+ * Where time_offset,time_mult,time_shift and cyc are read in the
+ * seqcount loop described above. This delta can then be added to
+ * enabled and possible running (if index), improving the scaling:
+ *
+ * enabled += delta;
+ * if (index)
+ * running += delta;
+ *
+ * quot = count / running;
+ * rem = count % running;
+ * count = quot * enabled + (rem * enabled) / running;
+ */
+ __u16 time_shift;
+ __u32 time_mult;
+ __u64 time_offset;
+ /*
+ * If cap_usr_time_zero, the hardware clock (e.g. TSC) can be calculated
+ * from sample timestamps.
+ *
+ * time = timestamp - time_zero;
+ * quot = time / time_mult;
+ * rem = time % time_mult;
+ * cyc = (quot << time_shift) + (rem << time_shift) / time_mult;
+ *
+ * And vice versa:
+ *
+ * quot = cyc >> time_shift;
+ * rem = cyc & (((u64)1 << time_shift) - 1);
+ * timestamp = time_zero + quot * time_mult +
+ * ((rem * time_mult) >> time_shift);
+ */
+ __u64 time_zero;
+ __u32 size; /* Header size up to __reserved[] fields. */
+
+ /*
+ * Hole for extension of the self monitor capabilities
+ */
+
+ __u8 __reserved[118*8+4]; /* align to 1k. */
+
+ /*
+ * Control data for the mmap() data buffer.
+ *
+ * User-space reading the @data_head value should issue an smp_rmb(),
+ * after reading this value.
+ *
+ * When the mapping is PROT_WRITE the @data_tail value should be
+ * written by userspace to reflect the last read data, after issueing
+ * an smp_mb() to separate the data read from the ->data_tail store.
+ * In this case the kernel will not over-write unread data.
+ *
+ * See perf_output_put_handle() for the data ordering.
+ *
+ * data_{offset,size} indicate the location and size of the perf record
+ * buffer within the mmapped area.
+ */
+ __u64 data_head; /* head in the data section */
+ __u64 data_tail; /* user-space written tail */
+ __u64 data_offset; /* where the buffer starts */
+ __u64 data_size; /* data buffer size */
+
+ /*
+ * AUX area is defined by aux_{offset,size} fields that should be set
+ * by the userspace, so that
+ *
+ * aux_offset >= data_offset + data_size
+ *
+ * prior to mmap()ing it. Size of the mmap()ed area should be aux_size.
+ *
+ * Ring buffer pointers aux_{head,tail} have the same semantics as
+ * data_{head,tail} and same ordering rules apply.
+ */
+ __u64 aux_head;
+ __u64 aux_tail;
+ __u64 aux_offset;
+ __u64 aux_size;
+};
+#endif // PERF_ATTR_SIZE_VER5
+#endif // PERF_ATTR_SIZE_VER5_BUNDLE
+
struct target_ops;
#if HAVE_LINUX_PERF_EVENT_H
Index: gdb-7.11.90.20160904/gdb/configure
===================================================================
--- gdb-7.11.90.20160904.orig/gdb/configure 2016-09-04 20:11:47.238274285 +0200
+++ gdb-7.11.90.20160904/gdb/configure 2016-09-04 20:11:47.378275519 +0200
@@ -10601,7 +10601,7 @@
#include <linux/perf_event.h>
#ifndef PERF_ATTR_SIZE_VER5
-# error
+// error // PERF_ATTR_SIZE_VER5_BUNDLE is not available here - Fedora+RHEL
#endif
_ACEOF
Index: gdb-7.11.90.20160904/gdb/configure.ac
===================================================================
--- gdb-7.11.90.20160904.orig/gdb/configure.ac 2016-09-04 20:11:47.238274285 +0200
+++ gdb-7.11.90.20160904/gdb/configure.ac 2016-09-04 20:11:47.379275528 +0200
@@ -1461,7 +1461,7 @@
AC_PREPROC_IFELSE(AC_LANG_SOURCE([[
#include <linux/perf_event.h>
#ifndef PERF_ATTR_SIZE_VER5
-# error
+// error // PERF_ATTR_SIZE_VER5_BUNDLE is not available here - Fedora+RHEL
#endif
]]), [perf_event=yes], [perf_event=no])
if test "$perf_event" != yes; then
Index: gdb-7.11.90.20160904/gdb/gdb.c
===================================================================
--- gdb-7.11.90.20160904.orig/gdb/gdb.c 2016-09-04 04:02:13.000000000 +0200
+++ gdb-7.11.90.20160904/gdb/gdb.c 2016-09-04 20:12:28.018633552 +0200
@@ -20,11 +20,19 @@
#include "main.h"
#include "interps.h"
+#ifdef PERF_ATTR_SIZE_VER5_BUNDLE
+extern "C" void __libipt_init(void);
+#endif
+
int
main (int argc, char **argv)
{
struct captured_main_args args;
+#ifdef PERF_ATTR_SIZE_VER5_BUNDLE
+ __libipt_init();
+#endif
+
memset (&args, 0, sizeof args);
args.argc = argc;
args.argv = argv;

View File

@ -0,0 +1,226 @@
http://sourceware.org/ml/gdb-patches/2010-12/msg00263.html
Index: gdb-7.2/gdb/testsuite/gdb.cp/pr11734-1.cc
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2/gdb/testsuite/gdb.cp/pr11734-1.cc 2011-02-03 22:28:01.000000000 +0100
@@ -0,0 +1,30 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2010 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ Please email any bugs, comments, and/or additions to this file to:
+ bug-gdb@gnu.org */
+
+#include "pr11734.h"
+
+int
+main ()
+{
+ pr11734 *p = new pr11734;
+ p->foo ();
+ return 0;
+}
+
Index: gdb-7.2/gdb/testsuite/gdb.cp/pr11734-2.cc
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2/gdb/testsuite/gdb.cp/pr11734-2.cc 2011-02-03 22:28:01.000000000 +0100
@@ -0,0 +1,27 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2010 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ Please email any bugs, comments, and/or additions to this file to:
+ bug-gdb@gnu.org */
+
+#include "pr11734.h"
+
+void
+pr11734::foo(void)
+{
+}
+
Index: gdb-7.2/gdb/testsuite/gdb.cp/pr11734-3.cc
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2/gdb/testsuite/gdb.cp/pr11734-3.cc 2011-02-03 22:28:01.000000000 +0100
@@ -0,0 +1,27 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2010 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ Please email any bugs, comments, and/or additions to this file to:
+ bug-gdb@gnu.org */
+
+#include "pr11734.h"
+
+void
+pr11734::foo (int a)
+{
+}
+
Index: gdb-7.2/gdb/testsuite/gdb.cp/pr11734-4.cc
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2/gdb/testsuite/gdb.cp/pr11734-4.cc 2011-02-03 22:28:01.000000000 +0100
@@ -0,0 +1,27 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2010 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ Please email any bugs, comments, and/or additions to this file to:
+ bug-gdb@gnu.org */
+
+#include "pr11734.h"
+
+void
+pr11734::foo (char *a)
+{
+}
+
Index: gdb-7.2/gdb/testsuite/gdb.cp/pr11734.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2/gdb/testsuite/gdb.cp/pr11734.exp 2011-02-03 22:28:01.000000000 +0100
@@ -0,0 +1,55 @@
+# Copyright 2010 Free Software Foundation, Inc.
+#
+# Contributed by Red Hat, originally written by Keith Seitz.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+if { [skip_cplus_tests] } { continue }
+
+set testfile "pr11734"
+set class $testfile
+
+set srcfiles {}
+for {set i 1} {$i < 5} {incr i} {
+ lappend srcfiles $testfile-$i.cc
+}
+
+prepare_for_testing pr11734 $testfile $srcfiles {c++ debug}
+
+if {![runto_main]} {
+ perror "couldn't run to breakpoint"
+ continue
+}
+
+# An array holding the overload types for the method pr11734::foo. The
+# first element is the overloaded method parameter. The second element
+# is the expected source file number, e.g. "pr11734-?.cc".
+array set tests {
+ "char*" 4
+ "int" 3
+ "" 2
+}
+
+# Test each overload instance twice: once quoted, once unquoted
+foreach ovld [array names tests] {
+ set method "${class}::foo\($ovld\)"
+ set result "Breakpoint (\[0-9\]).*file .*/$class-$tests($ovld).*"
+ gdb_test "break $method" $result
+ gdb_test "break '$method'" $result
+}
+
+gdb_exit
+return 0
Index: gdb-7.2/gdb/testsuite/gdb.cp/pr11734.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2/gdb/testsuite/gdb.cp/pr11734.h 2011-02-03 22:28:01.000000000 +0100
@@ -0,0 +1,28 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2010 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ Please email any bugs, comments, and/or additions to this file to:
+ bug-gdb@gnu.org */
+
+class pr11734
+{
+ public:
+ void foo ();
+ void foo (int);
+ void foo (char *);
+};
+

View File

@ -0,0 +1,95 @@
http://sourceware.org/ml/gdb-patches/2010-12/msg00264.html
Index: gdb-7.2/gdb/testsuite/gdb.cp/pr12273.cc
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2/gdb/testsuite/gdb.cp/pr12273.cc 2011-02-03 22:31:01.000000000 +0100
@@ -0,0 +1,37 @@
+/* This test case is part of GDB, the GNU debugger.
+
+ Copyright 2010 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+template <typename T>
+class GDB
+{
+ public:
+ static int simple (void) { return 0; }
+ static int harder (T a) { return 1; }
+ template <typename X>
+ static X even_harder (T a) { return static_cast<X> (a); }
+ int operator == (GDB const& other)
+ { return 1; }
+};
+
+int main(int argc, char **argv)
+{
+ GDB<int> a, b;
+ if (a == b)
+ return GDB<char>::harder('a') + GDB<int>::harder(3)
+ + GDB<char>::even_harder<int> ('a');
+ return GDB<int>::simple ();
+}
Index: gdb-7.2/gdb/testsuite/gdb.cp/pr12273.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2/gdb/testsuite/gdb.cp/pr12273.exp 2011-02-03 22:31:01.000000000 +0100
@@ -0,0 +1,46 @@
+# Copyright 2010 Free Software Foundation, Inc.
+#
+# Contributed by Red Hat, originally written by Keith Seitz.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+if {[skip_cplus_tests]} { continue }
+
+set testfile "pr12273"
+# Do NOT compile with debug flag.
+prepare_for_testing pr12273 $testfile $testfile.cc {c++}
+
+gdb_test_no_output "set language c++"
+
+# A list of minimal symbol names to check.
+# Note that GDB<char>::even_harder<int>(char) is quoted and includes
+# the return type. This is necessary because this is the demangled name
+# of the minimal symbol.
+set min_syms [list \
+ "GDB<int>::operator ==" \
+ "GDB<int>::operator==(GDB<int> const&)" \
+ "GDB<char>::harder(char)" \
+ "GDB<int>::harder(int)" \
+ {"int GDB<char>::even_harder<int>(char)"} \
+ "GDB<int>::simple()"]
+
+foreach sym $min_syms {
+ if {[gdb_breakpoint $sym]} {
+ pass "setting breakpoint at $sym"
+ }
+}
+
+gdb_exit

View File

@ -26,7 +26,7 @@
+
+set testfile "powerpc-power7"
+set srcfile ${testfile}.s
+set objfile ${objdir}/${subdir}/${testfile}.o
+set objfile [standard_output_file ${testfile}.o]
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } {
+ untested "PowerPC Power7 instructions disassembly"

View File

@ -1,8 +1,8 @@
Index: gdb-7.9.50.20150520/gdb/doc/python.texi
Index: gdb-7.11.50.20160630/gdb/doc/python.texi
===================================================================
--- gdb-7.9.50.20150520.orig/gdb/doc/python.texi 2015-05-31 17:57:12.431593983 +0200
+++ gdb-7.9.50.20150520/gdb/doc/python.texi 2015-05-31 17:57:14.654607708 +0200
@@ -229,6 +229,14 @@ returned as a string. The default is @c
--- gdb-7.11.50.20160630.orig/gdb/doc/python.texi 2016-07-03 16:30:37.009338358 +0200
+++ gdb-7.11.50.20160630/gdb/doc/python.texi 2016-07-03 16:30:42.812387867 +0200
@@ -229,6 +229,14 @@
return value is @code{None}. If @var{to_string} is @code{True}, the
@value{GDBN} virtual terminal will be temporarily set to unlimited width
and height, and its pagination will be disabled; @pxref{Screen Size}.
@ -17,11 +17,11 @@ Index: gdb-7.9.50.20150520/gdb/doc/python.texi
@end defun
@findex gdb.breakpoints
Index: gdb-7.9.50.20150520/gdb/python/python-internal.h
Index: gdb-7.11.50.20160630/gdb/python/python-internal.h
===================================================================
--- gdb-7.9.50.20150520.orig/gdb/python/python-internal.h 2015-05-31 17:57:12.432593989 +0200
+++ gdb-7.9.50.20150520/gdb/python/python-internal.h 2015-05-31 17:57:14.654607708 +0200
@@ -142,6 +142,8 @@ typedef int Py_ssize_t;
--- gdb-7.11.50.20160630.orig/gdb/python/python-internal.h 2016-07-03 16:30:37.010338366 +0200
+++ gdb-7.11.50.20160630/gdb/python/python-internal.h 2016-07-03 16:30:42.812387867 +0200
@@ -140,6 +140,8 @@
#define PyGILState_Release(ARG) ((void)(ARG))
#define PyEval_InitThreads()
#define PyThreadState_Swap(ARG) ((void)(ARG))
@ -30,11 +30,11 @@ Index: gdb-7.9.50.20150520/gdb/python/python-internal.h
#define PyEval_ReleaseLock()
#endif
Index: gdb-7.9.50.20150520/gdb/python/python.c
Index: gdb-7.11.50.20160630/gdb/python/python.c
===================================================================
--- gdb-7.9.50.20150520.orig/gdb/python/python.c 2015-05-31 17:57:14.656607720 +0200
+++ gdb-7.9.50.20150520/gdb/python/python.c 2015-05-31 18:02:08.891424227 +0200
@@ -627,13 +627,18 @@ execute_gdb_command (PyObject *self, PyO
--- gdb-7.11.50.20160630.orig/gdb/python/python.c 2016-07-03 16:30:37.011338375 +0200
+++ gdb-7.11.50.20160630/gdb/python/python.c 2016-07-03 16:31:16.324673783 +0200
@@ -619,13 +619,18 @@
{
const char *arg;
PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
@ -57,7 +57,7 @@ Index: gdb-7.9.50.20150520/gdb/python/python.c
return NULL;
from_tty = 0;
@@ -654,12 +659,28 @@ execute_gdb_command (PyObject *self, PyO
@@ -646,6 +651,15 @@
to_string = cmp;
}
@ -73,8 +73,9 @@ Index: gdb-7.9.50.20150520/gdb/python/python.c
TRY
{
/* Copy the argument text in case the command modifies it. */
char *copy = xstrdup (arg);
@@ -653,6 +667,13 @@
struct cleanup *cleanup = make_cleanup (xfree, copy);
struct interp *interp;
+ /* In the case of long running GDB commands, allow the user to
+ release the Python GIL acquired by Python. Restore the GIL
@ -83,10 +84,10 @@ Index: gdb-7.9.50.20150520/gdb/python/python.c
+ if (release_gil)
+ state = PyEval_SaveThread();
+
make_cleanup_restore_integer (&interpreter_async);
interpreter_async = 0;
make_cleanup_restore_integer (&current_ui->async);
current_ui->async = 0;
@@ -672,11 +693,23 @@ execute_gdb_command (PyObject *self, PyO
@@ -671,11 +692,23 @@
execute_command (copy, from_tty);
}
@ -111,12 +112,11 @@ Index: gdb-7.9.50.20150520/gdb/python/python.c
}
END_CATCH
Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.python/py-gil-mthread.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.9.50.20150520/gdb/testsuite/gdb.python/py-gil-mthread.c 2015-05-31 17:57:14.656607720 +0200
@@ -0,0 +1,12 @@
--- /dev/null 2016-09-12 21:37:05.332693927 +0200
+++ gdb-7.11.90.20160907/gdb/testsuite/gdb.python/py-gil-mthread.c 2016-09-12 21:51:53.750317187 +0200
@@ -0,0 +1,13 @@
+#include <stdio.h>
+#include <unistd.h>
+
+int
+main (void)
@ -128,10 +128,8 @@ Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.python/py-gil-mthread.c
+ printf ("Sleeping %d\n", i);
+ }
+}
Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.python/py-gil-mthread.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.9.50.20150520/gdb/testsuite/gdb.python/py-gil-mthread.exp 2015-05-31 17:57:14.657607726 +0200
--- /dev/null 2016-09-12 21:37:05.332693927 +0200
+++ gdb-7.11.90.20160907/gdb/testsuite/gdb.python/py-gil-mthread.exp 2016-09-12 21:52:38.605750360 +0200
@@ -0,0 +1,69 @@
+# Copyright (C) 2014 Free Software Foundation, Inc.
+
@ -170,7 +168,7 @@ Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.python/py-gil-mthread.exp
+set sleeping_last -1
+set hello_last 0
+set minimal 5
+gdb_test_multiple "python execfile('$srcdir/$subdir/$srcfile2')" $test {
+gdb_test_multiple "python exec (open ('$srcdir/$subdir/$srcfile2').read ())" $test {
+ -re "Error: unable to start thread\r\n" {
+ fail $test
+ # Not $gdb_prompt-synced!
@ -202,12 +200,13 @@ Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.python/py-gil-mthread.exp
+ }
+ }
+}
Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.python/py-gil-mthread.py
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.9.50.20150520/gdb/testsuite/gdb.python/py-gil-mthread.py 2015-05-31 17:57:14.657607726 +0200
@@ -0,0 +1,22 @@
+import thread
--- /dev/null 2016-09-12 21:37:05.332693927 +0200
+++ gdb-7.11.90.20160907/gdb/testsuite/gdb.python/py-gil-mthread.py 2016-09-12 21:59:02.668459286 +0200
@@ -0,0 +1,28 @@
+try:
+ import thread
+except:
+ import _thread
+import time
+import gdb
+
@ -217,15 +216,18 @@ Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.python/py-gil-mthread.py
+ while count < 10:
+ time.sleep(1)
+ count += 1
+ print "Hello (", count, ")"
+ print ("Hello (", count, ")")
+
+# Create a threads a continue
+try:
+ thread.start_new_thread( print_thread_hello, ())
+ thread.start_new_thread (print_thread_hello, ())
+ gdb.execute ("continue", release_gil=True)
+
+except:
+ print "Error: unable to start thread"
+ try:
+ _thread.start_new_thread (print_thread_hello, ())
+ gdb.execute ("continue", release_gil=True)
+ except:
+ print ("Error: unable to start thread")
+
+while 1:
+ pass

View File

@ -1,17 +1,18 @@
diff -dup -rup gdb-7.10.50.20160106-orig/gdb/event-top.c gdb-7.10.50.20160106/gdb/event-top.c
--- gdb-7.10.50.20160106-orig/gdb/event-top.c 2016-01-09 14:51:02.324243506 +0100
+++ gdb-7.10.50.20160106/gdb/event-top.c 2016-01-09 14:51:33.029434121 +0100
@@ -1033,6 +1033,13 @@ set_async_editing_command (char *args, i
void
gdb_setup_readline (void)
Index: gdb-7.11.50.20160630/gdb/event-top.c
===================================================================
--- gdb-7.11.50.20160630.orig/gdb/event-top.c 2016-07-03 16:32:36.108342159 +0200
+++ gdb-7.11.50.20160630/gdb/event-top.c 2016-07-03 16:32:59.787523733 +0200
@@ -1252,6 +1252,13 @@
{
struct ui *ui = current_ui;
+#ifdef NEED_RL_STATE_FEDORA_GDB
+ /* 6.2 regression: no longed asks for --more--
+ gdb.base/readline-ask.exp
+ https://bugzilla.redhat.com/show_bug.cgi?id=701131 */
+ RL_SETSTATE (RL_STATE_FEDORA_GDB);
+
+#endif
+
/* This function is a noop for the sync case. The assumption is
that the sync setup is ALL done in gdb_init, and we would only
mess it up here. The sync stuff should really go away over

View File

@ -0,0 +1,162 @@
Original message by Tom Tromey:
<https://sourceware.org/ml/gdb-patches/2012-03/msg00955.html>
Message-ID: <871uoc1va3.fsf@fleche.redhat.com>
Comment from Sergio Durigan Junior:
In order to correctly test this patch, I wrote a testcase based on Jan
Kratochvil's <gdb/testsuite/gdb.base/gcore-excessive-memory.exp>. The
testcase, which can be seen below, tests GDB in order to see if the
amount of memory being leaked is minimal, as requested in the bugzilla.
It is hard to define what "minimum" is, so I ran the testcase on all
supported RHEL architectures and came up with an average.
commit cc0265cdda9dc7e8665e8bfcf5b4477489daf27c
Author: Tom Tromey <tromey@redhat.com>
Date: Wed Mar 28 17:38:08 2012 +0000
* python/py-inferior.c (infpy_read_memory): Remove cleanups and
explicitly free 'buffer' on exit paths. Decref 'membuf_object'
before returning.
Index: gdb-7.2/gdb/testsuite/gdb.python/py-gdb-rhbz1007614-memleak-infpy_read_memory.c
===================================================================
--- /dev/null
+++ gdb-7.2/gdb/testsuite/gdb.python/py-gdb-rhbz1007614-memleak-infpy_read_memory.c
@@ -0,0 +1,27 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2014 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+static struct x
+ {
+ char unsigned u[4096];
+ } x, *px = &x;
+
+int
+main (int argc, char *argv[])
+{
+ return 0;
+}
Index: gdb-7.2/gdb/testsuite/gdb.python/py-gdb-rhbz1007614-memleak-infpy_read_memory.exp
===================================================================
--- /dev/null
+++ gdb-7.2/gdb/testsuite/gdb.python/py-gdb-rhbz1007614-memleak-infpy_read_memory.exp
@@ -0,0 +1,68 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+set testfile py-gdb-rhbz1007614-memleak-infpy_read_memory
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+
+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } {
+ return -1
+}
+
+if { [skip_python_tests] } { continue }
+
+set pid_of_gdb [exp_pid -i [board_info host fileid]]
+
+proc memory_v_pages_get {} {
+ global pid_of_gdb
+ set fd [open "/proc/$pid_of_gdb/statm"]
+ gets $fd line
+ close $fd
+ # number of pages of virtual memory
+ scan $line "%d" drs
+ return $drs
+}
+
+if { ![runto_main] } {
+ untested $testfile.exp
+ return -1
+}
+
+set remote_python_file [remote_download host ${srcdir}/${subdir}/${testfile}.py]
+
+gdb_test "source ${remote_python_file}" ""
+
+gdb_test "hello-world" ""
+
+set kbytes_before [memory_v_pages_get]
+verbose -log "kbytes_before = $kbytes_before"
+
+gdb_test "hello-world" ""
+
+set kbytes_after [memory_v_pages_get]
+verbose -log "kbytes_after = $kbytes_after"
+
+set kbytes_diff [expr $kbytes_after - $kbytes_before]
+verbose -log "kbytes_diff = $kbytes_diff"
+
+# The value "1000" was calculated by running a few GDB sessions with this
+# testcase, and seeing how much (in average) the memory consumption
+# increased after the "hello-world" command issued above. The average
+# was around 500 bytes, so I chose 1000 as a high estimate.
+if { $kbytes_diff > 1000 } {
+ fail "there is a memory leak on GDB (RHBZ 1007614)"
+} else {
+ pass "there is not a memory leak on GDB (RHBZ 1007614)"
+}
Index: gdb-7.2/gdb/testsuite/gdb.python/py-gdb-rhbz1007614-memleak-infpy_read_memory.py
===================================================================
--- /dev/null
+++ gdb-7.2/gdb/testsuite/gdb.python/py-gdb-rhbz1007614-memleak-infpy_read_memory.py
@@ -0,0 +1,30 @@
+# Copyright (C) 2014 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+class HelloWorld (gdb.Command):
+ """Greet the whole world."""
+
+ def __init__ (self):
+ super (HelloWorld, self).__init__ ("hello-world",
+ gdb.COMMAND_OBSCURE)
+
+ def invoke (self, arg, from_tty):
+ px = gdb.parse_and_eval("px")
+ core = gdb.inferiors()[0]
+ for i in range(256 * 1024):
+ chunk = core.read_memory(px, 4096)
+ print "Hello, World!"
+
+HelloWorld ()

View File

@ -0,0 +1,226 @@
These testcases have been created by compiling glibc-2.17-78 on
RHEL-7.1 s390x/ppc64 boxes, and then taking the "select.o" file
present at $builddir/misc/select.o.
Index: gdb-7.6.1/gdb/testsuite/gdb.arch/s390x-prologue-skip.exp
===================================================================
--- /dev/null
+++ gdb-7.6.1/gdb/testsuite/gdb.arch/s390x-prologue-skip.exp
@@ -0,0 +1,34 @@
+# Copyright 2015 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if { ![istarget s390x-*linux-*] || ![is_lp64_target] } {
+ verbose "Skipping s390x-prologue-skip.exp"
+ return
+}
+
+set testfile "s390x-prologue-skip"
+set uufile "${srcdir}/${subdir}/${testfile}.o.uu"
+set ofile "${srcdir}/${subdir}/${testfile}.o"
+
+if { [catch "system \"uudecode -o ${ofile} ${uufile}\"" ] != 0 } {
+ untested "failed uudecode"
+ return -1
+}
+
+gdb_exit
+gdb_start
+gdb_load $ofile
+
+gdb_test "break select" "Breakpoint $decimal at 0x48: file ../sysdeps/unix/syscall-template.S, line 81." "breakpoint on select"
Index: gdb-7.6.1/gdb/testsuite/gdb.arch/s390x-prologue-skip.o.uu
===================================================================
--- /dev/null
+++ gdb-7.6.1/gdb/testsuite/gdb.arch/s390x-prologue-skip.o.uu
@@ -0,0 +1,64 @@
+begin 644 s390x-prologue-skip.o.uu
+M?T5,1@("`0`````````````!`!8````!````````````````````````````
+M``+```````!```````!``!(`#^LE\!``).O?\&@`)+D$`.^G^_]@X^#P```D
+MP.4`````N00``NLE\+``!`J.N00`TKD$`"#`Y0````"Y!``MZ]_Q"``$I_0`
+M"L`0`````+\/$`"G=/_7"HZG2?`!N2$`),"T``````?^````5@`"````.0$!
+M^PX-``$!`0$````!```!+BXO<WES9&5P<R]U;FEX``!S>7-C86QL+71E;7!L
+M871E+E,``0`````)`@```````````]```0)F$P("``$!````CP`"``````@!
+M```````````````````````````N+B]S>7-D97!S+W5N:7@O<WES8V%L;"UT
+M96UP;&%T92Y3`"]R;V]T+V=L:6)C+V=L:6)C+3(N,3<M-S@N96PW+G-R8R]G
+M;&EB8RTR+C$W+6,W-3AA-C@V+VUI<V,`1TY5($%3(#(N,C,N-3(N,"XQ`(`!
+M`1$`$`81`1(!`P@;""4($P4`````````````````+``"``````@`````````
+M`````````````````&@`````````````````````````%``````!>E(``7@.
+M`1L,#Z`!````````&````!P`````````1`!,CP6.!HT'2`[``@```!`````X
+M`````````"```````"YS>6UT86(`+G-T<G1A8@`N<VAS=')T86(`+G)E;&$N
+M=&5X=``N9&%T80`N8G-S`"YN;W1E+D=.52US=&%C:P`N<F5L82YD96)U9U]L
+M:6YE`"YR96QA+F1E8G5G7VEN9F\`+F1E8G5G7V%B8G)E=@`N<F5L82YD96)U
+M9U]A<F%N9V5S`"YR96QA+F5H7V9R86UE````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````(`````$`````````!@```````````````````$``````````:```
+M``````````````````0``````````````!L````$````````````````````
+M``````````F``````````&`````0`````0`````````(`````````!@````F
+M`````0`````````#````````````````````J```````````````````````
+M````````!```````````````+`````@``````````P``````````````````
+M`*@```````````````````````````````0``````````````#$````!````
+M``````````````````````````"H```````````````````````````````!
+M``````````````!&`````0``````````````````````````````J```````
+M``!:`````````````````````0``````````````00````0`````````````
+M````````````````">``````````&````!`````&``````````@`````````
+M&````%<````!``````````````````````````````$"`````````),`````
+M```````````````!``````````````!2````!```````````````````````
+M```````)^`````````!@````$`````@`````````"``````````8````8P``
+M``$``````````````````````````````94`````````%```````````````
+M``````$``````````````'8````!``````````````````````````````&P
+M`````````#`````````````````````0``````````````!Q````!```````
+M```````````````````````*6``````````P````$`````L`````````"```
+M```````8````B@````$``````````@```````````````````>``````````
+M2`````````````````````@``````````````(4````$````````````````
+M``````````````J(`````````#`````0````#0`````````(`````````!@`
+M```1`````P`````````````````````````````"*`````````"4````````
+M`````````````0```````````````0````(`````````````````````````
+M````!T`````````!L````!$````*``````````@`````````&`````D````#
+M``````````````````````````````CP`````````(X`````````````````
+M```!`````````````````````````````````````````````````P```0``
+M`````````````````````````P```P```````````````````````````P``
+M!````````````````````````````P``"```````````````````````````
+M`P``"@```````````````````````````P``!@``````````````````````
+M`````P``"P```````````````````````````P``#0``````````````````
+M`````````P``!0`````````````````````````!$```````````````````
+M```````````;$``````````````````````````````V$@```0````````!(
+M`````````"`````_$`````````````````````````````!7$@```0``````
+M``!6`````````!````!I$`````````````````````````````!Y(@```0``
+M``````!(`````````"````"'(@```0````````!(`````````"``7U]L:6)C
+M7V5N86)L95]A<WEN8V-A;F-E;`!?7VQI8F-?9&ES86)L95]A<WEN8V-A;F-E
+M;`!?7W-E;&5C=`!?7VQI8F-?;75L=&EP;&5?=&AR96%D<P!?7W-E;&5C=%]N
+M;V-A;F-E;`!?7W-Y<V-A;&Q?97)R;W(`7U]L:6)C7W-E;&5C=`!S96QE8W0`
+M````````````'`````H````3``````````(`````````-@````L````3````
+M``````(`````````2@````T````3``````````(`````````8@````\````3
+M``````````(`````````1@````$````6````````````````````!@````4`
+M```$````````````````````#`````8````$````````````````````$```
+M``$````6````````````````````&`````$````6`````````&@`````````
+M!@````0````$````````````````````$`````$````6````````````````
+L````(`````$````%````````````````````/`````$````%`````````$@`
+`
+end
Index: gdb-7.6.1/gdb/testsuite/gdb.arch/ppc64-prologue-skip.exp
===================================================================
--- /dev/null
+++ gdb-7.6.1/gdb/testsuite/gdb.arch/ppc64-prologue-skip.exp
@@ -0,0 +1,34 @@
+# Copyright 2015 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if { ![istarget powerpc64-*linux-*] || ![is_lp64_target] } {
+ verbose "Skipping ppc64-prologue-skip.exp"
+ return
+}
+
+set testfile "ppc64-prologue-skip"
+set uufile "${srcdir}/${subdir}/${testfile}.o.uu"
+set ofile "${srcdir}/${subdir}/${testfile}.o"
+
+if { [catch "system \"uudecode -o ${ofile} ${uufile}\"" ] != 0 } {
+ untested "failed uudecode"
+ return -1
+}
+
+gdb_exit
+gdb_start
+gdb_load $ofile
+
+gdb_test "break ___newselect_nocancel" "Breakpoint $decimal at 0xc: file ../sysdeps/unix/syscall-template.S, line 81." "breakpoint on ___newselect_nocancel"
Index: gdb-7.6.1/gdb/testsuite/gdb.arch/ppc64-prologue-skip.o.uu
===================================================================
--- /dev/null
+++ gdb-7.6.1/gdb/testsuite/gdb.arch/ppc64-prologue-skip.o.uu
@@ -0,0 +1,70 @@
+begin 644 ppc64-skip-prologue.o.uu
+M?T5,1@("`0`````````````!`!4````!````````````````````````````
+M``-(``````!```````!``!0`$8%-B-`L"@``0,(`-#@``(Y$```"3.,`('P(
+M`J;X`0`0^"'_D4@```%@````Z`$`@#@A`'!\"`.F3H``(/@A_X%]*`*F^2$`
+MD/CA`-#XP0#(^*$`P/B!`+CX80"P2````6````#X80!PZ.$`T.C!`,CHH0#`
+MZ($`N.AA`+`X``".1````GP``";X80!X^`$`B.AA`'!(```!8````.DA`)#H
+M`0"(Z&$`>'TH`Z9\#_$@."$`@$SC`"!+__]@```````,($``````````O``(
+M7U]S96QE8W0```````````````````````````!6``(````Y!`'[#@T``0$!
+M`0````$```$N+B]S>7-D97!S+W5N:7@``'-Y<V-A;&PM=&5M<&QA=&4N4P`!
+M``````D"```````````#T``!`BT3`@D``0$```"/``(`````"`$`````````
+M`````````````````"XN+W-Y<V1E<',O=6YI>"]S>7-C86QL+71E;7!L871E
+M+E,`+W)O;W0O9VQI8F,O9VQI8F,M,BXQ-RTW."YE;#<N<W)C+V=L:6)C+3(N
+M,3<M8S<U.&$V.#8O;6ES8P!'3E4@05,@,BXR,RXU,BXP+C$`@`$!$0`0!A$!
+M$@$#"!L()0@3!0`````````````````L``(`````"```````````````````
+M````````V``````````````````````````0``````%Z4@`$>$$!&PP!````
+M`#`````8`````````+P`20YP$4%^1`X`009!0@Z``4(107Y2$49_20X`!D$&
+M1@``````+G-Y;71A8@`N<W1R=&%B`"YS:'-T<G1A8@`N<F5L82YT97AT`"YD
+M871A`"YB<W,`+G)E;&$N;W!D`"YN;W1E+D=.52US=&%C:P`N<F5L82YD96)U
+M9U]L:6YE`"YR96QA+F1E8G5G7VEN9F\`+F1E8G5G7V%B8G)E=@`N<F5L82YD
+M96)U9U]A<F%N9V5S`"YR96QA+F5H7V9R86UE````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````"`````!``````````8```````````````````!``````````-@`
+M```````````````````$```````````````;````!```````````````````
+M```````````*>`````````!(````$@````$`````````"``````````8````
+M)@````$``````````P```````````````````1@`````````````````````
+M``````````$``````````````"P````(``````````,`````````````````
+M``$8```````````````````````````````!```````````````V`````0``
+M```````#```````````````````!&``````````0````````````````````
+M"```````````````,0````0`````````````````````````````"L``````
+M````,````!(````%``````````@`````````&````#L````!````````````
+M``````````````````$H```````````````````````````````!````````
+M``````!0`````0`````````````````````````````!*`````````!:````
+M`````````````````0``````````````2P````0`````````````````````
+M````````"O``````````&````!(````(``````````@`````````&````&$`
+M```!``````````````````````````````&"`````````),`````````````
+M```````!``````````````!<````!``````````````````````````````+
+M"`````````!@````$@````H`````````"``````````8````;0````$`````
+M`````````````````````````A4`````````%`````````````````````$`
+M`````````````(`````!``````````````````````````````(P````````
+M`#`````````````````````0``````````````![````!```````````````
+M```````````````+:``````````P````$@````T`````````"``````````8
+M````E`````$``````````@```````````````````F``````````2```````
+M``````````````@``````````````(\````$````````````````````````
+M``````N8`````````!@````2````#P`````````(`````````!@````1````
+M`P`````````````````````````````"J`````````">````````````````
+M`````0```````````````0````(`````````````````````````````"$@`
+M```````!L````!,````+``````````@`````````&`````D````#````````
+M``````````````````````GX`````````'H````````````````````!````
+M`````````````````````````````````````````````P```0``````````
+M`````````````````P```P```````````````````````````P``!```````
+M`````````````````````P``!0```````````````````````````P``"@``
+M`````````````````````````P``#````````````````````````````P``
+M"````````````````````````````P``#0``````````````````````````
+M`P``#P```````````````````````````P``!P``````````````````````
+M```!$@``!0```````````````````-@````*$@```0`````````,````````
+M`#`````@$``````````````````````````````P$```````````````````
+M``````````!*$`````````````````````````````!E(@``!0``````````
+M`````````-@```!S(@``!0```````````````````-@`7U]S96QE8W0`7U]?
+M;F5W<V5L96-T7VYO8V%N8V5L`%]?<WES8V%L;%]E<G)O<@!?7VQI8F-?96YA
+M8FQE7V%S>6YC8V%N8V5L`%]?;&EB8U]D:7-A8FQE7V%S>6YC8V%N8V5L`%]?
+M;&EB8U]S96QE8W0`<V5L96-T```````````````````D````#0````H`````
+M``````````````!<````#@````H```````````````````"4````#P````H`
+M`````````````````````````0```"8````````````````````(````````
+M`#,```````````````````!&`````0```"8````````````````````&````
+M!@````$````````````````````,````!P````$````````````````````0
+M`````0```"8````````````````````8`````0```"8`````````V```````
+M```&````!0````$````````````````````0`````0```"8`````````````
+6```````<`````0```!H`````````````
+`
+end

View File

@ -0,0 +1,114 @@
URL: <https://sourceware.org/ml/gdb-patches/2013-05/msg00364.html>
Message-ID: <1368136582.30058.7.camel@soleil>
From: Philippe Waroquiers <philippe dot waroquiers at skynet dot be>
To: gdb-patches at sourceware dot org
Subject: RFA: fix gdb_assert caused by 'catch signal ...' and fork
Date: Thu, 09 May 2013 23:56:22 +0200
The attached patch fixes a gdb_assert caused by the combination of catch
signal and fork:
break-catch-sig.c:152: internal-error: signal_catchpoint_remove_location: Assertion `signal_catch_counts[iter] > 0' failed.
The problem is that the signal_catch_counts is decremented by detach_breakpoints.
The fix consists in not detaching breakpoint locations of type bp_loc_other.
The patch introduces a new test.
Comments by Sergio Durigan Junior:
I addded a specific testcase for this patch, which tests exactly the
issue that the customer is facing. This patch does not solve the
whole problem of catching a syscall and forking (for more details,
see <https://sourceware.org/bugzilla/show_bug.cgi?id=13457>,
specifically comment #3), but it solves the issue reported by the
customer.
I also removed the original testcase of this patch, because it
relied on "catch signal", which is a command that is not implemented
in this version of GDB.
commit bd9673a4ded96ea5c108601501c8e59003ea1be6
Author: Philippe Waroquiers <philippe@sourceware.org>
Date: Tue May 21 18:47:05 2013 +0000
Fix internal error caused by interaction between catch signal and fork
Index: gdb-7.12/gdb/testsuite/gdb.base/gdb-rhbz1149205-catch-syscall-fork.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.12/gdb/testsuite/gdb.base/gdb-rhbz1149205-catch-syscall-fork.c 2016-10-20 21:03:09.584272695 +0200
@@ -0,0 +1,11 @@
+#include <stdio.h>
+#include <unistd.h>
+
+int
+main (int argc, char **argv)
+{
+ if (fork () == 0)
+ sleep (1);
+ chdir (".");
+ return 0;
+}
Index: gdb-7.12/gdb/testsuite/gdb.base/gdb-rhbz1149205-catch-syscall-fork.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.12/gdb/testsuite/gdb.base/gdb-rhbz1149205-catch-syscall-fork.exp 2016-10-20 21:04:13.337771174 +0200
@@ -0,0 +1,58 @@
+# Copyright 2015 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if { [is_remote target] || ![isnative] } then {
+ continue
+}
+
+set testfile "gdb-rhbz1149205-catch-syscall-fork"
+set srcfile ${testfile}.c
+set binfile [standard_output_file ${testfile}]
+
+# Until "catch syscall" is implemented on other targets...
+if {![istarget "hppa*-hp-hpux*"] && ![istarget "*-linux*"]} then {
+ continue
+}
+
+# This shall be updated whenever 'catch syscall' is implemented
+# on some architecture.
+#if { ![istarget "i\[34567\]86-*-linux*"]
+if { ![istarget "x86_64-*-linux*"] && ![istarget "i\[34567\]86-*-linux*"]
+ && ![istarget "powerpc-*-linux*"] && ![istarget "powerpc64-*-linux*"]
+ && ![istarget "sparc-*-linux*"] && ![istarget "sparc64-*-linux*"] } {
+ continue
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
+ untested ${testfile}.exp
+ return -1
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load $binfile
+
+if { ![runto_main] } {
+ return -1
+}
+
+gdb_test "catch syscall chdir" \
+ "Catchpoint $decimal \\\(syscall (.)?chdir(.)? \\\[$decimal\\\]\\\)" \
+ "catch syscall chdir"
+
+gdb_test "continue" \
+ "Continuing\.\r\n.*\r\nCatchpoint $decimal \\\(call to syscall .?chdir.?.*" \
+ "continue from catch syscall after fork"

View File

@ -0,0 +1,341 @@
Index: gdb-7.12/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen-libbar.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.12/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen-libbar.c 2016-10-22 22:10:13.262634144 +0200
@@ -0,0 +1,30 @@
+/* Testcase for recursive dlopen calls.
+
+ Copyright (C) 2014 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* This test was copied from glibc's testcase called
+ <dlfcn/tst-rec-dlopen.c> and related files. */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+void
+bar (void)
+{
+ printf ("Called bar.\n");
+}
Index: gdb-7.12/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen-libfoo.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.12/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen-libfoo.c 2016-10-22 22:10:13.262634144 +0200
@@ -0,0 +1,30 @@
+/* Testcase for recursive dlopen calls.
+
+ Copyright (C) 2014 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* This test was copied from glibc's testcase called
+ <dlfcn/tst-rec-dlopen.c> and related files. */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+void
+foo (void)
+{
+ printf ("Called foo.\n");
+}
Index: gdb-7.12/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.12/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen.c 2016-10-22 22:10:13.262634144 +0200
@@ -0,0 +1,124 @@
+/* Testcase for recursive dlopen calls.
+
+ Copyright (C) 2014 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* This test was copied from glibc's testcase called
+ <dlfcn/tst-rec-dlopen.c> and related files. */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <malloc.h>
+#include <dlfcn.h>
+
+#define DSO "gdb-rhbz1156192-recursive-dlopen-libfoo.so"
+#define FUNC "foo"
+
+#define DSO1 "gdb-rhbz1156192-recursive-dlopen-libbar.so"
+#define FUNC1 "bar"
+
+/* Prototype for my hook. */
+void *custom_malloc_hook (size_t, const void *);
+
+/* Pointer to old malloc hooks. */
+void *(*old_malloc_hook) (size_t, const void *);
+
+/* Call function func_name in DSO dso_name via dlopen. */
+void
+call_func (const char *dso_name, const char *func_name)
+{
+ int ret;
+ void *dso;
+ void (*func) (void);
+ char *err;
+
+ /* Open the DSO. */
+ dso = dlopen (dso_name, RTLD_NOW|RTLD_GLOBAL);
+ if (dso == NULL)
+ {
+ err = dlerror ();
+ fprintf (stderr, "%s\n", err);
+ exit (1);
+ }
+ /* Clear any errors. */
+ dlerror ();
+
+ /* Lookup func. */
+ *(void **) (&func) = dlsym (dso, func_name);
+ if (func == NULL)
+ {
+ err = dlerror ();
+ if (err != NULL)
+ {
+ fprintf (stderr, "%s\n", err);
+ exit (1);
+ }
+ }
+ /* Call func twice. */
+ (*func) ();
+
+ /* Close the library and look for errors too. */
+ ret = dlclose (dso);
+ if (ret != 0)
+ {
+ err = dlerror ();
+ fprintf (stderr, "%s\n", err);
+ exit (1);
+ }
+
+}
+
+/* Empty hook that does nothing. */
+void *
+custom_malloc_hook (size_t size, const void *caller)
+{
+ void *result;
+ /* Restore old hooks. */
+ __malloc_hook = old_malloc_hook;
+ /* First call a function in another library via dlopen. */
+ call_func (DSO1, FUNC1);
+ /* Called recursively. */
+ result = malloc (size);
+ /* Restore new hooks. */
+ __malloc_hook = custom_malloc_hook;
+ return result;
+}
+
+int
+main (void)
+{
+
+ /* Save old hook. */
+ old_malloc_hook = __malloc_hook;
+ /* Install new hook. */
+ __malloc_hook = custom_malloc_hook;
+
+ /* Attempt to dlopen a shared library. This dlopen will
+ trigger an access to the ld.so.cache, and that in turn
+ will require a malloc to duplicate data in the cache.
+ The malloc will call our malloc hook which calls dlopen
+ recursively, and upon return of this dlopen the non-ref
+ counted ld.so.cache mapping will be unmapped. We will
+ return to the original dlopen and crash trying to access
+ dlopened data. */
+ call_func (DSO, FUNC);
+
+ /* Restore old hook. */
+ __malloc_hook = old_malloc_hook;
+
+ return 0;
+}
Index: gdb-7.12/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.12/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen.exp 2016-10-24 23:21:58.043064177 +0200
@@ -0,0 +1,137 @@
+# Copyright 2014 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if { [skip_shlib_tests] } {
+ return 0
+}
+
+# Library foo
+set libname1 "gdb-rhbz1156192-recursive-dlopen-libfoo"
+set srcfile_lib1 ${srcdir}/${subdir}/${libname1}.c
+set binfile_lib1 [standard_output_file ${libname1}.so]
+# Library bar
+set libname2 "gdb-rhbz1156192-recursive-dlopen-libbar"
+set srcfile_lib2 ${srcdir}/${subdir}/${libname2}.c
+set binfile_lib2 [standard_output_file ${libname2}.so]
+
+set testfile "gdb-rhbz1156192-recursive-dlopen"
+set srcfile ${testfile}.c
+set executable ${testfile}
+set binfile [standard_output_file ${executable}]
+
+if { [gdb_compile_shlib ${srcfile_lib1} ${binfile_lib1} \
+ { debug "additional_flags=-fPIC" }] != "" } {
+ untested "Could not compile ${binfile_lib1}"
+ return -1
+}
+
+if { [gdb_compile_shlib ${srcfile_lib2} ${binfile_lib2} \
+ { debug "additional_flags=-fPIC" }] != "" } {
+ untested "Could not compile ${binfile_lib2}"
+ return -1
+}
+
+if { [prepare_for_testing ${testfile}.exp ${executable} ${srcfile} \
+ [ list debug shlib_load "additional_flags=-Wno-deprecated-declarations" ]] } {
+ untested "Could not compile ${executable}"
+ return -1
+}
+
+proc do_test { has_libfoo has_libbar } {
+ global hex binfile_lib2 binfile_lib1 gdb_prompt
+ set libbar_match "[string_to_regexp $binfile_lib2]"
+ set libfoo_match "[string_to_regexp $binfile_lib1]"
+
+ gdb_test_multiple "info shared" "info shared" {
+ -re ".*$libfoo_match\r\n.*$libbar_match\(\r\n.*Shared library is missing\)?.*\r\n${gdb_prompt} $" {
+ if { $has_libfoo && $has_libbar } {
+ pass "matched libfoo and libbar"
+ } else {
+ fail "matched libfoo and libbar (has_libfoo = $has_libfoo, has_libbar = $has_libbar)"
+ }
+ }
+ -re ".*$libfoo_match\(\r\n.*Shared library is missing\)?.*\r\n${gdb_prompt} $" {
+ if { $has_libfoo && !$has_libbar } {
+ pass "matched libfoo"
+ } else {
+ fail "matched libfoo (has_libfoo = $has_libfoo, has_libbar = $has_libbar)"
+ }
+ }
+ -re ".*$libbar_match\(\r\n.*Shared library is missing\)?.*\r\n${gdb_prompt} $" {
+ if { $has_libbar && !$has_libfoo } {
+ pass "matched libbar"
+ } else {
+ fail "matched libbar (has_libfoo = $has_libfoo, has_libbar = $has_libbar)"
+ }
+ }
+ "\r\n${gdb_prompt} $" {
+ if { !$has_libfoo && !$has_libbar } {
+ pass "did not match libfoo nor libbar"
+ } else {
+ fail "did not match libfoo nor libbar (has_libfoo = $has_libfoo, has_libbar = $has_libbar)"
+ }
+ }
+ }
+}
+
+proc test_stop_on_solib_events { } {
+ set pass 0
+ # This variable holds the information about whether libfoo and
+ # libbar (respectively) are expected in the "info shared" output.
+ set solib_event_order { { 0 0 } { 0 0 } { 0 0 } { 0 1 } \
+ { 0 1 } { 0 0 } { 0 0 } { 0 1 } \
+ { 0 1 } { 0 0 } { 0 0 } { 0 1 } \
+ { 0 1 } { 0 0 } { 0 0 1 } { 1 1 } \
+ { 1 1 } { 1 0 } { 1 0 } { 1 1 } \
+ { 1 1 } { 1 0 1 } { 1 0 } { 1 0 } }
+
+ with_test_prefix "stop-on-solib-events" {
+ gdb_test_no_output "set stop-on-solib-events 1" "setting stop-on-solib-events"
+
+ gdb_run_cmd
+ foreach l $solib_event_order {
+ incr pass
+ with_test_prefix "pass #$pass" {
+ set should_be_corrupted [expr 0+0[lindex $l 2]]
+ do_test [lindex $l 0] [lindex $l 1]
+ set test "continue"
+ global gdb_prompt
+ gdb_test_multiple $test $test {
+ -re "\r\nwarning: Corrupted shared library list:.*\r\nStopped due to shared library event.*\r\n$gdb_prompt $" {
+ set corrupted 1
+ pass $test
+ }
+ -re "\r\nStopped due to shared library event.*\r\n$gdb_prompt $" {
+ set corrupted 0
+ pass $test
+ }
+ }
+ set test "corrupted=$corrupted but should_be_corrupted=$should_be_corrupted"
+ if {$corrupted == $should_be_corrupted} {
+ pass $test
+ } else {
+ fail $test
+ }
+ }
+ }
+ # In the last pass we do not expect to see libfoo or libbar.
+ incr pass
+ with_test_prefix "pass #$pass" {
+ do_test 0 0
+ }
+ }
+}
+
+test_stop_on_solib_events

View File

@ -0,0 +1,125 @@
Comments from Sergio Durigan Junior:
The "proper" fix for this whole problem would be to backport the
"ambiguous linespec" patch series. However, it is really not
recommended to do that for RHEL GDB, because the patch series is too
big and could introduce unwanted regressions. Instead, what we
chose to do was to replace the gdb_assert call by a warning (which
allows the user to continue the debugging session), and tell the
user that, although more than one location was found for his/her
breakpoint, only one will be used.
Index: gdb-7.12/gdb/testsuite/gdb.cp/gdb-rhbz1186476-internal-error-unqualified-name-re-set-main.cc
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.12/gdb/testsuite/gdb.cp/gdb-rhbz1186476-internal-error-unqualified-name-re-set-main.cc 2016-10-20 21:06:31.849854180 +0200
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2015 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+int
+main (int argc, char *argv[])
+{
+ return 0;
+}
Index: gdb-7.12/gdb/testsuite/gdb.cp/gdb-rhbz1186476-internal-error-unqualified-name-re-set.cc
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.12/gdb/testsuite/gdb.cp/gdb-rhbz1186476-internal-error-unqualified-name-re-set.cc 2016-10-20 21:06:31.850854188 +0200
@@ -0,0 +1,26 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2015 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+class C
+ {
+ public:
+ C () {}
+ C (int x) {}
+ };
+
+C a;
+C b (1);
Index: gdb-7.12/gdb/testsuite/gdb.cp/gdb-rhbz1186476-internal-error-unqualified-name-re-set.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.12/gdb/testsuite/gdb.cp/gdb-rhbz1186476-internal-error-unqualified-name-re-set.exp 2016-10-20 21:09:33.408270526 +0200
@@ -0,0 +1,51 @@
+# Copyright 2015 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if { [skip_cplus_tests] } { continue }
+if { [skip_shlib_tests] } { continue }
+if { [is_remote target] } { continue }
+if { [target_info exists use_gdb_stub] } { continue }
+
+set testfile gdb-rhbz1186476-internal-error-unqualified-name-re-set-main
+set srcfile $testfile.cc
+set executable $testfile
+set binfile [standard_output_file $executable]
+
+set libtestfile gdb-rhbz1186476-internal-error-unqualified-name-re-set
+set libsrcfile $libtestfile.cc
+set sofile [standard_output_file lib$libtestfile.so]
+
+# Create and source the file that provides information about the compiler
+# used to compile the test case.
+if [get_compiler_info "c++"] {
+ return -1
+}
+
+if { [gdb_compile_shlib $srcdir/$subdir/$libsrcfile $sofile {debug c++ "additional_flags=-fPIC"}] != ""
+ || [gdb_compile $srcdir/$subdir/$srcfile $binfile executable [list additional_flags=-Wl,-rpath,[file dirname ${sofile}] "c++" shlib=${sofile} ]] != ""} {
+ untested $libtestfile.exp
+ return -1
+}
+
+clean_restart $executable
+
+gdb_test_no_output "set breakpoint pending on"
+# gdb_breakpoint would print a failure because of some warning messages
+gdb_test "break C::C" "Breakpoint $decimal \\(C::C\\) pending."
+
+#gdb_test "run" "warning: Found more than one location for breakpoint #$decimal; only the first location will be used.(\r\n)+Breakpoint $decimal, C::C.*"
+gdb_test "run"
+
+gdb_test "info break" " in C::C\\(\\) at .* in C::C\\(int\\) at .*"

View File

@ -1,5 +1,47 @@
--- /dev/null 2016-04-19 22:52:19.405224269 +0200
+++ gdb-7.6.1/gdb/testsuite/gdb.python/py-framefilter-thread.exp 2016-04-19 23:22:10.655271756 +0200
--- /dev/null 2016-09-12 21:37:05.332693927 +0200
+++ gdb-7.11.90.20160907/gdb/testsuite/gdb.python/py-framefilter-thread.c 2016-09-12 21:43:56.448695513 +0200
@@ -0,0 +1,39 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2016 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <pthread.h>
+#include <assert.h>
+
+static void *
+start (void *arg)
+{
+ return arg; /* Backtrace end breakpoint */
+}
+
+int
+main (void)
+{
+ pthread_t thread1;
+ int i;
+
+ i = pthread_create (&thread1, NULL, start, NULL);
+ assert (i == 0);
+ i = pthread_join (thread1, NULL);
+ assert (i == 0);
+
+ return 0;
+}
--- /dev/null 2016-09-12 21:37:05.332693927 +0200
+++ gdb-7.11.90.20160907/gdb/testsuite/gdb.python/py-framefilter-thread.exp 2016-09-12 21:46:54.623428493 +0200
@@ -0,0 +1,54 @@
+# Copyright (C) 2016 Free Software Foundation, Inc.
+
@ -35,7 +77,7 @@
+
+# Load global frame-filters
+set remote_python_file [remote_download host ${srcdir}/${subdir}/${testfile}.py]
+gdb_test_no_output "python execfile ('${remote_python_file}')" \
+gdb_test_no_output "python exec (open ('${remote_python_file}').read ())" \
+ "Load python file"
+
+gdb_breakpoint [gdb_get_line_number "Backtrace end breakpoint"]
@ -55,51 +97,9 @@
+# block = self.frame.block()
+# RuntimeError: Cannot locate object file for block.
+gdb_test "bt" " in \[0-9\]+ \[^\r\n\]*" "bt with filters"
--- /dev/null 2016-04-19 22:52:19.405224269 +0200
+++ gdb-7.6.1/gdb/testsuite/gdb.python/py-framefilter-thread.c 2016-04-18 22:44:07.096613437 +0200
@@ -0,0 +1,39 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2016 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <pthread.h>
+#include <assert.h>
+
+static void *
+start (void *arg)
+{
+ return; /* Backtrace end breakpoint */
+}
+
+int
+main (void)
+{
+ pthread_t thread1;
+ int i;
+
+ i = pthread_create (&thread1, NULL, start, NULL);
+ assert (i == 0);
+ i = pthread_join (thread1, NULL);
+ assert (i == 0);
+
+ return 0;
+}
--- /dev/null 2016-04-19 22:52:19.405224269 +0200
+++ gdb-7.6.1/gdb/testsuite/gdb.python/py-framefilter-thread.py 2016-04-19 23:14:03.273994063 +0200
@@ -0,0 +1,56 @@
--- /dev/null 2016-09-12 21:37:05.332693927 +0200
+++ gdb-7.11.90.20160907/gdb/testsuite/gdb.python/py-framefilter-thread.py 2016-09-12 21:49:16.150795235 +0200
@@ -0,0 +1,60 @@
+# Copyright (C) 2016 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
@ -151,8 +151,12 @@
+ gdb.frame_filters [self.name] = self
+
+ def filter (self, frame_iter):
+ frame_iter = itertools.imap (Reverse_Function,
+ frame_iter)
+ # Python 3.x moved the itertools.imap functionality to map(),
+ # so check if it is available.
+ if hasattr(itertools, "imap"):
+ frame_iter = itertools.imap (Reverse_Function, frame_iter)
+ else:
+ frame_iter = map (Reverse_Function, frame_iter)
+ return frame_iter
+
+FrameFilter()

View File

@ -0,0 +1,73 @@
Typo in Python support breaks info type-printers command
https://bugzilla.redhat.com/show_bug.cgi?id=1350436
[testsuite patch] PR python/17136: 'info type-printers' causes an exception when there are per-objfile printers
https://sourceware.org/ml/gdb-patches/2016-06/msg00455.html
diff -dup -rup gdb-7.6.1/gdb/testsuite/gdb.python-orig/py-typeprint.cc gdb-7.6.1/gdb/testsuite/gdb.python/py-typeprint.cc
--- gdb-7.6.1/gdb/testsuite/gdb.python-orig/py-typeprint.cc 2013-01-01 07:41:26.000000000 +0100
+++ gdb-7.6.1/gdb/testsuite/gdb.python/py-typeprint.cc 2016-06-27 22:57:58.168642470 +0200
@@ -31,6 +31,12 @@ templ<basic_string> s;
basic_string bs;
+class Other
+{
+};
+
+Other ovar;
+
int main()
{
return 0;
diff -dup -rup gdb-7.6.1/gdb/testsuite/gdb.python-orig/py-typeprint.exp gdb-7.6.1/gdb/testsuite/gdb.python/py-typeprint.exp
--- gdb-7.6.1/gdb/testsuite/gdb.python-orig/py-typeprint.exp 2013-01-01 07:41:26.000000000 +0100
+++ gdb-7.6.1/gdb/testsuite/gdb.python/py-typeprint.exp 2016-06-27 22:58:13.846785208 +0200
@@ -51,3 +51,7 @@ gdb_test_no_output "enable type-printer
gdb_test "whatis bs" "string" "whatis with enabled printer"
gdb_test "whatis s" "templ<string>"
+
+gdb_test "info type-printers" "Type printers for \[^\r\n\]*/py-typeprint:\r\n *other\r\n.*" \
+ "info type-printers for other"
+gdb_test "whatis ovar" "type = Another"
diff -dup -rup gdb-7.6.1/gdb/testsuite/gdb.python-orig/py-typeprint.py gdb-7.6.1/gdb/testsuite/gdb.python/py-typeprint.py
--- gdb-7.6.1/gdb/testsuite/gdb.python-orig/py-typeprint.py 2013-01-01 07:41:26.000000000 +0100
+++ gdb-7.6.1/gdb/testsuite/gdb.python/py-typeprint.py 2016-06-27 22:57:58.169642479 +0200
@@ -15,7 +15,7 @@
import gdb
-class Recognizer(object):
+class StringRecognizer(object):
def __init__(self):
self.enabled = True
@@ -30,6 +30,26 @@ class StringTypePrinter(object):
self.enabled = True
def instantiate(self):
- return Recognizer()
+ return StringRecognizer()
gdb.type_printers.append(StringTypePrinter())
+
+class OtherRecognizer(object):
+ def __init__(self):
+ self.enabled = True
+
+ def recognize(self, type_obj):
+ if type_obj.tag == 'Other':
+ return 'Another'
+ return None
+
+class OtherTypePrinter(object):
+ def __init__(self):
+ self.name = 'other'
+ self.enabled = True
+
+ def instantiate(self):
+ return OtherRecognizer()
+
+import gdb.types
+gdb.types.register_type_printer(gdb.objfiles()[0], OtherTypePrinter())

File diff suppressed because it is too large Load Diff

View File

@ -137,10 +137,10 @@ Content-Type: text/x-patch
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=bitpos-tdep.patch
Index: gdb-7.10.50.20160106/gdb/alpha-tdep.c
Index: gdb-7.11.50.20160716/gdb/alpha-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/alpha-tdep.c 2016-01-08 19:16:16.592813990 +0100
+++ gdb-7.10.50.20160106/gdb/alpha-tdep.c 2016-01-08 19:16:20.308834717 +0100
--- gdb-7.11.50.20160716.orig/gdb/alpha-tdep.c 2016-07-16 14:35:45.390502718 +0200
+++ gdb-7.11.50.20160716/gdb/alpha-tdep.c 2016-07-16 14:35:47.511519788 +0200
@@ -299,17 +299,17 @@
{
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@ -183,11 +183,11 @@ Index: gdb-7.10.50.20160106/gdb/alpha-tdep.c
memcpy (arg_reg_buffer + offset, contents, tlen);
offset += tlen;
contents += tlen;
Index: gdb-7.10.50.20160106/gdb/amd64-tdep.c
Index: gdb-7.11.50.20160716/gdb/amd64-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/amd64-tdep.c 2016-01-08 19:16:16.594814001 +0100
+++ gdb-7.10.50.20160106/gdb/amd64-tdep.c 2016-01-08 19:16:20.309834723 +0100
@@ -699,7 +699,7 @@
--- gdb-7.11.50.20160716.orig/gdb/amd64-tdep.c 2016-07-16 14:35:45.391502726 +0200
+++ gdb-7.11.50.20160716/gdb/amd64-tdep.c 2016-07-16 14:35:47.512519796 +0200
@@ -729,7 +729,7 @@
gdb_byte *readbuf, const gdb_byte *writebuf)
{
enum amd64_reg_class theclass[2];
@ -196,7 +196,7 @@ Index: gdb-7.10.50.20160106/gdb/amd64-tdep.c
static int integer_regnum[] = { AMD64_RAX_REGNUM, AMD64_RDX_REGNUM };
static int sse_regnum[] = { AMD64_XMM0_REGNUM, AMD64_XMM1_REGNUM };
int integer_reg = 0;
@@ -850,8 +850,8 @@
@@ -880,8 +880,8 @@
};
struct value **stack_args = XALLOCAVEC (struct value *, nargs);
int num_stack_args = 0;
@ -207,7 +207,7 @@ Index: gdb-7.10.50.20160106/gdb/amd64-tdep.c
int integer_reg = 0;
int sse_reg = 0;
int i;
@@ -863,7 +863,7 @@
@@ -893,7 +893,7 @@
for (i = 0; i < nargs; i++)
{
struct type *type = value_type (args[i]);
@ -216,10 +216,10 @@ Index: gdb-7.10.50.20160106/gdb/amd64-tdep.c
enum amd64_reg_class theclass[2];
int needed_integer_regs = 0;
int needed_sse_regs = 0;
Index: gdb-7.10.50.20160106/gdb/amd64-windows-tdep.c
Index: gdb-7.11.50.20160716/gdb/amd64-windows-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/amd64-windows-tdep.c 2016-01-08 19:16:16.595814006 +0100
+++ gdb-7.10.50.20160106/gdb/amd64-windows-tdep.c 2016-01-08 19:16:20.310834728 +0100
--- gdb-7.11.50.20160716.orig/gdb/amd64-windows-tdep.c 2016-07-16 14:35:45.393502742 +0200
+++ gdb-7.11.50.20160716/gdb/amd64-windows-tdep.c 2016-07-16 14:35:47.512519796 +0200
@@ -288,7 +288,7 @@
struct type *type, struct regcache *regcache,
gdb_byte *readbuf, const gdb_byte *writebuf)
@ -229,11 +229,11 @@ Index: gdb-7.10.50.20160106/gdb/amd64-windows-tdep.c
int regnum = -1;
/* See if our value is returned through a register. If it is, then
Index: gdb-7.10.50.20160106/gdb/arm-tdep.c
Index: gdb-7.11.50.20160716/gdb/arm-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/arm-tdep.c 2016-01-08 19:16:16.603814051 +0100
+++ gdb-7.10.50.20160106/gdb/arm-tdep.c 2016-01-08 19:17:05.737088107 +0100
@@ -3340,7 +3340,7 @@
--- gdb-7.11.50.20160716.orig/gdb/arm-tdep.c 2016-07-16 14:35:45.400502798 +0200
+++ gdb-7.11.50.20160716/gdb/arm-tdep.c 2016-07-16 14:36:30.328864376 +0200
@@ -3443,7 +3443,7 @@
array). Vector types are not currently supported, matching the
generic AAPCS support. */
@ -242,7 +242,7 @@ Index: gdb-7.10.50.20160106/gdb/arm-tdep.c
arm_vfp_cprc_sub_candidate (struct type *t,
enum arm_vfp_cprc_base_type *base_type)
{
@@ -3423,7 +3423,7 @@
@@ -3526,7 +3526,7 @@
}
else
{
@ -251,7 +251,7 @@ Index: gdb-7.10.50.20160106/gdb/arm-tdep.c
unsigned unitlen;
count = arm_vfp_cprc_sub_candidate (TYPE_TARGET_TYPE (t),
@@ -3446,13 +3446,15 @@
@@ -3549,12 +3549,12 @@
case TYPE_CODE_STRUCT:
{
@ -261,16 +261,12 @@ Index: gdb-7.10.50.20160106/gdb/arm-tdep.c
int i;
for (i = 0; i < TYPE_NFIELDS (t); i++)
{
- int sub_count = arm_vfp_cprc_sub_candidate (TYPE_FIELD_TYPE (t, i),
- base_type);
+ LONGEST sub_count;
+
+ sub_count = arm_vfp_cprc_sub_candidate (TYPE_FIELD_TYPE (t, i),
+ base_type);
if (sub_count == -1)
return -1;
count += sub_count;
@@ -3472,13 +3474,15 @@
- int sub_count = 0;
+ LONGEST sub_count = 0;
if (!field_is_static (&TYPE_FIELD (t, i)))
sub_count = arm_vfp_cprc_sub_candidate (TYPE_FIELD_TYPE (t, i),
@@ -3578,13 +3578,15 @@
case TYPE_CODE_UNION:
{
@ -289,7 +285,7 @@ Index: gdb-7.10.50.20160106/gdb/arm-tdep.c
if (sub_count == -1)
return -1;
count = (count > sub_count ? count : sub_count);
@@ -3514,7 +3518,7 @@
@@ -3620,7 +3622,7 @@
int *count)
{
enum arm_vfp_cprc_base_type b = VFP_CPRC_UNKNOWN;
@ -298,7 +294,7 @@ Index: gdb-7.10.50.20160106/gdb/arm-tdep.c
if (c <= 0 || c > 4)
return 0;
*base_type = b;
@@ -3595,7 +3599,7 @@
@@ -3701,7 +3703,7 @@
for (argnum = 0; argnum < nargs; argnum++)
{
@ -307,11 +303,11 @@ Index: gdb-7.10.50.20160106/gdb/arm-tdep.c
struct type *arg_type;
struct type *target_type;
enum type_code typecode;
Index: gdb-7.10.50.20160106/gdb/avr-tdep.c
Index: gdb-7.11.50.20160716/gdb/avr-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/avr-tdep.c 2016-01-08 19:16:16.604814057 +0100
+++ gdb-7.10.50.20160106/gdb/avr-tdep.c 2016-01-08 19:16:20.314834750 +0100
@@ -1196,13 +1196,13 @@
--- gdb-7.11.50.20160716.orig/gdb/avr-tdep.c 2016-07-16 14:35:45.401502806 +0200
+++ gdb-7.11.50.20160716/gdb/avr-tdep.c 2016-07-16 14:35:47.516519828 +0200
@@ -1195,13 +1195,13 @@
struct stack_item
{
@ -327,7 +323,7 @@ Index: gdb-7.10.50.20160106/gdb/avr-tdep.c
{
struct stack_item *si;
si = XNEW (struct stack_item);
@@ -1291,12 +1291,12 @@
@@ -1289,12 +1289,12 @@
for (i = 0; i < nargs; i++)
{
@ -341,22 +337,22 @@ Index: gdb-7.10.50.20160106/gdb/avr-tdep.c
- int len = TYPE_LENGTH (type);
+ ssize_t len = TYPE_LENGTH (type);
/* Calculate the potential last register needed. */
last_regnum = regnum - (len + (len & 1));
Index: gdb-7.10.50.20160106/gdb/bfin-tdep.c
/* Calculate the potential last register needed.
E.g. For length 2, registers regnum and regnum-1 (say 25 and 24)
Index: gdb-7.11.50.20160716/gdb/bfin-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/bfin-tdep.c 2016-01-08 19:16:16.605814062 +0100
+++ gdb-7.10.50.20160106/gdb/bfin-tdep.c 2016-01-08 19:16:20.315834756 +0100
@@ -504,7 +504,7 @@
gdb_byte buf[4];
--- gdb-7.11.50.20160716.orig/gdb/bfin-tdep.c 2016-07-16 14:35:45.401502806 +0200
+++ gdb-7.11.50.20160716/gdb/bfin-tdep.c 2016-07-16 14:35:47.516519828 +0200
@@ -502,7 +502,7 @@
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
int i;
long reg_r0, reg_r1, reg_r2;
- int total_len = 0;
+ ssize_t total_len = 0;
enum bfin_abi abi = bfin_abi (gdbarch);
CORE_ADDR func_addr = find_function_addr (function, NULL);
@@ -528,7 +528,7 @@
for (i = nargs - 1; i >= 0; i--)
{
@@ -524,7 +524,7 @@
{
struct type *value_type = value_enclosing_type (args[i]);
struct type *arg_type = check_typedef (value_type);
@ -365,10 +361,10 @@ Index: gdb-7.10.50.20160106/gdb/bfin-tdep.c
sp -= container_len;
write_memory (sp, value_contents (args[i]), container_len);
Index: gdb-7.10.50.20160106/gdb/cris-tdep.c
Index: gdb-7.11.50.20160716/gdb/cris-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/cris-tdep.c 2016-01-08 19:16:16.606814068 +0100
+++ gdb-7.10.50.20160106/gdb/cris-tdep.c 2016-01-08 19:16:20.316834762 +0100
--- gdb-7.11.50.20160716.orig/gdb/cris-tdep.c 2016-07-16 14:35:45.403502823 +0200
+++ gdb-7.11.50.20160716/gdb/cris-tdep.c 2016-07-16 14:35:47.517519836 +0200
@@ -663,13 +663,13 @@
struct stack_item
@ -385,7 +381,7 @@ Index: gdb-7.10.50.20160106/gdb/cris-tdep.c
{
struct stack_item *si = XNEW (struct stack_item);
si->data = (gdb_byte *) xmalloc (len);
@@ -841,13 +841,13 @@
@@ -833,13 +833,13 @@
for (argnum = 0; argnum < nargs; argnum++)
{
@ -403,11 +399,11 @@ Index: gdb-7.10.50.20160106/gdb/cris-tdep.c
/* How may registers worth of storage do we need for this argument? */
reg_demand = (len / 4) + (len % 4 != 0 ? 1 : 0);
Index: gdb-7.10.50.20160106/gdb/h8300-tdep.c
Index: gdb-7.11.50.20160716/gdb/h8300-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/h8300-tdep.c 2016-01-08 19:16:16.607814073 +0100
+++ gdb-7.10.50.20160106/gdb/h8300-tdep.c 2016-01-08 19:16:20.316834762 +0100
@@ -639,7 +639,7 @@
--- gdb-7.11.50.20160716.orig/gdb/h8300-tdep.c 2016-07-16 14:35:45.403502823 +0200
+++ gdb-7.11.50.20160716/gdb/h8300-tdep.c 2016-07-16 14:35:47.517519836 +0200
@@ -637,7 +637,7 @@
int struct_return, CORE_ADDR struct_addr)
{
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@ -416,7 +412,7 @@ Index: gdb-7.10.50.20160106/gdb/h8300-tdep.c
int wordsize = BINWORD (gdbarch);
int reg = E_ARG0_REGNUM;
int argument;
@@ -666,11 +666,11 @@
@@ -664,11 +664,11 @@
{
struct cleanup *back_to;
struct type *type = value_type (args[argument]);
@ -430,7 +426,7 @@ Index: gdb-7.10.50.20160106/gdb/h8300-tdep.c
gdb_byte *padded = (gdb_byte *) xmalloc (padded_len);
back_to = make_cleanup (xfree, padded);
@@ -699,7 +699,7 @@
@@ -697,7 +697,7 @@
/* Heavens to Betsy --- it's really going in registers!
Note that on the h8/300s, there are gaps between the
registers in the register file. */
@ -439,11 +435,11 @@ Index: gdb-7.10.50.20160106/gdb/h8300-tdep.c
for (offset = 0; offset < padded_len; offset += wordsize)
{
Index: gdb-7.10.50.20160106/gdb/hppa-tdep.c
Index: gdb-7.11.50.20160716/gdb/hppa-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/hppa-tdep.c 2016-01-08 19:16:16.609814085 +0100
+++ gdb-7.10.50.20160106/gdb/hppa-tdep.c 2016-01-08 19:16:20.317834767 +0100
@@ -995,7 +995,7 @@
--- gdb-7.11.50.20160716.orig/gdb/hppa-tdep.c 2016-07-16 14:35:45.405502839 +0200
+++ gdb-7.11.50.20160716/gdb/hppa-tdep.c 2016-07-16 14:35:47.518519844 +0200
@@ -991,7 +991,7 @@
{
struct value *arg = args[i];
struct type *type = value_type (arg);
@ -452,7 +448,7 @@ Index: gdb-7.10.50.20160106/gdb/hppa-tdep.c
const bfd_byte *valbuf;
bfd_byte fptrbuf[8];
int regnum;
@@ -1190,7 +1190,7 @@
@@ -1186,7 +1186,7 @@
struct type *type, struct regcache *regcache,
gdb_byte *readbuf, const gdb_byte *writebuf)
{
@ -461,10 +457,10 @@ Index: gdb-7.10.50.20160106/gdb/hppa-tdep.c
int regnum, offset;
if (len > 16)
Index: gdb-7.10.50.20160106/gdb/i386-darwin-tdep.c
Index: gdb-7.11.50.20160716/gdb/i386-darwin-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/i386-darwin-tdep.c 2016-01-08 19:16:16.609814085 +0100
+++ gdb-7.10.50.20160106/gdb/i386-darwin-tdep.c 2016-01-08 19:16:20.317834767 +0100
--- gdb-7.11.50.20160716.orig/gdb/i386-darwin-tdep.c 2016-07-16 14:35:45.405502839 +0200
+++ gdb-7.11.50.20160716/gdb/i386-darwin-tdep.c 2016-07-16 14:35:47.518519844 +0200
@@ -163,7 +163,7 @@
for (write_pass = 0; write_pass < 2; write_pass++)
@ -474,11 +470,11 @@ Index: gdb-7.10.50.20160106/gdb/i386-darwin-tdep.c
int num_m128 = 0;
if (struct_return)
Index: gdb-7.10.50.20160106/gdb/i386-tdep.c
Index: gdb-7.11.50.20160716/gdb/i386-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/i386-tdep.c 2016-01-08 19:16:16.615814118 +0100
+++ gdb-7.10.50.20160106/gdb/i386-tdep.c 2016-01-08 19:16:20.319834778 +0100
@@ -2663,7 +2663,7 @@
--- gdb-7.11.50.20160716.orig/gdb/i386-tdep.c 2016-07-16 14:35:45.410502879 +0200
+++ gdb-7.11.50.20160716/gdb/i386-tdep.c 2016-07-16 14:35:47.520519860 +0200
@@ -2664,7 +2664,7 @@
gdb_byte buf[4];
int i;
int write_pass;
@ -487,7 +483,7 @@ Index: gdb-7.10.50.20160106/gdb/i386-tdep.c
/* Determine the total space required for arguments and struct
return address in a first pass (allowing for 16-byte-aligned
@@ -2671,7 +2671,7 @@
@@ -2672,7 +2672,7 @@
for (write_pass = 0; write_pass < 2; write_pass++)
{
@ -496,7 +492,7 @@ Index: gdb-7.10.50.20160106/gdb/i386-tdep.c
if (struct_return)
{
@@ -2688,7 +2688,7 @@
@@ -2689,7 +2689,7 @@
for (i = 0; i < nargs; i++)
{
@ -505,7 +501,7 @@ Index: gdb-7.10.50.20160106/gdb/i386-tdep.c
if (write_pass)
{
@@ -2895,7 +2895,7 @@
@@ -2896,7 +2896,7 @@
{
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
enum type_code code = TYPE_CODE (type);
@ -514,7 +510,7 @@ Index: gdb-7.10.50.20160106/gdb/i386-tdep.c
gdb_assert (code == TYPE_CODE_STRUCT
|| code == TYPE_CODE_UNION
@@ -3641,7 +3641,7 @@
@@ -3718,7 +3718,7 @@
i386_convert_register_p (struct gdbarch *gdbarch,
int regnum, struct type *type)
{
@ -523,7 +519,7 @@ Index: gdb-7.10.50.20160106/gdb/i386-tdep.c
/* Values may be spread across multiple registers. Most debugging
formats aren't expressive enough to specify the locations, so
@@ -3674,7 +3674,7 @@
@@ -3751,7 +3751,7 @@
int *optimizedp, int *unavailablep)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
@ -532,7 +528,7 @@ Index: gdb-7.10.50.20160106/gdb/i386-tdep.c
if (i386_fp_regnum_p (gdbarch, regnum))
return i387_register_to_value (frame, regnum, type, to,
@@ -3710,7 +3710,7 @@
@@ -3787,7 +3787,7 @@
i386_value_to_register (struct frame_info *frame, int regnum,
struct type *type, const gdb_byte *from)
{
@ -541,11 +537,11 @@ Index: gdb-7.10.50.20160106/gdb/i386-tdep.c
if (i386_fp_regnum_p (get_frame_arch (frame), regnum))
{
Index: gdb-7.10.50.20160106/gdb/iq2000-tdep.c
Index: gdb-7.11.50.20160716/gdb/iq2000-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/iq2000-tdep.c 2016-01-08 19:16:16.616814124 +0100
+++ gdb-7.10.50.20160106/gdb/iq2000-tdep.c 2016-01-08 19:16:20.320834784 +0100
@@ -651,8 +651,9 @@
--- gdb-7.11.50.20160716.orig/gdb/iq2000-tdep.c 2016-07-16 14:35:45.411502887 +0200
+++ gdb-7.11.50.20160716/gdb/iq2000-tdep.c 2016-07-16 14:35:47.520519860 +0200
@@ -646,8 +646,9 @@
const bfd_byte *val;
bfd_byte buf[4];
struct type *type;
@ -557,11 +553,11 @@ Index: gdb-7.10.50.20160106/gdb/iq2000-tdep.c
/* Used to copy struct arguments into the stack. */
CORE_ADDR struct_ptr;
Index: gdb-7.10.50.20160106/gdb/m32r-tdep.c
Index: gdb-7.11.50.20160716/gdb/m32r-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/m32r-tdep.c 2016-01-08 19:16:16.616814124 +0100
+++ gdb-7.10.50.20160106/gdb/m32r-tdep.c 2016-01-08 19:16:20.320834784 +0100
@@ -687,7 +687,7 @@
--- gdb-7.11.50.20160716.orig/gdb/m32r-tdep.c 2016-07-16 14:35:45.411502887 +0200
+++ gdb-7.11.50.20160716/gdb/m32r-tdep.c 2016-07-16 14:35:47.520519860 +0200
@@ -685,7 +685,7 @@
CORE_ADDR regval;
gdb_byte *val;
gdb_byte valbuf[MAX_REGISTER_SIZE];
@ -570,10 +566,10 @@ Index: gdb-7.10.50.20160106/gdb/m32r-tdep.c
/* First force sp to a 4-byte alignment. */
sp = sp & ~3;
Index: gdb-7.10.50.20160106/gdb/m68k-tdep.c
Index: gdb-7.11.50.20160716/gdb/m68k-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/m68k-tdep.c 2016-01-08 19:16:16.617814129 +0100
+++ gdb-7.10.50.20160106/gdb/m68k-tdep.c 2016-01-08 19:16:20.320834784 +0100
--- gdb-7.11.50.20160716.orig/gdb/m68k-tdep.c 2016-07-16 14:35:45.412502895 +0200
+++ gdb-7.11.50.20160716/gdb/m68k-tdep.c 2016-07-16 14:35:47.520519860 +0200
@@ -382,7 +382,7 @@
{
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
@ -596,10 +592,10 @@ Index: gdb-7.10.50.20160106/gdb/m68k-tdep.c
/* Non-scalars bigger than 4 bytes are left aligned, others are
right aligned. */
Index: gdb-7.10.50.20160106/gdb/m88k-tdep.c
Index: gdb-7.11.50.20160716/gdb/m88k-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/m88k-tdep.c 2016-01-08 19:16:16.617814129 +0100
+++ gdb-7.10.50.20160106/gdb/m88k-tdep.c 2016-01-08 19:16:20.321834790 +0100
--- gdb-7.11.50.20160716.orig/gdb/m88k-tdep.c 2016-07-16 14:35:45.412502895 +0200
+++ gdb-7.11.50.20160716/gdb/m88k-tdep.c 2016-07-16 14:35:47.521519868 +0200
@@ -257,13 +257,13 @@
{
struct gdbarch *gdbarch = get_regcache_arch (regcache);
@ -627,10 +623,10 @@ Index: gdb-7.10.50.20160106/gdb/m88k-tdep.c
if (m88k_in_register_p (type))
{
Index: gdb-7.10.50.20160106/gdb/mep-tdep.c
Index: gdb-7.11.50.20160716/gdb/mep-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/mep-tdep.c 2016-01-08 19:16:16.618814135 +0100
+++ gdb-7.10.50.20160106/gdb/mep-tdep.c 2016-01-08 19:16:20.321834790 +0100
--- gdb-7.11.50.20160716.orig/gdb/mep-tdep.c 2016-07-16 14:35:45.413502903 +0200
+++ gdb-7.11.50.20160716/gdb/mep-tdep.c 2016-07-16 14:35:47.521519868 +0200
@@ -2272,7 +2272,7 @@
for (i = 0; i < argc; i++)
@ -640,10 +636,10 @@ Index: gdb-7.10.50.20160106/gdb/mep-tdep.c
if (arg_len > MEP_GPR_SIZE)
{
Index: gdb-7.10.50.20160106/gdb/mips-tdep.c
Index: gdb-7.11.50.20160716/gdb/mips-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/mips-tdep.c 2016-01-08 19:16:16.626814179 +0100
+++ gdb-7.10.50.20160106/gdb/mips-tdep.c 2016-01-08 19:16:20.324834806 +0100
--- gdb-7.11.50.20160716.orig/gdb/mips-tdep.c 2016-07-16 14:35:45.421502967 +0200
+++ gdb-7.11.50.20160716/gdb/mips-tdep.c 2016-07-16 14:35:47.523519884 +0200
@@ -455,7 +455,7 @@
mips_xfer_register (struct gdbarch *gdbarch, struct regcache *regcache,
int reg_num, int length,
@ -664,7 +660,7 @@ Index: gdb-7.10.50.20160106/gdb/mips-tdep.c
if (mips_debug && out != NULL)
{
int i;
@@ -4554,13 +4554,13 @@
@@ -4529,13 +4529,13 @@
gdb_byte valbuf[MAX_REGISTER_SIZE];
struct value *arg = args[argnum];
struct type *arg_type = check_typedef (value_type (arg));
@ -681,7 +677,7 @@ Index: gdb-7.10.50.20160106/gdb/mips-tdep.c
/* The EABI passes structures that do not fit in a register by
reference. */
@@ -4829,7 +4829,7 @@
@@ -4804,7 +4804,7 @@
static int
mips_n32n64_fp_arg_chunk_p (struct gdbarch *gdbarch, struct type *arg_type,
@ -690,7 +686,7 @@ Index: gdb-7.10.50.20160106/gdb/mips-tdep.c
{
int i;
@@ -4844,7 +4844,7 @@
@@ -4819,7 +4819,7 @@
for (i = 0; i < TYPE_NFIELDS (arg_type); i++)
{
@ -699,7 +695,7 @@ Index: gdb-7.10.50.20160106/gdb/mips-tdep.c
struct type *field_type;
/* We're only looking at normal fields. */
@@ -4886,7 +4886,7 @@
@@ -4861,7 +4861,7 @@
int argreg;
int float_argreg;
int argnum;
@ -708,7 +704,7 @@ Index: gdb-7.10.50.20160106/gdb/mips-tdep.c
int stack_offset = 0;
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
CORE_ADDR func_addr = find_function_addr (function, NULL);
@@ -5237,11 +5237,11 @@
@@ -5212,11 +5212,11 @@
: MIPS_V0_REGNUM);
field < TYPE_NFIELDS (type); field++, regnum += 2)
{
@ -724,7 +720,7 @@ Index: gdb-7.10.50.20160106/gdb/mips-tdep.c
if (TYPE_LENGTH (TYPE_FIELD_TYPE (type, field)) == 16)
{
/* A 16-byte long double field goes in two consecutive
@@ -5283,8 +5283,8 @@
@@ -5258,8 +5258,8 @@
if (offset + xfer > TYPE_LENGTH (type))
xfer = TYPE_LENGTH (type) - offset;
if (mips_debug)
@ -735,7 +731,7 @@ Index: gdb-7.10.50.20160106/gdb/mips-tdep.c
mips_xfer_register (gdbarch, regcache,
gdbarch_num_regs (gdbarch) + regnum,
xfer, BFD_ENDIAN_UNKNOWN, readbuf, writebuf,
@@ -5342,7 +5342,7 @@
@@ -5317,7 +5317,7 @@
int argreg;
int float_argreg;
int argnum;
@ -744,7 +740,7 @@ Index: gdb-7.10.50.20160106/gdb/mips-tdep.c
int stack_offset = 0;
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
CORE_ADDR func_addr = find_function_addr (function, NULL);
@@ -5406,13 +5406,13 @@
@@ -5381,13 +5381,13 @@
const gdb_byte *val;
struct value *arg = args[argnum];
struct type *arg_type = check_typedef (value_type (arg));
@ -761,7 +757,7 @@ Index: gdb-7.10.50.20160106/gdb/mips-tdep.c
val = value_contents (arg);
@@ -5870,8 +5870,8 @@
@@ -5842,8 +5842,8 @@
int argreg;
int float_argreg;
int argnum;
@ -772,7 +768,7 @@ Index: gdb-7.10.50.20160106/gdb/mips-tdep.c
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
CORE_ADDR func_addr = find_function_addr (function, NULL);
@@ -5931,13 +5931,13 @@
@@ -5903,13 +5903,13 @@
const gdb_byte *val;
struct value *arg = args[argnum];
struct type *arg_type = check_typedef (value_type (arg));
@ -789,11 +785,11 @@ Index: gdb-7.10.50.20160106/gdb/mips-tdep.c
val = value_contents (arg);
Index: gdb-7.10.50.20160106/gdb/mn10300-tdep.c
Index: gdb-7.11.50.20160716/gdb/mn10300-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/mn10300-tdep.c 2016-01-08 19:16:16.627814185 +0100
+++ gdb-7.10.50.20160106/gdb/mn10300-tdep.c 2016-01-08 19:16:20.324834806 +0100
@@ -1227,7 +1227,7 @@
--- gdb-7.11.50.20160716.orig/gdb/mn10300-tdep.c 2016-07-16 14:35:45.422502976 +0200
+++ gdb-7.11.50.20160716/gdb/mn10300-tdep.c 2016-07-16 14:35:47.524519892 +0200
@@ -1225,7 +1225,7 @@
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
const int push_size = register_size (gdbarch, E_PC_REGNUM);
int regs_used;
@ -802,11 +798,11 @@ Index: gdb-7.10.50.20160106/gdb/mn10300-tdep.c
int stack_offset = 0;
int argnum;
const gdb_byte *val;
Index: gdb-7.10.50.20160106/gdb/mt-tdep.c
Index: gdb-7.11.50.20160716/gdb/mt-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/mt-tdep.c 2016-01-08 19:16:16.628814190 +0100
+++ gdb-7.10.50.20160106/gdb/mt-tdep.c 2016-01-08 19:16:20.324834806 +0100
@@ -781,9 +781,9 @@
--- gdb-7.11.50.20160716.orig/gdb/mt-tdep.c 2016-07-16 14:35:45.423502984 +0200
+++ gdb-7.11.50.20160716/gdb/mt-tdep.c 2016-07-16 14:35:47.524519892 +0200
@@ -780,9 +780,9 @@
gdb_byte buf[MT_MAX_STRUCT_SIZE];
int argreg = MT_1ST_ARGREG;
int split_param_len = 0;
@ -818,10 +814,10 @@ Index: gdb-7.10.50.20160106/gdb/mt-tdep.c
int i, j;
/* First handle however many args we can fit into MT_1ST_ARGREG thru
Index: gdb-7.10.50.20160106/gdb/ppc-sysv-tdep.c
Index: gdb-7.11.50.20160716/gdb/ppc-sysv-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/ppc-sysv-tdep.c 2016-01-08 19:16:16.629814196 +0100
+++ gdb-7.10.50.20160106/gdb/ppc-sysv-tdep.c 2016-01-08 19:16:20.325834812 +0100
--- gdb-7.11.50.20160716.orig/gdb/ppc-sysv-tdep.c 2016-07-16 14:35:45.424502992 +0200
+++ gdb-7.11.50.20160716/gdb/ppc-sysv-tdep.c 2016-07-16 14:35:47.524519892 +0200
@@ -66,7 +66,7 @@
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
int opencl_abi = ppc_sysv_use_opencl_abi (value_type (function));
@ -866,10 +862,10 @@ Index: gdb-7.10.50.20160106/gdb/ppc-sysv-tdep.c
/* Enforce alignment of stack location, if requested. */
if (align > tdep->wordsize)
Index: gdb-7.10.50.20160106/gdb/rl78-tdep.c
Index: gdb-7.11.50.20160716/gdb/rl78-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/rl78-tdep.c 2016-01-08 19:16:16.629814196 +0100
+++ gdb-7.10.50.20160106/gdb/rl78-tdep.c 2016-01-08 19:16:20.325834812 +0100
--- gdb-7.11.50.20160716.orig/gdb/rl78-tdep.c 2016-07-16 14:35:45.424502992 +0200
+++ gdb-7.11.50.20160716/gdb/rl78-tdep.c 2016-07-16 14:35:47.525519900 +0200
@@ -1336,8 +1336,8 @@
for (i = nargs - 1; i >= 0; i--)
{
@ -881,10 +877,10 @@ Index: gdb-7.10.50.20160106/gdb/rl78-tdep.c
sp -= container_len;
write_memory (rl78_make_data_address (sp),
Index: gdb-7.10.50.20160106/gdb/rs6000-aix-tdep.c
Index: gdb-7.11.50.20160716/gdb/rs6000-aix-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/rs6000-aix-tdep.c 2016-01-08 19:16:16.630814202 +0100
+++ gdb-7.10.50.20160106/gdb/rs6000-aix-tdep.c 2016-01-08 19:16:20.326834817 +0100
--- gdb-7.11.50.20160716.orig/gdb/rs6000-aix-tdep.c 2016-07-16 14:35:45.425503000 +0200
+++ gdb-7.11.50.20160716/gdb/rs6000-aix-tdep.c 2016-07-16 14:35:47.525519900 +0200
@@ -186,9 +186,9 @@
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@ -897,7 +893,7 @@ Index: gdb-7.10.50.20160106/gdb/rs6000-aix-tdep.c
gdb_byte tmp_buffer[50];
int f_argno = 0; /* current floating point argno */
int wordsize = gdbarch_tdep (gdbarch)->wordsize;
@@ -321,7 +321,7 @@
@@ -319,7 +319,7 @@
if ((argno < nargs) || argbytes)
{
@ -906,11 +902,11 @@ Index: gdb-7.10.50.20160106/gdb/rs6000-aix-tdep.c
if (argbytes)
{
Index: gdb-7.10.50.20160106/gdb/s390-linux-tdep.c
Index: gdb-7.11.50.20160716/gdb/s390-linux-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/s390-linux-tdep.c 2016-01-08 19:16:16.632814213 +0100
+++ gdb-7.10.50.20160106/gdb/s390-linux-tdep.c 2016-01-08 19:16:20.328834829 +0100
@@ -2981,7 +2981,7 @@
--- gdb-7.11.50.20160716.orig/gdb/s390-linux-tdep.c 2016-07-16 14:35:45.427503016 +0200
+++ gdb-7.11.50.20160716/gdb/s390-linux-tdep.c 2016-07-16 14:35:47.526519908 +0200
@@ -3125,7 +3125,7 @@
/* Determine whether N is a power of two. */
static int
@ -919,7 +915,7 @@ Index: gdb-7.10.50.20160106/gdb/s390-linux-tdep.c
{
return n && ((n & (n - 1)) == 0);
}
@@ -3038,7 +3038,7 @@
@@ -3182,7 +3182,7 @@
enum bfd_endian byte_order, int is_unnamed)
{
struct type *type = check_typedef (value_type (arg));
@ -928,10 +924,10 @@ Index: gdb-7.10.50.20160106/gdb/s390-linux-tdep.c
int write_mode = as->regcache != NULL;
if (s390_function_arg_float (type))
Index: gdb-7.10.50.20160106/gdb/score-tdep.c
Index: gdb-7.11.50.20160716/gdb/score-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/score-tdep.c 2016-01-08 19:16:16.633814218 +0100
+++ gdb-7.10.50.20160106/gdb/score-tdep.c 2016-01-08 19:16:20.328834829 +0100
--- gdb-7.11.50.20160716.orig/gdb/score-tdep.c 2016-07-16 14:35:45.428503024 +0200
+++ gdb-7.11.50.20160716/gdb/score-tdep.c 2016-07-16 14:35:47.527519916 +0200
@@ -514,7 +514,7 @@
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
int argnum;
@ -941,10 +937,10 @@ Index: gdb-7.10.50.20160106/gdb/score-tdep.c
CORE_ADDR stack_offset = 0;
CORE_ADDR addr = 0;
Index: gdb-7.10.50.20160106/gdb/sh-tdep.c
Index: gdb-7.11.50.20160716/gdb/sh-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/sh-tdep.c 2016-01-08 19:16:16.635814230 +0100
+++ gdb-7.10.50.20160106/gdb/sh-tdep.c 2016-01-08 19:16:20.329834834 +0100
--- gdb-7.11.50.20160716.orig/gdb/sh-tdep.c 2016-07-16 14:35:45.429503032 +0200
+++ gdb-7.11.50.20160716/gdb/sh-tdep.c 2016-07-16 14:35:47.527519916 +0200
@@ -805,7 +805,7 @@
static int
sh_use_struct_convention (int renesas_abi, struct type *type)
@ -983,20 +979,20 @@ Index: gdb-7.10.50.20160106/gdb/sh-tdep.c
int pass_on_stack = 0;
int last_reg_arg = INT_MAX;
Index: gdb-7.10.50.20160106/gdb/sh64-tdep.c
Index: gdb-7.11.50.20160716/gdb/sh64-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/sh64-tdep.c 2016-01-08 19:16:16.635814230 +0100
+++ gdb-7.10.50.20160106/gdb/sh64-tdep.c 2016-01-08 19:16:20.329834834 +0100
@@ -1056,7 +1056,7 @@
--- gdb-7.11.50.20160716.orig/gdb/sh64-tdep.c 2016-07-16 14:35:45.430503040 +0200
+++ gdb-7.11.50.20160716/gdb/sh64-tdep.c 2016-07-16 14:35:47.528519925 +0200
@@ -1060,7 +1060,7 @@
CORE_ADDR struct_addr)
{
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
- int stack_offset, stack_alloc;
+ LONGEST stack_offset, stack_alloc;
int int_argreg;
int float_argreg;
int double_argreg;
@@ -1067,7 +1067,7 @@
int float_arg_index = 0;
int double_arg_index = 0;
@@ -1069,7 +1069,7 @@
CORE_ADDR regval;
const gdb_byte *val;
gdb_byte valbuf[8];
@ -1005,10 +1001,10 @@ Index: gdb-7.10.50.20160106/gdb/sh64-tdep.c
int argreg_size;
int fp_args[12];
Index: gdb-7.10.50.20160106/gdb/sparc-tdep.c
Index: gdb-7.11.50.20160716/gdb/sparc-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/sparc-tdep.c 2016-01-08 19:16:16.636814235 +0100
+++ gdb-7.10.50.20160106/gdb/sparc-tdep.c 2016-01-08 19:16:20.330834840 +0100
--- gdb-7.11.50.20160716.orig/gdb/sparc-tdep.c 2016-07-16 14:35:45.431503048 +0200
+++ gdb-7.11.50.20160716/gdb/sparc-tdep.c 2016-07-16 14:35:47.528519925 +0200
@@ -525,7 +525,7 @@
for (i = 0; i < nargs; i++)
{
@ -1018,10 +1014,10 @@ Index: gdb-7.10.50.20160106/gdb/sparc-tdep.c
if (sparc_structure_or_union_p (type)
|| (sparc_floating_p (type) && len == 16)
Index: gdb-7.10.50.20160106/gdb/sparc64-tdep.c
Index: gdb-7.11.50.20160716/gdb/sparc64-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/sparc64-tdep.c 2016-01-08 19:16:16.637814241 +0100
+++ gdb-7.10.50.20160106/gdb/sparc64-tdep.c 2016-01-08 19:16:20.330834840 +0100
--- gdb-7.11.50.20160716.orig/gdb/sparc64-tdep.c 2016-07-16 14:35:45.432503056 +0200
+++ gdb-7.11.50.20160716/gdb/sparc64-tdep.c 2016-07-16 14:35:47.528519925 +0200
@@ -636,7 +636,8 @@
static void
@ -1077,10 +1073,10 @@ Index: gdb-7.10.50.20160106/gdb/sparc64-tdep.c
int regnum = -1;
gdb_byte buf[16];
Index: gdb-7.10.50.20160106/gdb/spu-tdep.c
Index: gdb-7.11.50.20160716/gdb/spu-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/spu-tdep.c 2016-01-08 19:16:16.638814246 +0100
+++ gdb-7.10.50.20160106/gdb/spu-tdep.c 2016-01-08 19:16:20.331834845 +0100
--- gdb-7.11.50.20160716.orig/gdb/spu-tdep.c 2016-07-16 14:35:45.433503064 +0200
+++ gdb-7.11.50.20160716/gdb/spu-tdep.c 2016-07-16 14:35:47.529519932 +0200
@@ -1429,7 +1429,7 @@
struct value *arg = args[i];
struct type *type = check_typedef (value_type (arg));
@ -1099,11 +1095,11 @@ Index: gdb-7.10.50.20160106/gdb/spu-tdep.c
int preferred_slot;
if (spu_scalar_value_p (type))
Index: gdb-7.10.50.20160106/gdb/tic6x-tdep.c
Index: gdb-7.11.50.20160716/gdb/tic6x-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/tic6x-tdep.c 2016-01-08 19:16:16.639814252 +0100
+++ gdb-7.10.50.20160106/gdb/tic6x-tdep.c 2016-01-08 19:16:20.332834851 +0100
@@ -895,7 +895,7 @@
--- gdb-7.11.50.20160716.orig/gdb/tic6x-tdep.c 2016-07-16 14:35:45.433503064 +0200
+++ gdb-7.11.50.20160716/gdb/tic6x-tdep.c 2016-07-16 14:35:47.529519932 +0200
@@ -892,7 +892,7 @@
int argreg = 0;
int argnum;
int stack_offset = 4;
@ -1112,7 +1108,7 @@ Index: gdb-7.10.50.20160106/gdb/tic6x-tdep.c
CORE_ADDR func_addr = find_function_addr (function, NULL);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
struct type *func_type = value_type (function);
@@ -929,7 +929,7 @@
@@ -926,7 +926,7 @@
/* Now make space on the stack for the args. */
for (argnum = 0; argnum < nargs; argnum++)
{
@ -1121,7 +1117,7 @@ Index: gdb-7.10.50.20160106/gdb/tic6x-tdep.c
if (argnum >= 10 - argreg)
references_offset += len;
stack_offset += len;
@@ -948,7 +948,7 @@
@@ -945,7 +945,7 @@
const gdb_byte *val;
struct value *arg = args[argnum];
struct type *arg_type = check_typedef (value_type (arg));
@ -1130,7 +1126,7 @@ Index: gdb-7.10.50.20160106/gdb/tic6x-tdep.c
enum type_code typecode = TYPE_CODE (arg_type);
val = value_contents (arg);
@@ -1108,7 +1108,8 @@
@@ -1105,7 +1105,8 @@
}
else
internal_error (__FILE__, __LINE__,
@ -1140,23 +1136,23 @@ Index: gdb-7.10.50.20160106/gdb/tic6x-tdep.c
addr = sp + stack_offset;
write_memory (addr, val, len);
Index: gdb-7.10.50.20160106/gdb/tilegx-tdep.c
Index: gdb-7.11.50.20160716/gdb/tilegx-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/tilegx-tdep.c 2016-01-08 19:16:16.640814257 +0100
+++ gdb-7.10.50.20160106/gdb/tilegx-tdep.c 2016-01-08 19:16:20.332834851 +0100
--- gdb-7.11.50.20160716.orig/gdb/tilegx-tdep.c 2016-07-16 14:35:45.434503072 +0200
+++ gdb-7.11.50.20160716/gdb/tilegx-tdep.c 2016-07-16 14:35:47.530519941 +0200
@@ -288,7 +288,7 @@
CORE_ADDR stack_dest = sp;
int argreg = TILEGX_R0_REGNUM;
int i, j;
- int typelen, slacklen, alignlen;
+ LONGEST typelen, slacklen, alignlen;
- int typelen, slacklen;
+ LONGEST typelen, slacklen;
static const gdb_byte four_zero_words[16] = { 0 };
/* If struct_return is 1, then the struct return address will
Index: gdb-7.10.50.20160106/gdb/v850-tdep.c
Index: gdb-7.11.50.20160716/gdb/v850-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/v850-tdep.c 2016-01-08 19:16:16.640814257 +0100
+++ gdb-7.10.50.20160106/gdb/v850-tdep.c 2016-01-08 19:16:20.332834851 +0100
--- gdb-7.11.50.20160716.orig/gdb/v850-tdep.c 2016-07-16 14:35:45.434503072 +0200
+++ gdb-7.11.50.20160716/gdb/v850-tdep.c 2016-07-16 14:35:47.530519941 +0200
@@ -1019,7 +1019,7 @@
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
int argreg;
@ -1175,10 +1171,10 @@ Index: gdb-7.10.50.20160106/gdb/v850-tdep.c
gdb_byte *val;
gdb_byte valbuf[v850_reg_size];
Index: gdb-7.10.50.20160106/gdb/vax-tdep.c
Index: gdb-7.11.50.20160716/gdb/vax-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/vax-tdep.c 2016-01-08 19:16:16.641814263 +0100
+++ gdb-7.10.50.20160106/gdb/vax-tdep.c 2016-01-08 19:16:20.333834856 +0100
--- gdb-7.11.50.20160716.orig/gdb/vax-tdep.c 2016-07-16 14:35:45.435503080 +0200
+++ gdb-7.11.50.20160716/gdb/vax-tdep.c 2016-07-16 14:35:47.530519941 +0200
@@ -111,7 +111,7 @@
struct gdbarch *gdbarch = get_regcache_arch (regcache);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@ -1197,10 +1193,10 @@ Index: gdb-7.10.50.20160106/gdb/vax-tdep.c
sp -= (len + 3) & ~3;
count += (len + 3) / 4;
Index: gdb-7.10.50.20160106/gdb/xstormy16-tdep.c
Index: gdb-7.11.50.20160716/gdb/xstormy16-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/xstormy16-tdep.c 2016-01-08 19:16:16.641814263 +0100
+++ gdb-7.10.50.20160106/gdb/xstormy16-tdep.c 2016-01-08 19:16:20.333834856 +0100
--- gdb-7.11.50.20160716.orig/gdb/xstormy16-tdep.c 2016-07-16 14:35:45.435503080 +0200
+++ gdb-7.11.50.20160716/gdb/xstormy16-tdep.c 2016-07-16 14:35:47.530519941 +0200
@@ -233,8 +233,9 @@
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
CORE_ADDR stack_dest = sp;
@ -1213,10 +1209,10 @@ Index: gdb-7.10.50.20160106/gdb/xstormy16-tdep.c
const gdb_byte *val;
gdb_byte buf[xstormy16_pc_size];
Index: gdb-7.10.50.20160106/gdb/xtensa-tdep.c
Index: gdb-7.11.50.20160716/gdb/xtensa-tdep.c
===================================================================
--- gdb-7.10.50.20160106.orig/gdb/xtensa-tdep.c 2016-01-08 19:16:16.643814274 +0100
+++ gdb-7.10.50.20160106/gdb/xtensa-tdep.c 2016-01-08 19:16:20.334834862 +0100
--- gdb-7.11.50.20160716.orig/gdb/xtensa-tdep.c 2016-07-16 14:35:45.437503096 +0200
+++ gdb-7.11.50.20160716/gdb/xtensa-tdep.c 2016-07-16 14:35:47.531519949 +0200
@@ -1638,8 +1638,7 @@
if (len > (callsize > 8 ? 8 : 16))

View File

@ -47,11 +47,11 @@ Content-Type: text/x-patch
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=f77-bounds.patch
Index: gdb-7.10.50.20151027/gdb/f-lang.h
Index: gdb-7.11.90.20160907/gdb/f-lang.h
===================================================================
--- gdb-7.10.50.20151027.orig/gdb/f-lang.h 2015-11-02 21:25:14.233161097 +0100
+++ gdb-7.10.50.20151027/gdb/f-lang.h 2015-11-02 21:25:22.404214860 +0100
@@ -62,9 +62,9 @@ struct common_block
--- gdb-7.11.90.20160907.orig/gdb/f-lang.h 2016-09-07 21:48:33.308624019 +0200
+++ gdb-7.11.90.20160907/gdb/f-lang.h 2016-09-07 21:48:40.967692469 +0200
@@ -49,9 +49,9 @@
struct symbol *contents[1];
};
@ -63,21 +63,21 @@ Index: gdb-7.10.50.20151027/gdb/f-lang.h
extern void f77_get_dynamic_array_length (struct type *);
Index: gdb-7.10.50.20151027/gdb/f-typeprint.c
Index: gdb-7.11.90.20160907/gdb/f-typeprint.c
===================================================================
--- gdb-7.10.50.20151027.orig/gdb/f-typeprint.c 2015-11-02 21:25:14.234161104 +0100
+++ gdb-7.10.50.20151027/gdb/f-typeprint.c 2015-11-02 21:25:22.404214860 +0100
@@ -171,7 +171,7 @@ f_type_print_varspec_suffix (struct type
--- gdb-7.11.90.20160907.orig/gdb/f-typeprint.c 2016-09-07 21:48:33.309624028 +0200
+++ gdb-7.11.90.20160907/gdb/f-typeprint.c 2016-09-07 21:48:40.967692469 +0200
@@ -147,7 +147,7 @@
int show, int passed_a_ptr, int demangled_args,
int arrayprint_recurse_level)
int arrayprint_recurse_level, int print_rank_only)
{
- int upper_bound, lower_bound;
+ LONGEST upper_bound, lower_bound;
/* No static variables are permitted as an error call may occur during
execution of this function. */
@@ -204,7 +204,7 @@ f_type_print_varspec_suffix (struct type
@@ -194,7 +194,7 @@
{
lower_bound = f77_get_lowerbound (type);
if (lower_bound != 1) /* Not the default. */
- fprintf_filtered (stream, "%d:", lower_bound);
@ -85,16 +85,16 @@ Index: gdb-7.10.50.20151027/gdb/f-typeprint.c
/* Make sure that, if we have an assumed size array, we
print out a warning and print the upperbound as '*'. */
@@ -214,7 +214,7 @@ f_type_print_varspec_suffix (struct type
@@ -204,7 +204,7 @@
else
{
upper_bound = f77_get_upperbound (type);
- fprintf_filtered (stream, "%d", upper_bound);
+ fprintf_filtered (stream, "%s", plongest (upper_bound));
}
}
if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_ARRAY)
@@ -283,7 +283,7 @@ void
@@ -276,7 +276,7 @@
f_type_print_base (struct type *type, struct ui_file *stream, int show,
int level)
{
@ -103,7 +103,7 @@ Index: gdb-7.10.50.20151027/gdb/f-typeprint.c
int index;
QUIT;
@@ -365,7 +365,7 @@ f_type_print_base (struct type *type, st
@@ -358,7 +358,7 @@
else
{
upper_bound = f77_get_upperbound (type);
@ -112,11 +112,11 @@ Index: gdb-7.10.50.20151027/gdb/f-typeprint.c
}
break;
Index: gdb-7.10.50.20151027/gdb/f-valprint.c
Index: gdb-7.11.90.20160907/gdb/f-valprint.c
===================================================================
--- gdb-7.10.50.20151027.orig/gdb/f-valprint.c 2015-11-02 21:25:14.234161104 +0100
+++ gdb-7.10.50.20151027/gdb/f-valprint.c 2015-11-02 21:25:22.405214867 +0100
@@ -43,7 +43,7 @@ LONGEST f77_array_offset_tbl[MAX_FORTRAN
--- gdb-7.11.90.20160907.orig/gdb/f-valprint.c 2016-09-07 21:48:33.309624028 +0200
+++ gdb-7.11.90.20160907/gdb/f-valprint.c 2016-09-07 21:48:40.967692469 +0200
@@ -43,7 +43,7 @@
/* Array which holds offsets to be applied to get a row's elements
for a given array. Array also holds the size of each subarray. */
@ -125,7 +125,7 @@ Index: gdb-7.10.50.20151027/gdb/f-valprint.c
f77_get_lowerbound (struct type *type)
{
if (TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED (type))
@@ -52,7 +52,7 @@ f77_get_lowerbound (struct type *type)
@@ -52,7 +52,7 @@
return TYPE_ARRAY_LOWER_BOUND_VALUE (type);
}

View File

@ -1,19 +1,7 @@
Index: gdb-7.10.50.20151022/gdb/value.c
===================================================================
--- gdb-7.10.50.20151022.orig/gdb/value.c 2015-10-24 23:17:04.042143628 +0200
+++ gdb-7.10.50.20151022/gdb/value.c 2015-10-24 23:17:27.687300689 +0200
@@ -934,7 +934,6 @@ allocate_value_lazy (struct type *type)
description correctly. */
check_typedef (type);
- ulongest_fits_host_or_error (TYPE_LENGTH (type));
val = XCNEW (struct value);
val->contents = NULL;
val->next = all_values;
Index: gdb-7.10.50.20151022/gdb/testsuite/gdb.base/longest-types-64bit.exp
Index: gdb-7.11.50.20160630/gdb/testsuite/gdb.base/longest-types-64bit.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.10.50.20151022/gdb/testsuite/gdb.base/longest-types-64bit.exp 2015-10-24 23:17:04.042143628 +0200
+++ gdb-7.11.50.20160630/gdb/testsuite/gdb.base/longest-types-64bit.exp 2016-07-03 15:00:57.617347850 +0200
@@ -0,0 +1,59 @@
+# This testcase is part of GDB, the GNU debugger.
+
@ -45,8 +33,8 @@ Index: gdb-7.10.50.20151022/gdb/testsuite/gdb.base/longest-types-64bit.exp
+
+# Test 64-bit file first as it is not compiled so its compilation never fails.
+
+set file64bitbz2uu ${srcdir}/${subdir}/${testfile}-64bit.bz2.uu
+set file64bit ${objdir}/${subdir}/${testfile}-64bit
+set file64bitbz2uu ${srcdir}/${subdir}/${testfile}.bz2.uu
+set file64bit ${objdir}/${subdir}/${testfile}
+
+if {[catch "system \"uudecode -o - ${file64bitbz2uu} | bzip2 -dc >${file64bit}\""] != 0} {
+ untested "failed uudecode or bzip2"
@ -60,7 +48,7 @@ Index: gdb-7.10.50.20151022/gdb/testsuite/gdb.base/longest-types-64bit.exp
+
+clean_restart ${file64bit}
+
+#if { [prepare_for_testing ${testfile}.exp ${testfile}-64bit $srcfile2 {nodebug}] } {
+#if { [prepare_for_testing ${testfile}.exp ${testfile} $srcfile2 {nodebug}] } {
+# return -1
+#}
+
@ -74,10 +62,10 @@ Index: gdb-7.10.50.20151022/gdb/testsuite/gdb.base/longest-types-64bit.exp
+}
+
+test "native"
Index: gdb-7.10.50.20151022/gdb/testsuite/gdb.base/longest-types-64bit.c
Index: gdb-7.11.50.20160630/gdb/testsuite/gdb.base/longest-types-64bit.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.10.50.20151022/gdb/testsuite/gdb.base/longest-types-64bit.c 2015-10-24 23:17:04.042143628 +0200
+++ gdb-7.11.50.20160630/gdb/testsuite/gdb.base/longest-types-64bit.c 2016-07-03 15:00:57.618347859 +0200
@@ -0,0 +1,28 @@
+/* This testcase is part of GDB, the GNU debugger.
+
@ -107,10 +95,10 @@ Index: gdb-7.10.50.20151022/gdb/testsuite/gdb.base/longest-types-64bit.c
+{
+ return 0;
+}
Index: gdb-7.10.50.20151022/gdb/testsuite/gdb.base/longest-types-64bit.S
Index: gdb-7.11.50.20160630/gdb/testsuite/gdb.base/longest-types-64bit.S
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.10.50.20151022/gdb/testsuite/gdb.base/longest-types-64bit.S 2015-10-24 23:17:04.042143628 +0200
+++ gdb-7.11.50.20160630/gdb/testsuite/gdb.base/longest-types-64bit.S 2016-07-03 15:00:57.618347859 +0200
@@ -0,0 +1,249 @@
+/* This testcase is part of GDB, the GNU debugger.
+
@ -361,10 +349,10 @@ Index: gdb-7.10.50.20151022/gdb/testsuite/gdb.base/longest-types-64bit.S
+ .string "char"
+ .ident "GCC: (GNU) 4.7.3 20121109 (prerelease)"
+ .section .note.GNU-stack,"",@progbits
Index: gdb-7.10.50.20151022/gdb/testsuite/gdb.base/longest-types-64bit.bz2.uu
Index: gdb-7.11.50.20160630/gdb/testsuite/gdb.base/longest-types-64bit.bz2.uu
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.10.50.20151022/gdb/testsuite/gdb.base/longest-types-64bit.bz2.uu 2015-10-24 23:17:04.042143628 +0200
+++ gdb-7.11.50.20160630/gdb/testsuite/gdb.base/longest-types-64bit.bz2.uu 2016-07-03 15:00:57.618347859 +0200
@@ -0,0 +1,67 @@
+begin 755 gdb.base/longest-types-64bit.bz2
+M0EIH.3%!62936<'N#OH`"G/________^______?_Y______//]7SQD5'^/_%

461
gdb-test-ivy-bridge.patch Normal file
View File

@ -0,0 +1,461 @@
Index: gdb-7.12/gdb/testsuite/gdb.arch/amd64-ivy-bridge.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.12/gdb/testsuite/gdb.arch/amd64-ivy-bridge.exp 2016-10-20 20:57:31.652630455 +0200
@@ -0,0 +1,170 @@
+# Copyright 2011 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if {![istarget "x86_64-*-*"]} then {
+ return
+}
+
+set testfile amd64-ivy-bridge
+set test compilation
+if [prepare_for_testing ${testfile}.exp ${testfile}.x ${testfile}.S [list debug "additional_flags=-m64 -nostdlib"]] {
+ fail $test
+ return -1
+}
+pass $test
+
+gdb_test_no_output "set disassembly-flavor att"
+# gas/i386/x86-64-rdrnd.d
+# gas/i386/x86-64-f16c.d
+# gas/i386/x86-64-fsgs.d
+gdb_test "disassemble/r _start" "\r
+Dump of assembler code for function _start:\r
+\[^\r\n\]+:\t66 0f c7 f3\t\( \)?rdrand %bx\r
+\[^\r\n\]+:\t0f c7 f3\t\( \)?rdrand %ebx\r
+\[^\r\n\]+:\t48 0f c7 f3\t\( \)?rdrand %rbx\r
+\[^\r\n\]+:\t66 41 0f c7 f0\t\( \)?rdrand %r8w\r
+\[^\r\n\]+:\t41 0f c7 f0\t\( \)?rdrand %r8d\r
+\[^\r\n\]+:\t49 0f c7 f0\t\( \)?rdrand %r8\r
+\[^\r\n\]+:\t66 0f c7 f3\t\( \)?rdrand %bx\r
+\[^\r\n\]+:\t0f c7 f3\t\( \)?rdrand %ebx\r
+\[^\r\n\]+:\t48 0f c7 f3\t\( \)?rdrand %rbx\r
+\[^\r\n\]+:\t66 41 0f c7 f0\t\( \)?rdrand %r8w\r
+\[^\r\n\]+:\t41 0f c7 f0\t\( \)?rdrand %r8d\r
+\[^\r\n\]+:\t49 0f c7 f0\t\( \)?rdrand %r8\r
+\[^\r\n\]+:\tc4 e2 7d 13 e4\t\( \)?vcvtph2ps %xmm4,%ymm4\r
+\[^\r\n\]+:\tc4 42 7d 13 00\t\( \)?vcvtph2ps \\(%r8\\),%ymm8\r
+\[^\r\n\]+:\tc4 e2 79 13 f4\t\( \)?vcvtph2ps %xmm4,%xmm6\r
+\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps \\(%rcx\\),%xmm4\r
+\[^\r\n\]+:\tc4 e3 7d 1d e4 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,%xmm4\r
+\[^\r\n\]+:\tc4 43 7d 1d 00 02\t\( \)?vcvtps2ph \\\$0x2,%ymm8,\\(%r8\\)\r
+\[^\r\n\]+:\tc4 e3 79 1d e4 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,%xmm4\r
+\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,\\(%rcx\\)\r
+\[^\r\n\]+:\tc4 e2 7d 13 e4\t\( \)?vcvtph2ps %xmm4,%ymm4\r
+\[^\r\n\]+:\tc4 42 7d 13 00\t\( \)?vcvtph2ps \\(%r8\\),%ymm8\r
+\[^\r\n\]+:\tc4 e2 7d 13 21\t\( \)?vcvtph2ps \\(%rcx\\),%ymm4\r
+\[^\r\n\]+:\tc4 e2 79 13 f4\t\( \)?vcvtph2ps %xmm4,%xmm6\r
+\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps \\(%rcx\\),%xmm4\r
+\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps \\(%rcx\\),%xmm4\r
+\[^\r\n\]+:\tc4 e3 7d 1d e4 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,%xmm4\r
+\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,\\(%rcx\\)\r
+\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,\\(%rcx\\)\r
+\[^\r\n\]+:\tc4 e3 79 1d e4 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,%xmm4\r
+\[^\r\n\]+:\tc4 43 79 1d 00 02\t\( \)?vcvtps2ph \\\$0x2,%xmm8,\\(%r8\\)\r
+\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,\\(%rcx\\)\r
+\[^\r\n\]+:\tf3 0f ae c3\t\( \)?rdfsbase %ebx\r
+\[^\r\n\]+:\tf3 48 0f ae c3\t\( \)?rdfsbase %rbx\r
+\[^\r\n\]+:\tf3 41 0f ae c0\t\( \)?rdfsbase %r8d\r
+\[^\r\n\]+:\tf3 49 0f ae c0\t\( \)?rdfsbase %r8\r
+\[^\r\n\]+:\tf3 0f ae cb\t\( \)?rdgsbase %ebx\r
+\[^\r\n\]+:\tf3 48 0f ae cb\t\( \)?rdgsbase %rbx\r
+\[^\r\n\]+:\tf3 41 0f ae c8\t\( \)?rdgsbase %r8d\r
+\[^\r\n\]+:\tf3 49 0f ae c8\t\( \)?rdgsbase %r8\r
+\[^\r\n\]+:\tf3 0f ae d3\t\( \)?wrfsbase %ebx\r
+\[^\r\n\]+:\tf3 48 0f ae d3\t\( \)?wrfsbase %rbx\r
+\[^\r\n\]+:\tf3 41 0f ae d0\t\( \)?wrfsbase %r8d\r
+\[^\r\n\]+:\tf3 49 0f ae d0\t\( \)?wrfsbase %r8\r
+\[^\r\n\]+:\tf3 0f ae db\t\( \)?wrgsbase %ebx\r
+\[^\r\n\]+:\tf3 48 0f ae db\t\( \)?wrgsbase %rbx\r
+\[^\r\n\]+:\tf3 41 0f ae d8\t\( \)?wrgsbase %r8d\r
+\[^\r\n\]+:\tf3 49 0f ae d8\t\( \)?wrgsbase %r8\r
+\[^\r\n\]+:\tf3 0f ae c3\t\( \)?rdfsbase %ebx\r
+\[^\r\n\]+:\tf3 48 0f ae c3\t\( \)?rdfsbase %rbx\r
+\[^\r\n\]+:\tf3 41 0f ae c0\t\( \)?rdfsbase %r8d\r
+\[^\r\n\]+:\tf3 49 0f ae c0\t\( \)?rdfsbase %r8\r
+\[^\r\n\]+:\tf3 0f ae cb\t\( \)?rdgsbase %ebx\r
+\[^\r\n\]+:\tf3 48 0f ae cb\t\( \)?rdgsbase %rbx\r
+\[^\r\n\]+:\tf3 41 0f ae c8\t\( \)?rdgsbase %r8d\r
+\[^\r\n\]+:\tf3 49 0f ae c8\t\( \)?rdgsbase %r8\r
+\[^\r\n\]+:\tf3 0f ae d3\t\( \)?wrfsbase %ebx\r
+\[^\r\n\]+:\tf3 48 0f ae d3\t\( \)?wrfsbase %rbx\r
+\[^\r\n\]+:\tf3 41 0f ae d0\t\( \)?wrfsbase %r8d\r
+\[^\r\n\]+:\tf3 49 0f ae d0\t\( \)?wrfsbase %r8\r
+\[^\r\n\]+:\tf3 0f ae db\t\( \)?wrgsbase %ebx\r
+\[^\r\n\]+:\tf3 48 0f ae db\t\( \)?wrgsbase %rbx\r
+\[^\r\n\]+:\tf3 41 0f ae d8\t\( \)?wrgsbase %r8d\r
+\[^\r\n\]+:\tf3 49 0f ae d8\t\( \)?wrgsbase %r8\r
+End of assembler dump\\." "att"
+
+gdb_test_no_output "set disassembly-flavor intel"
+# gas/i386/x86-64-rdrnd-intel.d
+# gas/i386/x86-64-f16c-intel.d
+# gas/i386/x86-64-fsgs-intel.d
+gdb_test "disassemble/r _start" "\r
+Dump of assembler code for function _start:\r
+\[^\r\n\]+:\t66 0f c7 f3\t\( \)?rdrand bx\r
+\[^\r\n\]+:\t0f c7 f3\t\( \)?rdrand ebx\r
+\[^\r\n\]+:\t48 0f c7 f3\t\( \)?rdrand rbx\r
+\[^\r\n\]+:\t66 41 0f c7 f0\t\( \)?rdrand r8w\r
+\[^\r\n\]+:\t41 0f c7 f0\t\( \)?rdrand r8d\r
+\[^\r\n\]+:\t49 0f c7 f0\t\( \)?rdrand r8\r
+\[^\r\n\]+:\t66 0f c7 f3\t\( \)?rdrand bx\r
+\[^\r\n\]+:\t0f c7 f3\t\( \)?rdrand ebx\r
+\[^\r\n\]+:\t48 0f c7 f3\t\( \)?rdrand rbx\r
+\[^\r\n\]+:\t66 41 0f c7 f0\t\( \)?rdrand r8w\r
+\[^\r\n\]+:\t41 0f c7 f0\t\( \)?rdrand r8d\r
+\[^\r\n\]+:\t49 0f c7 f0\t\( \)?rdrand r8\r
+\[^\r\n\]+:\tc4 e2 7d 13 e4\t\( \)?vcvtph2ps ymm4,xmm4\r
+\[^\r\n\]+:\tc4 42 7d 13 00\t\( \)?vcvtph2ps ymm8,XMMWORD PTR \\\[r8\\\]\r
+\[^\r\n\]+:\tc4 e2 79 13 f4\t\( \)?vcvtph2ps xmm6,xmm4\r
+\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps xmm4,QWORD PTR \\\[rcx\\\]\r
+\[^\r\n\]+:\tc4 e3 7d 1d e4 02\t\( \)?vcvtps2ph xmm4,ymm4,0x2\r
+\[^\r\n\]+:\tc4 43 7d 1d 00 02\t\( \)?vcvtps2ph XMMWORD PTR \\\[r8\\\],ymm8,0x2\r
+\[^\r\n\]+:\tc4 e3 79 1d e4 02\t\( \)?vcvtps2ph xmm4,xmm4,0x2\r
+\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph QWORD PTR \\\[rcx\\\],xmm4,0x2\r
+\[^\r\n\]+:\tc4 e2 7d 13 e4\t\( \)?vcvtph2ps ymm4,xmm4\r
+\[^\r\n\]+:\tc4 42 7d 13 00\t\( \)?vcvtph2ps ymm8,XMMWORD PTR \\\[r8\\\]\r
+\[^\r\n\]+:\tc4 e2 7d 13 21\t\( \)?vcvtph2ps ymm4,XMMWORD PTR \\\[rcx\\\]\r
+\[^\r\n\]+:\tc4 e2 79 13 f4\t\( \)?vcvtph2ps xmm6,xmm4\r
+\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps xmm4,QWORD PTR \\\[rcx\\\]\r
+\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps xmm4,QWORD PTR \\\[rcx\\\]\r
+\[^\r\n\]+:\tc4 e3 7d 1d e4 02\t\( \)?vcvtps2ph xmm4,ymm4,0x2\r
+\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph XMMWORD PTR \\\[rcx\\\],ymm4,0x2\r
+\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph XMMWORD PTR \\\[rcx\\\],ymm4,0x2\r
+\[^\r\n\]+:\tc4 e3 79 1d e4 02\t\( \)?vcvtps2ph xmm4,xmm4,0x2\r
+\[^\r\n\]+:\tc4 43 79 1d 00 02\t\( \)?vcvtps2ph QWORD PTR \\\[r8\\\],xmm8,0x2\r
+\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph QWORD PTR \\\[rcx\\\],xmm4,0x2\r
+\[^\r\n\]+:\tf3 0f ae c3\t\( \)?rdfsbase ebx\r
+\[^\r\n\]+:\tf3 48 0f ae c3\t\( \)?rdfsbase rbx\r
+\[^\r\n\]+:\tf3 41 0f ae c0\t\( \)?rdfsbase r8d\r
+\[^\r\n\]+:\tf3 49 0f ae c0\t\( \)?rdfsbase r8\r
+\[^\r\n\]+:\tf3 0f ae cb\t\( \)?rdgsbase ebx\r
+\[^\r\n\]+:\tf3 48 0f ae cb\t\( \)?rdgsbase rbx\r
+\[^\r\n\]+:\tf3 41 0f ae c8\t\( \)?rdgsbase r8d\r
+\[^\r\n\]+:\tf3 49 0f ae c8\t\( \)?rdgsbase r8\r
+\[^\r\n\]+:\tf3 0f ae d3\t\( \)?wrfsbase ebx\r
+\[^\r\n\]+:\tf3 48 0f ae d3\t\( \)?wrfsbase rbx\r
+\[^\r\n\]+:\tf3 41 0f ae d0\t\( \)?wrfsbase r8d\r
+\[^\r\n\]+:\tf3 49 0f ae d0\t\( \)?wrfsbase r8\r
+\[^\r\n\]+:\tf3 0f ae db\t\( \)?wrgsbase ebx\r
+\[^\r\n\]+:\tf3 48 0f ae db\t\( \)?wrgsbase rbx\r
+\[^\r\n\]+:\tf3 41 0f ae d8\t\( \)?wrgsbase r8d\r
+\[^\r\n\]+:\tf3 49 0f ae d8\t\( \)?wrgsbase r8\r
+\[^\r\n\]+:\tf3 0f ae c3\t\( \)?rdfsbase ebx\r
+\[^\r\n\]+:\tf3 48 0f ae c3\t\( \)?rdfsbase rbx\r
+\[^\r\n\]+:\tf3 41 0f ae c0\t\( \)?rdfsbase r8d\r
+\[^\r\n\]+:\tf3 49 0f ae c0\t\( \)?rdfsbase r8\r
+\[^\r\n\]+:\tf3 0f ae cb\t\( \)?rdgsbase ebx\r
+\[^\r\n\]+:\tf3 48 0f ae cb\t\( \)?rdgsbase rbx\r
+\[^\r\n\]+:\tf3 41 0f ae c8\t\( \)?rdgsbase r8d\r
+\[^\r\n\]+:\tf3 49 0f ae c8\t\( \)?rdgsbase r8\r
+\[^\r\n\]+:\tf3 0f ae d3\t\( \)?wrfsbase ebx\r
+\[^\r\n\]+:\tf3 48 0f ae d3\t\( \)?wrfsbase rbx\r
+\[^\r\n\]+:\tf3 41 0f ae d0\t\( \)?wrfsbase r8d\r
+\[^\r\n\]+:\tf3 49 0f ae d0\t\( \)?wrfsbase r8\r
+\[^\r\n\]+:\tf3 0f ae db\t\( \)?wrgsbase ebx\r
+\[^\r\n\]+:\tf3 48 0f ae db\t\( \)?wrgsbase rbx\r
+\[^\r\n\]+:\tf3 41 0f ae d8\t\( \)?wrgsbase r8d\r
+\[^\r\n\]+:\tf3 49 0f ae d8\t\( \)?wrgsbase r8\r
+End of assembler dump\\." "intel"
Index: gdb-7.12/gdb/testsuite/gdb.arch/i386-ivy-bridge.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.12/gdb/testsuite/gdb.arch/i386-ivy-bridge.exp 2016-10-20 20:57:43.251721147 +0200
@@ -0,0 +1,106 @@
+# Copyright 2011 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if {![istarget "x86_64-*-*"] && ![istarget "i?86-*-*"]} then {
+ return
+}
+
+set testfile i386-ivy-bridge
+set test compilation
+if [prepare_for_testing ${testfile}.exp ${testfile}.x ${testfile}.S [list debug "additional_flags=-m32 -nostdlib"]] {
+ fail $test
+ return -1
+}
+pass $test
+
+gdb_test_no_output "set disassembly-flavor att"
+# gas/i386/rdrnd.d
+# gas/i386/f16c.d
+# gas/i386/fsgs.d
+gdb_test "disassemble/r _start" "\r
+Dump of assembler code for function _start:\r
+\[^\r\n\]+:\t66 0f c7 f3\t\( \)?rdrand %bx\r
+\[^\r\n\]+:\t0f c7 f3\t\( \)?rdrand %ebx\r
+\[^\r\n\]+:\t66 0f c7 f3\t\( \)?rdrand %bx\r
+\[^\r\n\]+:\t0f c7 f3\t\( \)?rdrand %ebx\r
+\[^\r\n\]+:\tc4 e2 7d 13 e4\t\( \)?vcvtph2ps %xmm4,%ymm4\r
+\[^\r\n\]+:\tc4 e2 7d 13 21\t\( \)?vcvtph2ps \\(%ecx\\),%ymm4\r
+\[^\r\n\]+:\tc4 e2 79 13 f4\t\( \)?vcvtph2ps %xmm4,%xmm6\r
+\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps \\(%ecx\\),%xmm4\r
+\[^\r\n\]+:\tc4 e3 7d 1d e4 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,%xmm4\r
+\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,\\(%ecx\\)\r
+\[^\r\n\]+:\tc4 e3 79 1d e4 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,%xmm4\r
+\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,\\(%ecx\\)\r
+\[^\r\n\]+:\tc4 e2 7d 13 e4\t\( \)?vcvtph2ps %xmm4,%ymm4\r
+\[^\r\n\]+:\tc4 e2 7d 13 21\t\( \)?vcvtph2ps \\(%ecx\\),%ymm4\r
+\[^\r\n\]+:\tc4 e2 7d 13 21\t\( \)?vcvtph2ps \\(%ecx\\),%ymm4\r
+\[^\r\n\]+:\tc4 e2 79 13 f4\t\( \)?vcvtph2ps %xmm4,%xmm6\r
+\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps \\(%ecx\\),%xmm4\r
+\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps \\(%ecx\\),%xmm4\r
+\[^\r\n\]+:\tc4 e3 7d 1d e4 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,%xmm4\r
+\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,\\(%ecx\\)\r
+\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,\\(%ecx\\)\r
+\[^\r\n\]+:\tc4 e3 79 1d e4 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,%xmm4\r
+\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,\\(%ecx\\)\r
+\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,\\(%ecx\\)\r
+\[^\r\n\]+:\tf3 0f ae c3\t\( \)?rdfsbase %ebx\r
+\[^\r\n\]+:\tf3 0f ae cb\t\( \)?rdgsbase %ebx\r
+\[^\r\n\]+:\tf3 0f ae d3\t\( \)?wrfsbase %ebx\r
+\[^\r\n\]+:\tf3 0f ae db\t\( \)?wrgsbase %ebx\r
+\[^\r\n\]+:\tf3 0f ae c3\t\( \)?rdfsbase %ebx\r
+\[^\r\n\]+:\tf3 0f ae cb\t\( \)?rdgsbase %ebx\r
+\[^\r\n\]+:\tf3 0f ae d3\t\( \)?wrfsbase %ebx\r
+\[^\r\n\]+:\tf3 0f ae db\t\( \)?wrgsbase %ebx\r
+End of assembler dump\\." "att"
+
+gdb_test_no_output "set disassembly-flavor intel"
+# gas/i386/rdrnd-intel.d
+# gas/i386/f16c-intel.d
+# gas/i386/fsgs-intel.d
+gdb_test "disassemble/r _start" "\r
+Dump of assembler code for function _start:\r
+\[^\r\n\]+:\t66 0f c7 f3\t\( \)?rdrand bx\r
+\[^\r\n\]+:\t0f c7 f3\t\( \)?rdrand ebx\r
+\[^\r\n\]+:\t66 0f c7 f3\t\( \)?rdrand bx\r
+\[^\r\n\]+:\t0f c7 f3\t\( \)?rdrand ebx\r
+\[^\r\n\]+:\tc4 e2 7d 13 e4\t\( \)?vcvtph2ps ymm4,xmm4\r
+\[^\r\n\]+:\tc4 e2 7d 13 21\t\( \)?vcvtph2ps ymm4,XMMWORD PTR \\\[ecx\\\]\r
+\[^\r\n\]+:\tc4 e2 79 13 f4\t\( \)?vcvtph2ps xmm6,xmm4\r
+\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps xmm4,QWORD PTR \\\[ecx\\\]\r
+\[^\r\n\]+:\tc4 e3 7d 1d e4 02\t\( \)?vcvtps2ph xmm4,ymm4,0x2\r
+\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph XMMWORD PTR \\\[ecx\\\],ymm4,0x2\r
+\[^\r\n\]+:\tc4 e3 79 1d e4 02\t\( \)?vcvtps2ph xmm4,xmm4,0x2\r
+\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph QWORD PTR \\\[ecx\\\],xmm4,0x2\r
+\[^\r\n\]+:\tc4 e2 7d 13 e4\t\( \)?vcvtph2ps ymm4,xmm4\r
+\[^\r\n\]+:\tc4 e2 7d 13 21\t\( \)?vcvtph2ps ymm4,XMMWORD PTR \\\[ecx\\\]\r
+\[^\r\n\]+:\tc4 e2 7d 13 21\t\( \)?vcvtph2ps ymm4,XMMWORD PTR \\\[ecx\\\]\r
+\[^\r\n\]+:\tc4 e2 79 13 f4\t\( \)?vcvtph2ps xmm6,xmm4\r
+\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps xmm4,QWORD PTR \\\[ecx\\\]\r
+\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps xmm4,QWORD PTR \\\[ecx\\\]\r
+\[^\r\n\]+:\tc4 e3 7d 1d e4 02\t\( \)?vcvtps2ph xmm4,ymm4,0x2\r
+\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph XMMWORD PTR \\\[ecx\\\],ymm4,0x2\r
+\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph XMMWORD PTR \\\[ecx\\\],ymm4,0x2\r
+\[^\r\n\]+:\tc4 e3 79 1d e4 02\t\( \)?vcvtps2ph xmm4,xmm4,0x2\r
+\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph QWORD PTR \\\[ecx\\\],xmm4,0x2\r
+\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph QWORD PTR \\\[ecx\\\],xmm4,0x2\r
+\[^\r\n\]+:\tf3 0f ae c3\t\( \)?rdfsbase ebx\r
+\[^\r\n\]+:\tf3 0f ae cb\t\( \)?rdgsbase ebx\r
+\[^\r\n\]+:\tf3 0f ae d3\t\( \)?wrfsbase ebx\r
+\[^\r\n\]+:\tf3 0f ae db\t\( \)?wrgsbase ebx\r
+\[^\r\n\]+:\tf3 0f ae c3\t\( \)?rdfsbase ebx\r
+\[^\r\n\]+:\tf3 0f ae cb\t\( \)?rdgsbase ebx\r
+\[^\r\n\]+:\tf3 0f ae d3\t\( \)?wrfsbase ebx\r
+\[^\r\n\]+:\tf3 0f ae db\t\( \)?wrgsbase ebx\r
+End of assembler dump\\." "intel"
Index: gdb-7.12/gdb/testsuite/gdb.arch/amd64-ivy-bridge.S
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.12/gdb/testsuite/gdb.arch/amd64-ivy-bridge.S 2016-10-20 20:55:50.853842324 +0200
@@ -0,0 +1,98 @@
+/* Copyright 2011 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ This file is part of the gdb testsuite. */
+
+ .globl _start
+_start: .text
+
+/* gas/i386/x86-64-rdrnd.s */
+ .att_syntax prefix
+ rdrand %bx
+ rdrand %ebx
+ rdrand %rbx
+ rdrand %r8w
+ rdrand %r8d
+ rdrand %r8
+
+ .intel_syntax noprefix
+ rdrand bx
+ rdrand ebx
+ rdrand rbx
+ rdrand r8w
+ rdrand r8d
+ rdrand r8
+
+/* gas/i386/x86-64-f16c.s */
+ .att_syntax prefix
+ vcvtph2ps %xmm4,%ymm4
+ vcvtph2ps (%r8),%ymm8
+ vcvtph2ps %xmm4,%xmm6
+ vcvtph2ps (%rcx),%xmm4
+ vcvtps2ph $0x2,%ymm4,%xmm4
+ vcvtps2ph $0x2,%ymm8,(%r8)
+ vcvtps2ph $0x2,%xmm4,%xmm4
+ vcvtps2ph $0x2,%xmm4,(%rcx)
+
+ .intel_syntax noprefix
+ vcvtph2ps ymm4,xmm4
+ vcvtph2ps ymm8,XMMWORD PTR [r8]
+ vcvtph2ps ymm4,[rcx]
+ vcvtph2ps xmm6,xmm4
+ vcvtph2ps xmm4,QWORD PTR [rcx]
+ vcvtph2ps xmm4,[rcx]
+ vcvtps2ph xmm4,ymm4,0x2
+ vcvtps2ph XMMWORD PTR [rcx],ymm4,0x2
+ vcvtps2ph [rcx],ymm4,0x2
+ vcvtps2ph xmm4,xmm4,0x2
+ vcvtps2ph QWORD PTR [r8],xmm8,0x2
+ vcvtps2ph [rcx],xmm4,0x2
+
+/* gas/i386/x86-64-fsgs.s */
+ .att_syntax prefix
+ rdfsbase %ebx
+ rdfsbase %rbx
+ rdfsbase %r8d
+ rdfsbase %r8
+ rdgsbase %ebx
+ rdgsbase %rbx
+ rdgsbase %r8d
+ rdgsbase %r8
+ wrfsbase %ebx
+ wrfsbase %rbx
+ wrfsbase %r8d
+ wrfsbase %r8
+ wrgsbase %ebx
+ wrgsbase %rbx
+ wrgsbase %r8d
+ wrgsbase %r8
+
+ .intel_syntax noprefix
+ rdfsbase ebx
+ rdfsbase rbx
+ rdfsbase r8d
+ rdfsbase r8
+ rdgsbase ebx
+ rdgsbase rbx
+ rdgsbase r8d
+ rdgsbase r8
+ wrfsbase ebx
+ wrfsbase rbx
+ wrfsbase r8d
+ wrfsbase r8
+ wrgsbase ebx
+ wrgsbase rbx
+ wrgsbase r8d
+ wrgsbase r8
Index: gdb-7.12/gdb/testsuite/gdb.arch/i386-ivy-bridge.S
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.12/gdb/testsuite/gdb.arch/i386-ivy-bridge.S 2016-10-20 20:55:50.853842324 +0200
@@ -0,0 +1,67 @@
+/* Copyright 2011 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ This file is part of the gdb testsuite. */
+
+ .globl _start
+_start: .text
+
+/* gas/i386/rdrnd.s */
+ .att_syntax prefix
+ rdrand %bx
+ rdrand %ebx
+
+ .intel_syntax noprefix
+ rdrand bx
+ rdrand ebx
+
+/* gas/i386/f16c.s */
+ .att_syntax prefix
+ vcvtph2ps %xmm4,%ymm4
+ vcvtph2ps (%ecx),%ymm4
+ vcvtph2ps %xmm4,%xmm6
+ vcvtph2ps (%ecx),%xmm4
+ vcvtps2ph $0x2,%ymm4,%xmm4
+ vcvtps2ph $0x2,%ymm4,(%ecx)
+ vcvtps2ph $0x2,%xmm4,%xmm4
+ vcvtps2ph $0x2,%xmm4,(%ecx)
+
+ .intel_syntax noprefix
+ vcvtph2ps ymm4,xmm4
+ vcvtph2ps ymm4,XMMWORD PTR [ecx]
+ vcvtph2ps ymm4,[ecx]
+ vcvtph2ps xmm6,xmm4
+ vcvtph2ps xmm4,QWORD PTR [ecx]
+ vcvtph2ps xmm4,[ecx]
+ vcvtps2ph xmm4,ymm4,0x2
+ vcvtps2ph XMMWORD PTR [ecx],ymm4,0x2
+ vcvtps2ph [ecx],ymm4,0x2
+ vcvtps2ph xmm4,xmm4,0x2
+ vcvtps2ph QWORD PTR [ecx],xmm4,0x2
+ vcvtps2ph [ecx],xmm4,0x2
+
+/* gas/i386/fsgs.s */
+ .att_syntax prefix
+ rdfsbase %ebx
+ rdgsbase %ebx
+ wrfsbase %ebx
+ wrgsbase %ebx
+
+ .intel_syntax noprefix
+ rdfsbase ebx
+ rdgsbase ebx
+ wrfsbase ebx
+ wrgsbase ebx
+

80
gdb-testsuite-casts.patch Normal file
View File

@ -0,0 +1,80 @@
http://sourceware.org/ml/gdb-patches/2016-09/msg00082.html
Subject: [testsuite patch] Fix false FAIL in gdb.cp/casts.exp
--ikeVEW9yuYc//A+q
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Hi,
gcc-6.2.1-1.fc26.x86_64
gdb compile failed, /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc:40:10: error: expected primary-expression before 'int'
decltype(int x)
^~~
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc:40:10: error: expected ')' before 'int'
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc:40:1: error: expected unqualified-id before 'decltype'
decltype(int x)
^~~~~~~~
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc: In function 'int main(int, char**)':
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc:59:14: error: expected primary-expression before 'decltype'
double y = decltype(2);
^~~~~~~~
'decltype' is a registered keyword since C++11 which is now a default for GCC.
OK for check-in?
Jan
--ikeVEW9yuYc//A+q
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline; filename=1
gdb/testsuite/ChangeLog
2016-09-11 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.cp/casts.cc: Rename decltype to int_to_double.
* gdb.cp/casts.exp (whatis decltype(5)): Rename to ...
(whatis int_to_double(5)): ... here.
diff --git a/gdb/testsuite/gdb.cp/casts.cc b/gdb/testsuite/gdb.cp/casts.cc
index 43f112f..4f68ba0 100644
--- a/gdb/testsuite/gdb.cp/casts.cc
+++ b/gdb/testsuite/gdb.cp/casts.cc
@@ -37,7 +37,7 @@ struct DoublyDerived : public VirtuallyDerived,
// Confuse a simpler approach.
double
-decltype(int x)
+int_to_double(int x)
{
return x + 2.0;
}
@@ -56,7 +56,7 @@ main (int argc, char **argv)
Alpha *ad = &derived;
Alpha *add = &doublyderived;
- double y = decltype(2);
+ double y = int_to_double(2);
return 0; /* breakpoint spot: casts.exp: 1 */
}
diff --git a/gdb/testsuite/gdb.cp/casts.exp b/gdb/testsuite/gdb.cp/casts.exp
index 34a2492..5798098 100644
--- a/gdb/testsuite/gdb.cp/casts.exp
+++ b/gdb/testsuite/gdb.cp/casts.exp
@@ -112,7 +112,7 @@ gdb_test "print reinterpret_cast<A &> (*b)" " = \\(A \\&\\) @$hex: {a = 42}" \
# Test that keyword shadowing works.
-gdb_test "whatis decltype(5)" " = double"
+gdb_test "whatis int_to_double(5)" " = double"
# Basic tests using typeof.
--ikeVEW9yuYc//A+q--

View File

@ -0,0 +1,79 @@
http://sourceware.org/ml/gdb-patches/2016-09/msg00083.html
Subject: [testsuite patch] Fix C++11 compilation failure for gdb.cp/m-static.exp
--y0ulUmNC+osPPQO6
Content-Type: text/plain; charset=iso-2022-jp
Content-Disposition: inline
Hi,
gcc-6.2.1-1.fc26.x86_64
g++ -std=c++03:
no warnings
g++:
In file included from /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.cc:79:0:
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.h:9:34: error: $B!F(Bconstexpr$B!G(B needed for in-class initialization of static data member $B!F(Bconst float gnu_obj_4::somewhere$B!G(B of non-integral type [-fpermissive]
static const float somewhere = 3.14159;
^~~~~~~
clang++:
In file included from /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.cc:79:
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.h:9:22: warning: in-class initializer for static data member of type 'const float' is a GNU extension [-Wgnu-static-float-init]
static const float somewhere = 3.14159;
^ ~~~~~~~
1 warning generated.
clang++ -std=c++11:
In file included from /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.cc:79:
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.h:9:22: error: in-class initializer for static data member of type 'const float' requires 'constexpr' specifier [-Wstatic-float-init]
static const float somewhere = 3.14159;
^ ~~~~~~~
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.h:9:3: note: add 'constexpr'
static const float somewhere = 3.14159;
^
constexpr
1 error generated.
OK for check-in?
After the fix out of the 4 combinations above only this one remains non-empty:
clang++:
In file included from /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.cc:79:
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.h:9:22: warning: in-class initializer for static data member of type 'const float' is a GNU extension [-Wgnu-static-float-init]
static const float somewhere = 3.14159;
^ ~~~~~~~
1 warning generated.
Jan
--y0ulUmNC+osPPQO6
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline; filename=1
gdb/testsuite/ChangeLog
2016-09-11 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.cp/m-static.h (gnu_obj_4::somewhere): Use constexpr for C++11.
diff --git a/gdb/testsuite/gdb.cp/m-static.h b/gdb/testsuite/gdb.cp/m-static.h
index bcedfff..2992463 100644
--- a/gdb/testsuite/gdb.cp/m-static.h
+++ b/gdb/testsuite/gdb.cp/m-static.h
@@ -6,6 +6,9 @@ class gnu_obj_4
static const int elsewhere;
static const int nowhere;
static const int everywhere = 317;
+#if __cplusplus >= 201103L
+ constexpr
+#endif
static const float somewhere = 3.14159;
// try to ensure test4 is actually allocated
--y0ulUmNC+osPPQO6--

View File

@ -0,0 +1,83 @@
http://sourceware.org/ml/gdb-patches/2016-10/msg00652.html
Subject: [testsuite patch] Fix false FAIL for gdb.base/morestack.exp
--HlL+5n6rz5pIUxbD
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Hi,
since
[commit] [testsuite patch] Fix gcc_compiled for gcc 6 & 7
https://sourceware.org/ml/gdb-patches/2016-10/msg00620.html
there has started running again
Running gdb/testsuite/gdb.base/morestack.exp ...
+FAIL: gdb.base/morestack.exp: continue
+PASS: gdb.base/morestack.exp: up 3000
but as you can see it FAILs now - on Fedora 24 x86_64 (although for example it
still PASSes on CentOS-7.2 x86_64).
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff787c7bb in malloc_consolidate (av=av@entry=0x7ffff7bbcb00 <main_arena>) at malloc.c:4181
4181 unlink(av, nextchunk, bck, fwd);
(gdb) bt
#0 0x00007ffff787c7bb in malloc_consolidate (av=av@entry=0x7ffff7bbcb00 <main_arena>) at malloc.c:4181
#1 0x00007ffff787f235 in _int_malloc (av=av@entry=0x7ffff7bbcb00 <main_arena>, bytes=bytes@entry=1024) at malloc.c:3448
[...]
#8 0x00007ffff784c5ac in _IO_vfprintf_internal (s=0x7ffff7bbd600 <_IO_2_1_stdout_>, format=<optimized out>, ap=ap@entry=0x7ffff77fd7f8) at vfprintf.c:1631
#9 0x00007ffff7853939 in __printf (format=<optimized out>) at printf.c:33
#10 0x0000000000400d6b in down ()
#11 0x0000000000400f2c in __morestack ()
#12 0x0000000000400dda in down ()
[...]
This apparently is due to - man gcc - -fsplit-stack:
When code compiled with -fsplit-stack calls code compiled without
-fsplit-stack, there may not be much stack space available for the
latter code to run. If compiling all code, including library code,
with -fsplit-stack is not an option, then the linker can fix up these
calls so that the code compiled without -fsplit-stack always has
a large stack. Support for this is implemented in the gold linker in
GNU binutils release 2.21 and later.
Personally I do not understand why gold is not the default linker as GNU ld is
unusably slow (6x) for C++ but that is off-topic here.
OK for check-in?
Thanks,
Jan
--HlL+5n6rz5pIUxbD
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline; filename=1
gdb/testsuite/ChangeLog
2016-10-22 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.base/morestack.exp: Try to build it using -fuse-ld=gold first.
diff --git a/gdb/testsuite/gdb.base/morestack.exp b/gdb/testsuite/gdb.base/morestack.exp
index 12f5d28..caa85b8 100644
--- a/gdb/testsuite/gdb.base/morestack.exp
+++ b/gdb/testsuite/gdb.base/morestack.exp
@@ -23,7 +23,11 @@ if {$gcc_compiled == 0} {
standard_testfile
-if { [prepare_for_testing ${testfile}.exp ${testfile} $srcfile {additional_flags=-fsplit-stack}] } {
+# -fuse-ld=gold is used for calling printf code built without -fsplit-stack
+# which could crash otherise. See GCC documentation of -fsplit-stack.
+set opts "additional_flags=-fsplit-stack"
+if { [prepare_for_testing ${testfile}.exp ${testfile} $srcfile [list $opts additional_flags=-fuse-ld=gold]] \
+ && [prepare_for_testing ${testfile}.exp ${testfile} $srcfile $opts] } {
return -1
}
--HlL+5n6rz5pIUxbD--

47
gdb-tls-1of2.patch Normal file
View File

@ -0,0 +1,47 @@
http://sourceware.org/ml/gdb-patches/2016-10/msg00206.html
Subject: [patch+7.12.1 1/2] Code cleanup: write_exp_msymbol: +is_tls
--XMCwj5IQnwKtuyBG
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Hi,
no functionality change, for patch 2/2.
Jan
--XMCwj5IQnwKtuyBG
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline; filename="tls1.patch"
gdb/ChangeLog
2016-10-09 Jan Kratochvil <jan.kratochvil@redhat.com>
* parse.c (write_exp_msymbol): New variable is_tls, use it.
--- a/gdb/parse.c
+++ b/gdb/parse.c
@@ -484,6 +484,8 @@ write_exp_msymbol (struct parser_state *ps,
struct obj_section *section = MSYMBOL_OBJ_SECTION (objfile, msymbol);
enum minimal_symbol_type type = MSYMBOL_TYPE (msymbol);
CORE_ADDR pc;
+ const int is_tls = (section != NULL
+ && section->the_bfd_section->flags & SEC_THREAD_LOCAL);
/* The minimal symbol might point to a function descriptor;
resolve it to the actual code address instead. */
@@ -520,7 +522,7 @@ write_exp_msymbol (struct parser_state *ps,
write_exp_elt_longcst (ps, (LONGEST) addr);
write_exp_elt_opcode (ps, OP_LONG);
- if (section && section->the_bfd_section->flags & SEC_THREAD_LOCAL)
+ if (is_tls)
{
write_exp_elt_opcode (ps, UNOP_MEMVAL_TLS);
write_exp_elt_objfile (ps, objfile);
--XMCwj5IQnwKtuyBG--

159
gdb-tls-2of2.patch Normal file
View File

@ -0,0 +1,159 @@
http://sourceware.org/ml/gdb-patches/2016-10/msg00207.html
Subject: [patch+7.12.1 2/2] Fix TLS (such as 'errno') regression
--3Pql8miugIZX0722
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Hi,
2273f0ac95a79ce29ef42025c63f90e82cf907d7 is the first bad commit
commit 2273f0ac95a79ce29ef42025c63f90e82cf907d7
Author: Tom Tromey <tromey@redhat.com>
Date: Tue Oct 15 13:28:57 2013 -0600
change minsyms not to be relocated at read-time
[FYI v3 06/10] change minsyms not to be relocated at read-time
Message-Id: <1393441273-32268-7-git-send-email-tromey@redhat.com>
https://sourceware.org/ml/gdb-patches/2014-02/msg00798.html
mv /usr/lib/debug /usr/lib/debug-x
echo 'int main(){}'|gcc -pthread -x c -
./gdb -q -ex start -ex 'set debug expr 1' -ex 'p errno' ./a.out
0 UNOP_MEMVAL_TLS TLS type @0x35df7e0 (__thread /* "/lib64/libc.so.6" */ <thread local variable, no debug info>)
4 OP_LONG Type @0x35df850 (__CORE_ADDR), value 140737345728528 (0x7ffff77fb010)
Cannot access memory at address 0xffffef7c9698
->
0 UNOP_MEMVAL_TLS TLS type @0x3ad9520 (__thread /* "/lib64/libc.so.6" */ <thread local variable, no debug info>)
4 OP_LONG Type @0x3ad9590 (__CORE_ADDR), value 16 (0x10)
$1 = 0
With glibc debuginfo, that is without: mv /usr/lib/debug /usr/lib/debug-x
0 OP_VAR_VALUE Block @0x3b30e70, symbol @0x3b30d10 (errno)
$1 = 0
So such case is unrelated to this patch and the regression is not visible with
glibc debuginfo installed.
I guess all these issues will be solved by Gary Benson's Infinity.
But at least for older non-Infinity glibcs GDB should not regress.
For the testcase it is important the variable is in objfile with non-zero base
address. glibc is a shared library for 'errno' but I found easier for the
testcase to use PIE instead of a shlib. For TLS variables in PT_EXEC the
regression obviously does not happen.
It has been found by a more complete testcase present in Fedora, the fix there
also solves more cases where FSF GDB currently cannot resolve 'errno':
http://pkgs.fedoraproject.org/cgit/rpms/gdb.git/tree/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch
FAIL: gdb.dwarf2/dw2-errno2.exp: macros=N threads=Y: print errno for core
No regressions on {x86_64,x86_64-m32,i686}-fedora26pre-linux-gnu.
OK for check-in?
Thanks,
Jan
--3Pql8miugIZX0722
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline; filename="tls1-2.patch"
gdb/ChangeLog
2016-10-09 Jan Kratochvil <jan.kratochvil@redhat.com>
* parse.c (write_exp_msymbol): Fix ADDR computation.
gdb/testsuite/ChangeLog
2016-10-09 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.threads/tls-nodebug-pie.c: New file.
* gdb.threads/tls-nodebug-pie.exp: New file.
--- a/gdb/parse.c
+++ b/gdb/parse.c
@@ -480,13 +480,17 @@ write_exp_msymbol (struct parser_state *ps,
struct objfile *objfile = bound_msym.objfile;
struct gdbarch *gdbarch = get_objfile_arch (objfile);
- CORE_ADDR addr = BMSYMBOL_VALUE_ADDRESS (bound_msym);
struct obj_section *section = MSYMBOL_OBJ_SECTION (objfile, msymbol);
enum minimal_symbol_type type = MSYMBOL_TYPE (msymbol);
- CORE_ADDR pc;
+ CORE_ADDR addr, pc;
const int is_tls = (section != NULL
&& section->the_bfd_section->flags & SEC_THREAD_LOCAL);
+ if (is_tls)
+ addr = MSYMBOL_VALUE_RAW_ADDRESS (bound_msym.minsym);
+ else
+ addr = BMSYMBOL_VALUE_ADDRESS (bound_msym);
+
/* The minimal symbol might point to a function descriptor;
resolve it to the actual code address instead. */
pc = gdbarch_convert_from_func_ptr_addr (gdbarch, addr, &current_target);
--- /dev/null
+++ b/gdb/testsuite/gdb.threads/tls-nodebug-pie.c
@@ -0,0 +1,27 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2016 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <pthread.h>
+
+__thread int thread_local = 42;
+
+int main(void)
+{
+ /* Ensure we link against pthreads even with --as-needed. */
+ pthread_testcancel();
+ return 0;
+}
--- /dev/null
+++ b/gdb/testsuite/gdb.threads/tls-nodebug-pie.exp
@@ -0,0 +1,29 @@
+# Copyright 2016 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+standard_testfile
+
+if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable \
+ [list "additional_flags=-fPIE -pie"]] != "" } {
+ return -1
+}
+
+clean_restart ${binfile}
+if ![runto_main] then {
+ return 0
+}
+
+# Formerly: Cannot access memory at address 0xd5554d5216fc
+gdb_test "p thread_local" " = 42" "thread local storage"
--3Pql8miugIZX0722--

722
gdb-upstream.patch Normal file
View File

@ -0,0 +1,722 @@
commit 2c29df25b7c2ff006b45afd80ee6dd734ebbd47c
Author: Sergio Durigan Junior <sergiodj@redhat.com>
Date: Sun Sep 11 16:53:09 2016 -0400
Fix false FAIL on gdb.base/stap-probe.exp, due to ICF optimization
GCC 6's ICF optimization pass is making the declaration of 'm1' and
'm2', on gdb.base/stap-probe.c, to be unified. However, this leads to
only one instance of the probe 'two' being created, which causes a
failure on the testsuite (which expects a multi-location breakpoint to
be inserted on the probe).
This patch fixes this failure by declaring a dummy variable on 'm1',
and using it as an argument to m1's version of probe 'two'. Since we
do not care about the contents of the functions nor about the
arguments of each probe 'two', this is OK.
gdb/testsuite/ChangeLog:
2016-09-11 Sergio Durigan Junior <sergiodj@redhat.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.base/stap-probe.c (m1): New variable 'dummy', necessary to
make m1's definition to be different from m2's. Use 'dummy' as an
argument for probe 'two'.
### a/gdb/testsuite/ChangeLog
### b/gdb/testsuite/ChangeLog
## -1,3 +1,10 @@
+2016-09-11 Sergio Durigan Junior <sergiodj@redhat.com>
+ Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * gdb.base/stap-probe.c (m1): New variable 'dummy', necessary to
+ make m1's definition to be different from m2's. Use 'dummy' as an
+ argument for probe 'two'.
+
2016-09-10 Jon Beniston <jon@beniston.com>
* lib/mi-support.exp (mi_gdb_target_load): Use target_sim_options
--- a/gdb/testsuite/gdb.base/stap-probe.c
+++ b/gdb/testsuite/gdb.base/stap-probe.c
@@ -53,8 +53,13 @@ struct funcs
static void
m1 (void)
{
+ /* m1 and m2 are equivalent, but because of some compiler
+ optimizations we have to make each of them unique. This is why
+ we have this dummy variable here. */
+ volatile int dummy = 0;
+
if (TEST2)
- STAP_PROBE (test, two);
+ STAP_PROBE1 (test, two, dummy);
}
static void
commit f389f6fef76d7cf8e8beb7061edff2155c284898
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date: Wed Oct 5 21:56:46 2016 +0200
testsuite: Fix recent GCC FAIL: gdb.arch/i386-signal.exp
gcc-6.2.1-2.fc24.x86_64
(gdb) backtrace 10^M
(gdb) FAIL: gdb.arch/i386-signal.exp: backtrace 10
(gdb) disas/s
Dump of assembler code for function main:
.../gdb/testsuite/gdb.arch/i386-signal.c:
30 {
0x000000000040057f <+0>: push %rbp
0x0000000000400580 <+1>: mov %rsp,%rbp
31 setup ();
0x0000000000400583 <+4>: callq 0x400590 <setup>
=> 0x0000000000400588 <+9>: mov $0x0,%eax
32 }
0x000000000040058d <+14>: pop %rbp
0x000000000040058e <+15>: retq
End of assembler dump.
The .exp patch is an obvious typo fix I think. The regex was written to
accept "ADDR in main" and I find it OK as checking .debug_line validity is not
the purpose of this testfile.
gcc-4.8.5-11.el7.x86_64 did not put the 'mov $0x0,%eax' instruction there at
all so there was no problem with .debug_line.
gdb/testsuite/ChangeLog
2016-10-05 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.arch/i386-signal.exp (backtrace 10): Fix #2 typo.
### a/gdb/testsuite/ChangeLog
### b/gdb/testsuite/ChangeLog
## -1,3 +1,7 @@
+2016-10-05 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * gdb.arch/i386-signal.exp (backtrace 10): Fix #2 typo.
+
2016-10-05 Yao Qi <yao.qi@linaro.org>
* lib/gdb.exp (support_complex_tests): Return zero if
--- a/gdb/testsuite/gdb.arch/i386-signal.exp
+++ b/gdb/testsuite/gdb.arch/i386-signal.exp
@@ -35,6 +35,6 @@ gdb_load ${binfile}
runto func
gdb_test "backtrace 10" \
- "#0 ($hex in )?func.*\r\n#1 <signal handler called>\r\n#2 ($hex in)?main.*"
+ "#0 ($hex in )?func.*\r\n#1 <signal handler called>\r\n#2 ($hex in )?main.*"
gdb_test "finish" "Run till exit from \#0 func.*<signal handler called>"
commit 20c2c024c1e89e402a57e8c3577fb9777709d9a4
Author: Carl E. Love <carll@oc4738070240.ibm.com>
Date: Fri Aug 19 11:06:38 2016 -0700
Fix missing files for ld when test suite not compiled in the source directory
This patch fixes an issues with six test suite expect files that do not
run correctly when the test suite is not built in the source directory. The
issue is these tests are not using the current "standard_testfile" call
but rather using the older set command to initialize the "testfile",
"srcfile" and "binprefix" variables or are missing the set for the
"binprefix" variable.
-----------------------------------------------
gdb/testsuite/ChangeLog
2016-08-19 Carl Love <cel@us.ibm.com>
* gdb.arch/altivec-regs.exp: Use standard_testfile instead of
maintaining separate logic for constructing the output path.
* gdb.arch/powerpc-d128-regs.exp: Likewise.
* gdb.arch/ppc-dfp.exp: Likewise.
* gdb.arch/ppc-fp.exp: Likewise.
* gdb.arch/vsx-regs.exp: Likewise.
* gdb.arch/altivec-abi.exp: Likewise, plus added local variable
binprefix for generating the additional binary files.
### a/gdb/testsuite/ChangeLog
### b/gdb/testsuite/ChangeLog
## -1,3 +1,14 @@
+2016-08-19 Carl Love <cel@us.ibm.com>
+
+ * gdb.arch/altivec-regs.exp: Use standard_testfile instead of
+ maintaining separate logic for constructing the output path.
+ * gdb.arch/powerpc-d128-regs.exp: Likewise.
+ * gdb.arch/ppc-dfp.exp: Likewise.
+ * gdb.arch/ppc-fp.exp: Likewise.
+ * gdb.arch/vsx-regs.exp: Likewise.
+ * gdb.arch/altivec-abi.exp: Likewise, plus added local variable
+ binprefix for generating the additional binary files.
+
2016-08-19 Pedro Alves <palves@redhat.com>
* gdb.trace/mi-trace-frame-collected.exp
--- a/gdb/testsuite/gdb.arch/altivec-abi.exp
+++ b/gdb/testsuite/gdb.arch/altivec-abi.exp
@@ -26,9 +26,7 @@ if {![istarget "powerpc*"] || [skip_altivec_tests]} then {
return
}
-set testfile "altivec-abi"
-set binfile ${objdir}/${subdir}/${testfile}
-set srcfile ${testfile}.c
+standard_testfile
if [get_compiler_info] {
warning "get_compiler failed"
@@ -146,6 +144,8 @@ proc altivec_abi_tests { extra_flags force_abi } {
}
if [test_compiler_info gcc*] {
+ set binprefix ${binfile}
+
with_test_prefix "default ABI, auto" {
altivec_abi_tests "additional_flags=-maltivec" "auto"
}
@@ -156,23 +156,23 @@ if [test_compiler_info gcc*] {
# On 64-bit GNU/Linux with GCC 4.1 and 4.2, -mabi=no-altivec
# was broken, so skip those tests there.
if { ![is_lp64_target] || ![test_compiler_info "gcc-4-\[12\]-*"] } {
- set binfile ${objdir}/${subdir}/${testfile}-ge-ge
+ set binfile ${binprefix}-ge-ge
with_test_prefix "generic ABI, forced" {
altivec_abi_tests "additional_flags=-maltivec additional_flags=-mabi=no-altivec" "generic"
}
- set binfile ${objdir}/${subdir}/${testfile}-ge-auto
+ set binfile ${binprefix}-ge-auto
with_test_prefix "generic ABI, auto" {
altivec_abi_tests "additional_flags=-maltivec additional_flags=-mabi=no-altivec" "auto"
}
}
- set binfile ${objdir}/${subdir}/${testfile}-av-av
+ set binfile ${binprefix}-av-av
with_test_prefix "AltiVec ABI, forced" {
altivec_abi_tests "additional_flags=-maltivec additional_flags=-mabi=altivec" "altivec"
}
- set binfile ${objdir}/${subdir}/${testfile}-av-auto
+ set binfile ${binprefix}-av-auto
with_test_prefix "AltiVec ABI, auto" {
altivec_abi_tests "additional_flags=-maltivec additional_flags=-mabi=altivec" "auto"
}
--- a/gdb/testsuite/gdb.arch/altivec-regs.exp
+++ b/gdb/testsuite/gdb.arch/altivec-regs.exp
@@ -27,9 +27,7 @@ if {![istarget "powerpc*"] || [skip_altivec_tests]} then {
return
}
-set testfile "altivec-regs"
-set binfile ${objdir}/${subdir}/${testfile}
-set srcfile ${testfile}.c
+standard_testfile
set compile_flags {debug nowarnings}
if [get_compiler_info] {
--- a/gdb/testsuite/gdb.arch/powerpc-d128-regs.exp
+++ b/gdb/testsuite/gdb.arch/powerpc-d128-regs.exp
@@ -25,9 +25,7 @@ if ![istarget "powerpc64*-*"] then {
return
}
-set testfile "powerpc-d128-regs"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
+standard_testfile
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {quiet debug}] != "" } {
untested powerpc-d128-regs.exp
--- a/gdb/testsuite/gdb.arch/ppc-dfp.exp
+++ b/gdb/testsuite/gdb.arch/ppc-dfp.exp
@@ -21,9 +21,7 @@ if ![istarget "powerpc*"] then {
return
}
-set testfile "ppc-dfp"
-set binfile ${objdir}/${subdir}/${testfile}
-set srcfile ${testfile}.c
+standard_testfile
if [get_compiler_info] {
warning "get_compiler failed"
--- a/gdb/testsuite/gdb.arch/ppc-fp.exp
+++ b/gdb/testsuite/gdb.arch/ppc-fp.exp
@@ -21,9 +21,7 @@ if ![istarget "powerpc*"] then {
return
}
-set testfile "ppc-fp"
-set binfile ${objdir}/${subdir}/${testfile}
-set srcfile ${testfile}.c
+standard_testfile
if [get_compiler_info] {
warning "get_compiler failed"
--- a/gdb/testsuite/gdb.arch/vsx-regs.exp
+++ b/gdb/testsuite/gdb.arch/vsx-regs.exp
@@ -24,9 +24,7 @@ if {![istarget "powerpc*"] || [skip_vsx_tests]} then {
return
}
-set testfile "vsx-regs"
-set binfile ${objdir}/${subdir}/${testfile}
-set srcfile ${testfile}.c
+standard_testfile
set compile_flags {debug nowarnings quiet}
if [get_compiler_info] {
http://sourceware.org/ml/gdb-patches/2016-10/msg00258.html
Subject: [testsuite obv] Use standard_output_file
From: Jan Kratochvil <jan.kratochvil@redhat.com>
Date: Tue, 11 Oct 2016 16:43:58 +0200
Subject: [PATCH] testsuite: Use standard_output_file
Subject: [PATCH] testsuite: Use standard_output_file
gdb/testsuite/ChangeLog
2016-10-11 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.arch/powerpc-prologue.exp: Use standard_output_file.
* gdb.arch/ppc64-symtab-cordic.exp: Likewise.
* gdb.arch/vsx-regs.exp: Likewise.
---
gdb/testsuite/ChangeLog | 6 ++++++
gdb/testsuite/gdb.arch/powerpc-prologue.exp | 2 +-
gdb/testsuite/gdb.arch/ppc64-symtab-cordic.exp | 4 ++--
gdb/testsuite/gdb.arch/vsx-regs.exp | 2 +-
4 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 9c7df29..b6ba0ec 100644
### a/gdb/testsuite/ChangeLog
### b/gdb/testsuite/ChangeLog
## -1,3 +1,9 @@
+2016-10-11 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * gdb.arch/powerpc-prologue.exp: Use standard_output_file
+ * gdb.arch/ppc64-symtab-cordic.exp: Likewise.
+ * gdb.arch/vsx-regs.exp: Likewise.
+
2016-10-07 Yao Qi <yao.qi@linaro.org>
* gdb.xml/tdesc-regs.exp: Set regdir to "arm/".
diff --git a/gdb/testsuite/gdb.arch/powerpc-prologue.exp b/gdb/testsuite/gdb.arch/powerpc-prologue.exp
index 341ae02..0c74d7e 100644
--- a/gdb/testsuite/gdb.arch/powerpc-prologue.exp
+++ b/gdb/testsuite/gdb.arch/powerpc-prologue.exp
@@ -24,7 +24,7 @@ if {[istarget *-*-aix*] || ![istarget "powerpc-*-*"]} then {
set testfile "powerpc-prologue"
set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
+set binfile [standard_output_file ${testfile}]
# Don't use "debug", so that we don't have line information for the assembly
# fragments.
diff --git a/gdb/testsuite/gdb.arch/ppc64-symtab-cordic.exp b/gdb/testsuite/gdb.arch/ppc64-symtab-cordic.exp
index c8cb429..3fdc490 100644
--- a/gdb/testsuite/gdb.arch/ppc64-symtab-cordic.exp
+++ b/gdb/testsuite/gdb.arch/ppc64-symtab-cordic.exp
@@ -21,9 +21,9 @@ if {![istarget "powerpc*"] || ![is_lp64_target]} {
standard_testfile
set kobz2file ${srcdir}/${subdir}/cordic.ko.bz2
-set kofile ${objdir}/${subdir}/cordic.ko
+set kofile [standard_output_file cordic.ko]
set kodebugbz2file ${srcdir}/${subdir}/cordic.ko.debug.bz2
-set kodebugfile ${objdir}/${subdir}/cordic.ko.debug
+set kodebugfile [standard_output_file cordic.ko.debug]
if {[catch "system \"bzip2 -dc ${kobz2file} >${kofile}\""] != 0} {
untested "failed bzip2 for ${kobz2file}"
diff --git a/gdb/testsuite/gdb.arch/vsx-regs.exp b/gdb/testsuite/gdb.arch/vsx-regs.exp
index 307f12a..31e58e6 100644
--- a/gdb/testsuite/gdb.arch/vsx-regs.exp
+++ b/gdb/testsuite/gdb.arch/vsx-regs.exp
@@ -152,7 +152,7 @@ for {set i 0} {$i < 32} {incr i 1} {
# later when loading the core file (i.e., different register values for different
# vector register banks).
-set corefile "${objdir}/${subdir}/vsx-core.test"
+set corefile [standard_output_file vsx-core.test]
set core_supported [gdb_gcore_cmd "$corefile" "Save a VSX-enabled corefile"]
# Now run the F32~F63/VR0~VR31 tests.
--
2.7.4
http://sourceware.org/ml/gdb-patches/2016-10/msg00268.html
Subject: [testsuite obv] Fix gdb.arch/powerpc-prologue.c compilation
From: Jan Kratochvil <jan.kratochvil@redhat.com>
Date: Tue, 11 Oct 2016 19:09:05 +0200
Subject: [PATCH] testsuite: Fix gdb.arch/powerpc-prologue.c compilation
Subject: [PATCH] testsuite: Fix gdb.arch/powerpc-prologue.c compilation
gcc-6.2.1
gdb compile failed, gdb/testsuite/gdb.arch/powerpc-prologue.c: In function 'main':
gdb/testsuite/gdb.arch/powerpc-prologue.c:32:3: warning: implicit declaration of function 'optimized_1' [-Wimplicit-function-declaration]
optimized_1 ();
^~~~~~~~~~~
gdb/testsuite/ChangeLog
2016-10-11 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.arch/powerpc-prologue.c (optimized_1): New declaration.
---
gdb/testsuite/ChangeLog | 4 ++++
gdb/testsuite/gdb.arch/powerpc-prologue.c | 1 +
2 files changed, 5 insertions(+)
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index b6ba0ec..b4ccd4a 100644
### a/gdb/testsuite/ChangeLog
### b/gdb/testsuite/ChangeLog
## -1,5 +1,9 @@
2016-10-11 Jan Kratochvil <jan.kratochvil@redhat.com>
+ * gdb.arch/powerpc-prologue.c (optimized_1): New declaration.
+
+2016-10-11 Jan Kratochvil <jan.kratochvil@redhat.com>
+
* gdb.arch/powerpc-prologue.exp: Use standard_output_file
* gdb.arch/ppc64-symtab-cordic.exp: Likewise.
* gdb.arch/vsx-regs.exp: Likewise.
diff --git a/gdb/testsuite/gdb.arch/powerpc-prologue.c b/gdb/testsuite/gdb.arch/powerpc-prologue.c
index 6c10dfc..a1b8065 100644
--- a/gdb/testsuite/gdb.arch/powerpc-prologue.c
+++ b/gdb/testsuite/gdb.arch/powerpc-prologue.c
@@ -24,6 +24,7 @@
#endif
void gdb2029 (void);
+void optimized_1 (void);
int
main (void)
--
2.7.4
http://sourceware.org/ml/gdb-patches/2016-10/msg00613.html
Subject: [testsuite patch] Fix gcc_compiled for gcc 6 & 7
--IS0zKkzwUGydFO0o
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Hi,
OK for check-in?
Jan
--IS0zKkzwUGydFO0o
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline; filename=1
gdb/testsuite/ChangeLog
2016-10-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* lib/gdb.exp (get_compiler_info): Generalize gcc_compile regexp.
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 378eea0..7d9b198 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -3290,12 +3290,8 @@ proc get_compiler_info {{arg ""}} {
}
# Set the legacy symbols.
- set gcc_compiled 0
- if { [regexp "^gcc-1-" "$compiler_info" ] } { set gcc_compiled 1 }
- if { [regexp "^gcc-2-" "$compiler_info" ] } { set gcc_compiled 2 }
- if { [regexp "^gcc-3-" "$compiler_info" ] } { set gcc_compiled 3 }
- if { [regexp "^gcc-4-" "$compiler_info" ] } { set gcc_compiled 4 }
- if { [regexp "^gcc-5-" "$compiler_info" ] } { set gcc_compiled 5 }
+ set gcc_compiled 0
+ regexp "^gcc-(\[0-9\]+)-" "$compiler_info" matchall gcc_compiled
# Log what happened.
verbose -log "get_compiler_info: $compiler_info"
--IS0zKkzwUGydFO0o--
commit 1b7e3d2fb7036ce6f9d74e32dc052518f5cd45b6
Author: Nick Clifton <nickc@redhat.com>
Date: Fri Feb 3 09:04:21 2017 +0000
Fix compile time warning messages when compiling binutils with gcc 7.0.1.
PR 21096
bfd * coffcode.h (coff_write_object_contents): Enlarge size of
s_name_buf in order to avoid compile time warning about possible
integer truncation.
* elf32-nds32.c (nds32_elf_ex9_import_table): Mask off lower
32-bits of insn value before printing into buffer.
opcodes * aarch64-opc.c (print_register_list): Ensure that the register
list index will fir into the tb buffer.
(print_register_offset_address): Likewise.
* tic6x-dis.c (print_insn_tic6x): Increase size of func_unit_buf.
### a/bfd/ChangeLog
### b/bfd/ChangeLog
## -1,3 +1,12 @@
+2017-02-03 Nick Clifton <nickc@redhat.com>
+
+ PR 21096
+ * coffcode.h (coff_write_object_contents): Enlarge size of
+ s_name_buf in order to avoid compile time warning about possible
+ integer truncation.
+ * elf32-nds32.c (nds32_elf_ex9_import_table): Mask off lower
+ 32-bits of insn value before printing into buffer.
+
2017-02-02 Maciej W. Rozycki <macro@imgtec.com>
* elfxx-mips.c (mips_elf_hash_sort_data): Add
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -3755,7 +3755,9 @@ coff_write_object_contents (bfd * abfd)
NUL-terminated. We use a temporary buffer so that we can still
sprintf all eight chars without splatting a terminating NUL
over the first byte of the following member (s_paddr). */
- char s_name_buf[SCNNMLEN + 1];
+ /* PR 21096: The +20 is to stop a bogus warning from gcc7 about
+ a possible buffer overflow. */
+ char s_name_buf[SCNNMLEN + 1 + 20];
/* An inherent limitation of the /nnnnnnn notation used to indicate
the offset of the long name in the string table is that we
@@ -3770,9 +3772,10 @@ coff_write_object_contents (bfd * abfd)
return FALSE;
}
- /* snprintf not strictly necessary now we've verified the value
- has less than eight ASCII digits, but never mind. */
- snprintf (s_name_buf, SCNNMLEN + 1, "/%lu", (unsigned long) string_size);
+ /* We do not need to use snprintf here as we have already verfied
+ that string_size is not too big, plus we have an overlarge
+ buffer, just in case. */
+ sprintf (s_name_buf, "/%lu", (unsigned long) string_size);
/* Then strncpy takes care of any padding for us. */
strncpy (section.s_name, s_name_buf, SCNNMLEN);
string_size += len + 1;
--- a/bfd/elf32-nds32.c
+++ b/bfd/elf32-nds32.c
@@ -14949,7 +14949,6 @@ nds32_elf_ex9_import_table (struct bfd_link_info *info)
{
int num = 0;
bfd_byte *contents;
- unsigned long insn;
FILE *ex9_import_file;
int update_ex9_table;
struct elf_nds32_link_hash_table *table;
@@ -14963,6 +14962,7 @@ nds32_elf_ex9_import_table (struct bfd_link_info *info)
/* Read instructions from the input file and build the list. */
while (!feof (ex9_import_file))
{
+ unsigned long insn;
char *code;
struct elf_nds32_insn_times_entry *ptr;
size_t nread;
@@ -14973,7 +14973,7 @@ nds32_elf_ex9_import_table (struct bfd_link_info *info)
break;
insn = bfd_getb32 (contents);
code = bfd_malloc (sizeof (char) * 9);
- snprintf (code, 9, "%08lx", insn);
+ snprintf (code, 9, "%08lx", (insn & 0xffffffff));
ptr = bfd_malloc (sizeof (struct elf_nds32_insn_times_entry));
ptr->string = code;
ptr->order = num;
### a/opcodes/ChangeLog
### b/opcodes/ChangeLog
## -1,3 +1,11 @@
+2017-02-03 Nick Clifton <nickc@redhat.com>
+
+ PR 21096
+ * aarch64-opc.c (print_register_list): Ensure that the register
+ list index will fir into the tb buffer.
+ (print_register_offset_address): Likewise.
+ * tic6x-dis.c (print_insn_tic6x): Increase size of func_unit_buf.
+
2017-01-27 Alexis Deruell <alexis.deruelle@gmail.com>
PR 21056
--- a/opcodes/aarch64-opc.c
+++ b/opcodes/aarch64-opc.c
@@ -2865,7 +2865,8 @@ print_register_list (char *buf, size_t size, const aarch64_opnd_info *opnd,
/* Prepare the index if any. */
if (opnd->reglist.has_index)
- snprintf (tb, 8, "[%" PRIi64 "]", opnd->reglist.index);
+ /* PR 21096: The %100 is to silence a warning about possible truncation. */
+ snprintf (tb, 8, "[%" PRIi64 "]", (opnd->reglist.index % 100));
else
tb[0] = '\0';
@@ -2344,7 +2344,9 @@ print_register_offset_address (char *buf
if (print_extend_p)
{
if (print_amount_p)
- snprintf (tb, sizeof (tb), ",%s #%d", shift_name, opnd->shifter.amount);
+ snprintf (tb, sizeof (tb), ",%s #%d", shift_name,
+ /* PR 21096: The %100 is to silence a warning about possible truncation. */
+ (opnd->shifter.amount % 100));
else
snprintf (tb, sizeof (tb), ",%s", shift_name);
}
--- a/opcodes/tic6x-dis.c
+++ b/opcodes/tic6x-dis.c
@@ -316,7 +316,7 @@ print_insn_tic6x (bfd_vma addr, struct disassemble_info *info)
const char *parallel;
const char *cond = "";
const char *func_unit;
- char func_unit_buf[7];
+ char func_unit_buf[8];
unsigned int func_unit_side = 0;
unsigned int func_unit_data_side = 0;
unsigned int func_unit_cross = 0;
@@ -703,8 +703,9 @@ print_insn_tic6x (bfd_vma addr, struct disassemble_info *info)
if (opc->flags & TIC6X_FLAG_INSN16_BSIDE && func_unit_side == 1)
func_unit_cross = 1;
- snprintf (func_unit_buf, 7, " .%c%u%s%s", func_unit_char,
- func_unit_side, (func_unit_cross ? "X" : ""), data_str);
+ snprintf (func_unit_buf, sizeof func_unit_buf, " .%c%u%s%s",
+ func_unit_char, func_unit_side,
+ (func_unit_cross ? "X" : ""), data_str);
func_unit = func_unit_buf;
}
commit db7b55faa1a11e632ddf57505c9bb64bc783471a
Author: Nick Clifton <nickc@redhat.com>
Date: Fri Dec 16 10:59:36 2016 +0000
Fix compile time warning building arm-dis.c
### a/opcodes/ChangeLog
### b/opcodes/ChangeLog
## -1,3 +1,8 @@
+2016-12-16 Nick Clifton <nickc@redhat.com>
+
+ * arm-dis.c (print_insn_thumb32): Fix compile time warning
+ computing value_in_comment.
+
2016-12-14 Maciej W. Rozycki <macro@imgtec.com>
* mips-dis.c (mips_convert_abiflags_ases): New function.
--- a/opcodes/arm-dis.c
+++ b/opcodes/arm-dis.c
@@ -5759,7 +5759,7 @@ print_insn_thumb32 (bfd_vma pc, struct disassemble_info *info, long given)
if (off || !U)
{
func (stream, ", #%c%u", U ? '+' : '-', off * 4);
- value_in_comment = off * 4 * U ? 1 : -1;
+ value_in_comment = (off && U) ? 1 : -1;
}
func (stream, "]");
if (W)
@@ -5771,7 +5771,7 @@ print_insn_thumb32 (bfd_vma pc, struct disassemble_info *info, long given)
if (W)
{
func (stream, "#%c%u", U ? '+' : '-', off * 4);
- value_in_comment = off * 4 * U ? 1 : -1;
+ value_in_comment = (off && U) ? 1 : -1;
}
else
{
commit 97e64e5ab19dbf6a9babd711e8deec5545520954
Author: Yao Qi <yao.qi@linaro.org>
Date: Fri Sep 23 17:27:26 2016 +0100
Replace sprintf with xsnprintf in nat/linux-osdata.c
I see the following build warning when I build GDB with GCC trunk.
../../binutils-gdb/gdb/nat/linux-osdata.c: In function LONGEST linux_xfer_osdata_fds(gdb_byte*, ULONGEST, ULONGEST):
../../binutils-gdb/gdb/nat/linux-osdata.c:767:1: error: %s directive writing between 0 and 255 bytes into a region of size 11 [-Werror=format-length=]
linux_xfer_osdata_fds (gdb_byte *readbuf,
^~~~~~~~~~~~~~~~~~~~~
../../binutils-gdb/gdb/nat/linux-osdata.c:800:51: note: format output between 7 and 262 bytes into a destination of size 17
sprintf (procentry, "/proc/%s", dp->d_name);
^
../../binutils-gdb/gdb/nat/linux-osdata.c: In function LONGEST linux_xfer_osdata_threads(gdb_byte*, ULONGEST, ULONGEST):
../../binutils-gdb/gdb/nat/linux-osdata.c:555:1: error: %s directive writing between 0 and 255 bytes into a region of size 11 [-Werror=format-length=]
linux_xfer_osdata_threads (gdb_byte *readbuf,
^~~~~~~~~~~~~~~~~~~~~~~~~
../../binutils-gdb/gdb/nat/linux-osdata.c:588:51: note: format output between 7 and 262 bytes into a destination of size 17
sprintf (procentry, "/proc/%s", dp->d_name);
^
cc1plus: all warnings being treated as errors
The warning is a false positive, but we can workaround it by replacing
sprintf with xsnprintf. On the other hand, it is always preferred to
use xsnprintf.
gdb:
2016-09-23 Yao Qi <yao.qi@linaro.org>
* nat/linux-osdata.c (linux_xfer_osdata_threads): Replace
sprintf with xsnprintf.
(linux_xfer_osdata_fds): Likewise.
### a/gdb/ChangeLog
### b/gdb/ChangeLog
## -1,3 +1,9 @@
+2016-09-23 Yao Qi <yao.qi@linaro.org>
+
+ * nat/linux-osdata.c (linux_xfer_osdata_threads): Replace
+ sprintf with xsnprintf.
+ (linux_xfer_osdata_fds): Likewise.
+
2016-09-23 Pedro Alves <palves@redhat.com>
* Makefile.in (SFILES): Add common/new-op.c.
--- a/gdb/nat/linux-osdata.c
+++ b/gdb/nat/linux-osdata.c
@@ -585,7 +585,8 @@ linux_xfer_osdata_threads (gdb_byte *readbuf,
|| NAMELEN (dp) > sizeof ("4294967295") - 1)
continue;
- sprintf (procentry, "/proc/%s", dp->d_name);
+ xsnprintf (procentry, sizeof (procentry), "/proc/%s",
+ dp->d_name);
if (stat (procentry, &statbuf) == 0
&& S_ISDIR (statbuf.st_mode))
{
@@ -797,7 +798,8 @@ linux_xfer_osdata_fds (gdb_byte *readbuf,
|| NAMELEN (dp) > sizeof ("4294967295") - 1)
continue;
- sprintf (procentry, "/proc/%s", dp->d_name);
+ xsnprintf (procentry, sizeof (procentry), "/proc/%s",
+ dp->d_name);
if (stat (procentry, &statbuf) == 0
&& S_ISDIR (statbuf.st_mode))
{

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -27,30 +27,36 @@ cannot reproduce it.
Thanks,
Jan
--FCuugMFkClbJLl1L
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline; filename="vlastringonly.patch"
--- ./gdb/dwarf2loc.c 2016-08-29 04:01:25.000000000 +0200
+++ ./gdb/dwarf2loc.c 2016-09-01 11:00:20.258909494 +0200
@@ -2289,6 +2289,15 @@ const struct dwarf_expr_context_funcs dw
dwarf_expr_get_obj_addr
};
Index: gdb-7.9.50.20150520/gdb/gdbtypes.c
===================================================================
--- gdb-7.9.50.20150520.orig/gdb/gdbtypes.c 2015-05-31 16:14:04.164533833 +0200
+++ gdb-7.9.50.20150520/gdb/gdbtypes.c 2015-05-31 16:14:05.844545344 +0200
@@ -1851,6 +1851,7 @@ is_dynamic_type_internal (struct type *t
}
+static void
+select_frame_cleanup (void *arg)
+{
+ struct frame_info *frame = (struct frame_info *) arg;
+
+ if (frame != NULL)
+ select_frame (frame);
+}
+
/* Evaluate a location description, starting at DATA and with length
SIZE, to find the current location of variable of TYPE in the
context of FRAME. BYTE_OFFSET is applied after the contents are
@@ -2318,6 +2327,11 @@ dwarf2_evaluate_loc_desc_full (struct ty
case TYPE_CODE_ARRAY:
+ case TYPE_CODE_STRING:
{
gdb_assert (TYPE_NFIELDS (type) == 1);
@@ -2192,6 +2193,7 @@ resolve_dynamic_type_internal (struct ty
}
case TYPE_CODE_ARRAY:
+ case TYPE_CODE_STRING:
resolved_type = resolve_dynamic_array (type, addr_stack);
break;
ctx = new_dwarf_expr_context ();
old_chain = make_cleanup_free_dwarf_expr_context (ctx);
+
+ make_cleanup (select_frame_cleanup, deprecated_safe_get_selected_frame ());
+ if (frame != NULL)
+ select_frame (frame);
+
value_chain = make_cleanup_value_free_to_mark (value_mark ());
ctx->gdbarch = get_objfile_arch (objfile);
Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000

293
gdb-vla-intel-tests.patch Normal file
View File

@ -0,0 +1,293 @@
Index: gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-func.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-func.exp 2016-01-08 19:15:44.983637680 +0100
@@ -0,0 +1,61 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+standard_testfile ".f90"
+
+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
+ {debug f90 quiet}] } {
+ return -1
+}
+
+if ![runto MAIN__] then {
+ perror "couldn't run to breakpoint MAIN__"
+ continue
+}
+
+# Check VLA passed to first Fortran function.
+gdb_breakpoint [gdb_get_line_number "func1-vla-passed"]
+gdb_continue_to_breakpoint "func1-vla-passed"
+gdb_test "print vla" " = \\( *\\( *22, *22, *22,\[()22, .\]*\\)" \
+ "print vla (func1)"
+gdb_test "ptype vla" "type = integer\\\(kind=4\\\) \\\(10,10\\\)" \
+ "ptype vla (func1)"
+
+gdb_breakpoint [gdb_get_line_number "func1-vla-modified"]
+gdb_continue_to_breakpoint "func1-vla-modified"
+gdb_test "print vla(5,5)" " = 55" "print vla(5,5) (func1)"
+gdb_test "print vla(7,7)" " = 77" "print vla(5,5) (func1)"
+
+# Check if the values are correct after returning from func1
+gdb_breakpoint [gdb_get_line_number "func1-returned"]
+gdb_continue_to_breakpoint "func1-returned"
+gdb_test "print ret" " = .TRUE." "print ret after func1 returned"
+
+# Check VLA passed to second Fortran function
+gdb_breakpoint [gdb_get_line_number "func2-vla-passed"]
+gdb_continue_to_breakpoint "func2-vla-passed"
+gdb_test "print vla" \
+ " = \\\(44, 44, 44, 44, 44, 44, 44, 44, 44, 44\\\)" \
+ "print vla (func2)"
+gdb_test "ptype vla" "type = integer\\\(kind=4\\\) \\\(10\\\)" \
+ "ptype vla (func2)"
+
+# Check if the returned VLA has the correct values and ptype.
+gdb_breakpoint [gdb_get_line_number "func2-returned"]
+gdb_continue_to_breakpoint "func2-returned"
+gdb_test "print vla3" " = \\\(1, 2, 44, 4, 44, 44, 44, 8, 44, 44\\\)" \
+ "print vla3 (after func2)"
+gdb_test "ptype vla3" "type = integer\\\(kind=4\\\) \\\(10\\\)" \
+ "ptype vla3 (after func2)"
Index: gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-func.f90
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-func.f90 2016-01-08 19:15:44.983637680 +0100
@@ -0,0 +1,71 @@
+! Copyright 2014 Free Software Foundation, Inc.
+!
+! This program is free software; you can redistribute it and/or modify
+! it under the terms of the GNU General Public License as published by
+! the Free Software Foundation; either version 2 of the License, or
+! (at your option) any later version.
+!
+! This program is distributed in the hope that it will be useful,
+! but WITHOUT ANY WARRANTY; without even the implied warranty of
+! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+! GNU General Public License for more details.
+!
+! You should have received a copy of the GNU General Public License
+! along with this program; if not, write to the Free Software
+! Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+logical function func1 (vla)
+ implicit none
+ integer, allocatable :: vla (:, :)
+ func1 = allocated(vla)
+ vla(5,5) = 55 ! func1-vla-passed
+ vla(7,7) = 77
+ return ! func1-vla-modified
+end function func1
+
+function func2(vla)
+ implicit none
+ integer :: vla (:)
+ integer :: func2(size(vla))
+ integer :: k
+
+ vla(1) = 1 ! func2-vla-passed
+ vla(2) = 2
+ vla(4) = 4
+ vla(8) = 8
+
+ func2 = vla
+end function func2
+
+program vla_func
+ implicit none
+ interface
+ logical function func1 (vla)
+ integer, allocatable :: vla (:, :)
+ end function
+ end interface
+ interface
+ function func2 (vla)
+ integer :: vla (:)
+ integer func2(size(vla))
+ end function
+ end interface
+
+ logical :: ret
+ integer, allocatable :: vla1 (:, :)
+ integer, allocatable :: vla2 (:)
+ integer, allocatable :: vla3 (:)
+
+ ret = .FALSE.
+
+ allocate (vla1 (10,10))
+ vla1(:,:) = 22
+
+ allocate (vla2 (10))
+ vla2(:) = 44
+
+ ret = func1(vla1)
+ vla3 = func2(vla2) ! func1-returned
+
+ ret = .TRUE. ! func2-returned
+end program vla_func
Index: gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-stringsold.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-stringsold.exp 2016-01-08 19:15:44.984637686 +0100
@@ -0,0 +1,101 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+standard_testfile ".f90"
+
+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
+ {debug f90 quiet}] } {
+ return -1
+}
+
+# check that all fortran standard datatypes will be
+# handled correctly when using as VLA's
+
+if ![runto MAIN__] then {
+ perror "couldn't run to breakpoint MAIN__"
+ continue
+}
+
+gdb_breakpoint [gdb_get_line_number "var_char-allocated-1"]
+gdb_continue_to_breakpoint "var_char-allocated-1"
+gdb_test "print var_char" \
+ " = \\(PTR TO -> \\( character\\*10 \\)\\) ${hex}" \
+ "print var_char after allocated first time"
+gdb_test "whatis var_char" "type = PTR TO -> \\( character\\*10 \\)" \
+ "whatis var_char first time"
+gdb_test "ptype var_char" "type = PTR TO -> \\( character\\*10 \\)" \
+ "ptype var_char first time"
+gdb_test "next" "\\d+.*var_char = 'foo'.*" \
+ "next to allocation status of var_char"
+gdb_test "print l" " = .TRUE." "print allocation status first time"
+
+gdb_breakpoint [gdb_get_line_number "var_char-filled-1"]
+gdb_continue_to_breakpoint "var_char-filled-1"
+gdb_test "print var_char" \
+ " = \\(PTR TO -> \\( character\\*3 \\)\\) ${hex}" \
+ "print var_char after filled first time"
+gdb_test "print *var_char" " = 'foo'" \
+ "print *var_char after filled first time"
+gdb_test "whatis var_char" "type = PTR TO -> \\( character\\*3 \\)" \
+ "whatis var_char after filled first time"
+gdb_test "ptype var_char" "type = PTR TO -> \\( character\\*3 \\)" \
+ "ptype var_char after filled first time"
+gdb_test "print var_char(1)" " = 102 'f'" "print var_char(1)"
+gdb_test "print var_char(3)" " = 111 'o'" "print var_char(3)"
+
+gdb_breakpoint [gdb_get_line_number "var_char-filled-2"]
+gdb_continue_to_breakpoint "var_char-filled-2"
+gdb_test "print var_char" \
+ " = \\(PTR TO -> \\( character\\*6 \\)\\) ${hex}" \
+ "print var_char after allocated second time"
+gdb_test "print *var_char" " = 'foobar'" \
+ "print *var_char after allocated second time"
+gdb_test "whatis var_char" "type = PTR TO -> \\( character\\*6 \\)" \
+ "whatis var_char second time"
+gdb_test "ptype var_char" "type = PTR TO -> \\( character\\*6 \\)" \
+ "ptype var_char second time"
+
+gdb_breakpoint [gdb_get_line_number "var_char-empty"]
+gdb_continue_to_breakpoint "var_char-empty"
+gdb_test "print var_char" \
+ " = \\(PTR TO -> \\( character\\*0 \\)\\) ${hex}" \
+ "print var_char after set empty"
+gdb_test "print *var_char" " = \"\"" "print *var_char after set empty"
+gdb_test "whatis var_char" "type = PTR TO -> \\( character\\*0 \\)" \
+ "whatis var_char after set empty"
+gdb_test "ptype var_char" "type = PTR TO -> \\( character\\*0 \\)" \
+ "ptype var_char after set empty"
+
+gdb_breakpoint [gdb_get_line_number "var_char-allocated-3"]
+gdb_continue_to_breakpoint "var_char-allocated-3"
+gdb_test "print var_char" \
+ " = \\(PTR TO -> \\( character\\*21 \\)\\) ${hex}" \
+ "print var_char after allocated third time"
+gdb_test "whatis var_char" "type = PTR TO -> \\( character\\*21 \\)" \
+ "whatis var_char after allocated third time"
+gdb_test "ptype var_char" "type = PTR TO -> \\( character\\*21 \\)" \
+ "ptype var_char after allocated third time"
+
+gdb_breakpoint [gdb_get_line_number "var_char_p-associated"]
+gdb_continue_to_breakpoint "var_char_p-associated"
+gdb_test "print var_char_p" \
+ " = \\(PTR TO -> \\( character\\*7 \\)\\) ${hex}" \
+ "print var_char_p after associated"
+gdb_test "print *var_char_p" " = 'johndoe'" \
+ "print *var_char_ after associated"
+gdb_test "whatis var_char_p" "type = PTR TO -> \\( character\\*7 \\)" \
+ "whatis var_char_p after associated"
+gdb_test "ptype var_char_p" "type = PTR TO -> \\( character\\*7 \\)" \
+ "ptype var_char_p after associated"
Index: gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-stringsold.f90
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-stringsold.f90 2016-01-08 19:15:44.984637686 +0100
@@ -0,0 +1,40 @@
+! Copyright 2014 Free Software Foundation, Inc.
+!
+! This program is free software; you can redistribute it and/or modify
+! it under the terms of the GNU General Public License as published by
+! the Free Software Foundation; either version 2 of the License, or
+! (at your option) any later version.
+!
+! This program is distributed in the hope that it will be useful,
+! but WITHOUT ANY WARRANTY; without even the implied warranty of
+! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+! GNU General Public License for more details.
+!
+! You should have received a copy of the GNU General Public License
+! along with this program; if not, write to the Free Software
+! Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+program vla_strings
+ character(len=:), target, allocatable :: var_char
+ character(len=:), pointer :: var_char_p
+ logical :: l
+
+ allocate(character(len=10) :: var_char)
+ l = allocated(var_char) ! var_char-allocated-1
+ var_char = 'foo'
+ deallocate(var_char) ! var_char-filled-1
+ l = allocated(var_char) ! var_char-deallocated
+ allocate(character(len=42) :: var_char)
+ l = allocated(var_char)
+ var_char = 'foobar'
+ var_char = '' ! var_char-filled-2
+ var_char = 'bar' ! var_char-empty
+ deallocate(var_char)
+ allocate(character(len=21) :: var_char)
+ l = allocated(var_char) ! var_char-allocated-3
+ var_char = 'johndoe'
+ var_char_p => var_char
+ l = associated(var_char_p) ! var_char_p-associated
+ var_char_p => null()
+ l = associated(var_char_p) ! var_char_p-not-associated
+end program vla_strings

View File

@ -1,3 +1,46 @@
-------------------------------------------------------------------
Wed Feb 15 15:55:11 UTC 2017 - matz@suse.com
- Update to gdb 7.12.1
* negative repeat count for x examines backwards
* fortran: support structs/arrays with dynamically types fields
* support MPX bound checking
* support for the Rust language
* 'catch syscall' now can catch groups of related syscalls
* New (sub)commands:
- skip {-file,-gfile,-function,-rfunction}: generic skip
mechanism
- maint {selftest,info line-table}
- new-ui: create new user interface for GUI clients
* (fast) tracepoints on s390x and ppc64le added to gdbserver
* New target Andes NDS32
- Remove patch gdb-aarch64-v81-hwbreakpoints.diff (upstream)
- Add patches from Fedora package:
gdb-6.7-testsuite-stable-results.patch
gdb-add-index-chmod.patch
gdb-bison-old.patch
gdb-container-rh-pkg.patch
gdb-libexec-add-index.patch
gdb-linux_perf-bundle.patch
gdb-physname-pr11734-test.patch
gdb-physname-pr12273-test.patch
gdb-rhbz1007614-memleak-infpy_read_memory-test.patch
gdb-rhbz1084404-ppc64-s390x-wrong-prologue-skip-O2-g-3of3.patch
gdb-rhbz1149205-catch-syscall-after-fork-test.patch
gdb-rhbz1156192-recursive-dlopen-test.patch
gdb-rhbz1186476-internal-error-unqualified-name-re-set-test.patch
gdb-rhbz1350436-type-printers-error.patch
gdb-test-ivy-bridge.patch
gdb-testsuite-casts.patch
gdb-testsuite-m-static.patch
gdb-testsuite-morestack-gold.patch
gdb-tls-1of2.patch
gdb-tls-2of2.patch
gdb-upstream.patch
gdb-vla-intel-fortran-strides.patch
gdb-vla-intel-fortran-vla-strings.patch
gdb-vla-intel-tests.patch
-------------------------------------------------------------------
Mon Jan 9 15:37:41 UTC 2017 - matz@suse.com

275
gdb.spec
View File

@ -24,10 +24,7 @@ License: GPL-3.0+ and GPL-3.0-with-GCC-exception and LGPL-2.1+ and LGPL-3
Group: Development/Tools/Debuggers
Name: gdb
%global snap 20130731
# See timestamp of source gnulib installed into gdb/gnulib/ .
%global snapgnulib 20121213
Version: 7.11.1
Version: 7.12.1
Release: 0
# The release always contains a leading reserved number, start it at 1.
@ -78,7 +75,7 @@ Source3: gdb-gstack.man
Source4: gdbinit
# libstdc++ pretty printers from GCC SVN HEAD (4.5 experimental).
%global libstdcxxpython gdb-libstdc++-v3-python-r225521
%global libstdcxxpython gdb-libstdc++-v3-python-6.3.1-20170212
Source5: %{libstdcxxpython}.tar.bz2
# Provide gdbtui for RHEL-5 and RHEL-6 as it is removed upstream (BZ 797664).
@ -92,128 +89,139 @@ Source13: gdb-rpmlintrc
#Fedora Packages begin
Patch1: gdb-6.3-rh-testversion-20041202.patch
Patch2: gdb-archer.patch
Patch3: gdb-fortran-stride-intel-1of6.patch
Patch4: gdb-fortran-stride-intel-2of6.patch
Patch5: gdb-fortran-stride-intel-3of6.patch
Patch6: gdb-fortran-stride-intel-4of6.patch
Patch7: gdb-fortran-stride-intel-5of6.patch
Patch8: gdb-fortran-stride-intel-6of6.patch
Patch9: gdb-vla-intel.patch
Patch10: gdb-vla-intel-logical-not.patch
Patch11: gdb-vla-intel-stringbt-fix.patch
Patch12: gdb-vla-intel-04of23-fix.patch
Patch13: gdb-6.3-rh-dummykfail-20041202.patch
Patch14: gdb-6.3-ppc64syscall-20040622.patch
Patch15: gdb-6.3-ppc64displaysymbol-20041124.patch
Patch16: gdb-6.3-gstack-20050411.patch
Patch17: gdb-6.3-test-pie-20050107.patch
Patch18: gdb-6.3-test-self-20050110.patch
Patch19: gdb-6.3-test-dtorfix-20050121.patch
Patch20: gdb-6.3-test-movedir-20050125.patch
Patch21: gdb-6.3-threaded-watchpoints2-20050225.patch
Patch22: gdb-6.3-inferior-notification-20050721.patch
Patch23: gdb-6.3-inheritancetest-20050726.patch
Patch24: gdb-6.3-readnever-20050907.patch
Patch25: gdb-6.5-bz203661-emit-relocs.patch
Patch26: gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch
Patch27: gdb-6.5-sharedlibrary-path.patch
Patch28: gdb-6.5-BEA-testsuite.patch
Patch29: gdb-6.5-last-address-space-byte-test.patch
Patch30: gdb-6.5-readline-long-line-crash-test.patch
Patch31: gdb-6.5-bz216711-clone-is-outermost.patch
Patch32: gdb-6.5-bz218379-ppc-solib-trampoline-test.patch
Patch33: gdb-6.5-bz218379-solib-trampoline-lookup-lock-fix.patch
Patch34: gdb-6.5-bz109921-DW_AT_decl_file-test.patch
Patch35: gdb-6.3-bz140532-ppc-unwinding-test.patch
Patch36: gdb-6.3-bz202689-exec-from-pthread-test.patch
Patch37: gdb-6.6-bz230000-power6-disassembly-test.patch
Patch38: gdb-6.6-bz229517-gcore-without-terminal.patch
Patch39: gdb-6.6-bz235197-fork-detach-info.patch
Patch40: gdb-6.6-testsuite-timeouts.patch
Patch41: gdb-6.6-bz237572-ppc-atomic-sequence-test.patch
Patch42: gdb-6.6-scheduler_locking-step-is-default.patch
Patch43: gdb-6.3-attach-see-vdso-test.patch
Patch44: gdb-6.5-bz243845-stale-testing-zombie-test.patch
Patch45: gdb-6.6-buildid-locate.patch
Patch46: gdb-6.6-buildid-locate-solib-missing-ids.patch
Patch47: gdb-6.6-buildid-locate-rpm.patch
Patch48: gdb-6.7-charsign-test.patch
Patch49: gdb-6.7-ppc-clobbered-registers-O2-test.patch
Patch50: gdb-6.5-ia64-libunwind-leak-test.patch
Patch51: gdb-6.5-missed-trap-on-step-test.patch
Patch52: gdb-6.7-bz426600-DW_TAG_interface_type-test.patch
Patch53: gdb-6.5-gcore-buffer-limit-test.patch
Patch54: gdb-6.6-threads-static-test.patch
Patch55: gdb-6.3-mapping-zero-inode-test.patch
Patch56: gdb-6.3-focus-cmd-prev-test.patch
Patch57: gdb-6.8-bz442765-threaded-exec-test.patch
Patch58: gdb-6.8-sparc64-silence-memcpy-check.patch
Patch59: gdb-6.5-section-num-fixup-test.patch
Patch60: gdb-6.8-bz436037-reg-no-longer-active.patch
Patch61: gdb-6.8-watchpoint-conditionals-test.patch
Patch62: gdb-6.8-bz466901-backtrace-full-prelinked.patch
Patch63: gdb-simultaneous-step-resume-breakpoint-test.patch
Patch64: gdb-core-open-vdso-warning.patch
Patch65: gdb-x86_64-i386-syscall-restart.patch
Patch66: gdb-bz533176-fortran-omp-step.patch
Patch67: gdb-follow-child-stale-parent.patch
Patch68: gdb-ccache-workaround.patch
Patch69: gdb-archer-pie-addons.patch
Patch70: gdb-archer-pie-addons-keep-disabled.patch
Patch71: gdb-lineno-makeup-test.patch
Patch72: gdb-ppc-power7-test.patch
Patch73: gdb-bz541866-rwatch-before-run.patch
Patch74: gdb-moribund-utrace-workaround.patch
Patch75: gdb-archer-next-over-throw-cxx-exec.patch
Patch76: gdb-bz601887-dwarf4-rh-test.patch
Patch77: gdb-6.6-buildid-locate-core-as-arg.patch
Patch78: gdb-6.6-buildid-locate-rpm-librpm-workaround.patch
Patch79: gdb-test-bt-cfi-without-die.patch
Patch80: gdb-gdb-add-index-script.patch
Patch81: gdb-bz568248-oom-is-error.patch
Patch82: gdb-bz634108-solib_address.patch
Patch83: gdb-test-pid0-core.patch
Patch84: gdb-test-dw2-aranges.patch
Patch85: gdb-test-expr-cumulative-archer.patch
Patch86: gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch
Patch87: gdb-glibc-vdso-workaround.patch
Patch88: gdb-runtest-pie-override.patch
Patch89: gdb-attach-fail-reasons-5of5.patch
Patch90: gdb-stale-frame_info.patch
Patch91: gdb-glibc-strstr-workaround.patch
Patch92: gdb-rhel5.9-testcase-xlf-var-inside-mod.patch
Patch93: gdb-rhbz-818343-set-solib-absolute-prefix-testcase.patch
Patch94: gdb-rhbz795424-bitpos-20of25.patch
Patch95: gdb-rhbz795424-bitpos-21of25.patch
Patch96: gdb-rhbz795424-bitpos-22of25.patch
Patch97: gdb-rhbz795424-bitpos-23of25.patch
Patch98: gdb-rhbz795424-bitpos-25of25.patch
Patch99: gdb-rhbz795424-bitpos-25of25-test.patch
Patch100: gdb-rhbz795424-bitpos-lazyvalue.patch
Patch101: gdb-rhbz947564-findvar-assertion-frame-failed-testcase.patch
Patch102: gdb-gnat-dwarf-crash-3of3.patch
Patch103: gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch
Patch104: gdb-archer-vla-tests.patch
Patch105: gdb-fortran-stride-intel-6of6-nokfail.patch
Patch106: gdb-btrobust.patch
Patch107: gdb-fortran-frame-string.patch
Patch108: gdb-python-gil.patch
Patch2: gdb-upstream.patch
Patch3: gdb-archer.patch
Patch4: gdb-vla-intel-fortran-strides.patch
Patch5: gdb-vla-intel-fortran-vla-strings.patch
Patch6: gdb-vla-intel-stringbt-fix.patch
Patch7: gdb-6.3-rh-dummykfail-20041202.patch
Patch8: gdb-6.3-ppc64syscall-20040622.patch
Patch9: gdb-6.3-ppc64displaysymbol-20041124.patch
Patch10: gdb-6.3-gstack-20050411.patch
Patch11: gdb-6.3-test-pie-20050107.patch
Patch12: gdb-6.3-test-self-20050110.patch
Patch13: gdb-6.3-test-dtorfix-20050121.patch
Patch14: gdb-6.3-test-movedir-20050125.patch
Patch15: gdb-6.3-threaded-watchpoints2-20050225.patch
Patch16: gdb-6.3-inferior-notification-20050721.patch
Patch17: gdb-6.3-inheritancetest-20050726.patch
Patch18: gdb-6.3-readnever-20050907.patch
Patch19: gdb-6.5-bz203661-emit-relocs.patch
Patch20: gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch
Patch21: gdb-6.5-sharedlibrary-path.patch
Patch22: gdb-6.5-BEA-testsuite.patch
Patch23: gdb-6.5-last-address-space-byte-test.patch
Patch24: gdb-6.5-readline-long-line-crash-test.patch
Patch25: gdb-6.5-bz216711-clone-is-outermost.patch
Patch26: gdb-6.5-bz218379-ppc-solib-trampoline-test.patch
Patch27: gdb-6.5-bz218379-solib-trampoline-lookup-lock-fix.patch
Patch28: gdb-6.5-bz109921-DW_AT_decl_file-test.patch
Patch29: gdb-6.3-bz140532-ppc-unwinding-test.patch
Patch30: gdb-6.3-bz202689-exec-from-pthread-test.patch
Patch31: gdb-6.6-bz230000-power6-disassembly-test.patch
Patch32: gdb-6.6-bz229517-gcore-without-terminal.patch
Patch33: gdb-6.6-bz235197-fork-detach-info.patch
Patch34: gdb-6.6-testsuite-timeouts.patch
Patch35: gdb-6.6-bz237572-ppc-atomic-sequence-test.patch
Patch36: gdb-6.6-scheduler_locking-step-is-default.patch
Patch37: gdb-6.3-attach-see-vdso-test.patch
Patch38: gdb-6.5-bz243845-stale-testing-zombie-test.patch
Patch39: gdb-6.6-buildid-locate.patch
Patch40: gdb-6.6-buildid-locate-solib-missing-ids.patch
Patch41: gdb-6.6-buildid-locate-rpm.patch
Patch42: gdb-6.7-charsign-test.patch
Patch43: gdb-6.7-ppc-clobbered-registers-O2-test.patch
Patch44: gdb-6.7-testsuite-stable-results.patch
Patch45: gdb-6.5-ia64-libunwind-leak-test.patch
Patch46: gdb-6.5-missed-trap-on-step-test.patch
Patch47: gdb-6.7-bz426600-DW_TAG_interface_type-test.patch
Patch48: gdb-6.5-gcore-buffer-limit-test.patch
Patch49: gdb-6.6-threads-static-test.patch
Patch50: gdb-6.3-mapping-zero-inode-test.patch
Patch51: gdb-6.3-focus-cmd-prev-test.patch
Patch52: gdb-6.8-bz442765-threaded-exec-test.patch
Patch53: gdb-6.8-sparc64-silence-memcpy-check.patch
Patch54: gdb-6.5-section-num-fixup-test.patch
Patch55: gdb-6.8-bz436037-reg-no-longer-active.patch
Patch56: gdb-6.8-watchpoint-conditionals-test.patch
Patch57: gdb-6.8-bz466901-backtrace-full-prelinked.patch
Patch58: gdb-simultaneous-step-resume-breakpoint-test.patch
Patch59: gdb-core-open-vdso-warning.patch
Patch60: gdb-x86_64-i386-syscall-restart.patch
Patch61: gdb-bz533176-fortran-omp-step.patch
Patch62: gdb-follow-child-stale-parent.patch
Patch63: gdb-ccache-workaround.patch
Patch64: gdb-archer-pie-addons.patch
Patch65: gdb-archer-pie-addons-keep-disabled.patch
Patch66: gdb-lineno-makeup-test.patch
Patch67: gdb-ppc-power7-test.patch
Patch68: gdb-bz541866-rwatch-before-run.patch
Patch69: gdb-moribund-utrace-workaround.patch
Patch70: gdb-archer-next-over-throw-cxx-exec.patch
Patch71: gdb-bz601887-dwarf4-rh-test.patch
Patch72: gdb-6.6-buildid-locate-core-as-arg.patch
Patch73: gdb-6.6-buildid-locate-rpm-librpm-workaround.patch
Patch74: gdb-test-bt-cfi-without-die.patch
Patch75: gdb-gdb-add-index-script.patch
Patch76: gdb-bz568248-oom-is-error.patch
Patch77: gdb-bz634108-solib_address.patch
Patch78: gdb-test-pid0-core.patch
Patch79: gdb-test-dw2-aranges.patch
Patch80: gdb-test-expr-cumulative-archer.patch
Patch81: gdb-physname-pr11734-test.patch
Patch82: gdb-physname-pr12273-test.patch
Patch83: gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch
Patch84: gdb-test-ivy-bridge.patch
Patch85: gdb-glibc-vdso-workaround.patch
Patch86: gdb-runtest-pie-override.patch
Patch87: gdb-attach-fail-reasons-5of5.patch
Patch88: gdb-stale-frame_info.patch
Patch89: gdb-glibc-strstr-workaround.patch
Patch90: gdb-rhel5.9-testcase-xlf-var-inside-mod.patch
Patch91: gdb-rhbz-818343-set-solib-absolute-prefix-testcase.patch
Patch92: gdb-rhbz795424-bitpos-20of25.patch
Patch93: gdb-rhbz795424-bitpos-21of25.patch
Patch94: gdb-rhbz795424-bitpos-22of25.patch
Patch95: gdb-rhbz795424-bitpos-23of25.patch
Patch96: gdb-rhbz795424-bitpos-25of25.patch
Patch97: gdb-rhbz795424-bitpos-25of25-test.patch
Patch98: gdb-rhbz795424-bitpos-lazyvalue.patch
Patch99: gdb-rhbz947564-findvar-assertion-frame-failed-testcase.patch
Patch100: gdb-gnat-dwarf-crash-3of3.patch
Patch101: gdb-rhbz1007614-memleak-infpy_read_memory-test.patch
Patch102: gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch
Patch103: gdb-archer-vla-tests.patch
Patch104: gdb-vla-intel-tests.patch
Patch105: gdb-btrobust.patch
Patch106: gdb-fortran-frame-string.patch
Patch107: gdb-python-gil.patch
Patch108: gdb-rhbz1156192-recursive-dlopen-test.patch
Patch109: gdb-jit-reader-multilib.patch
Patch110: gdb-bz1219747-attach-kills.patch
Patch111: gdb-fedora-libncursesw.patch
Patch112: gdb-opcodes-clflushopt-test.patch
Patch113: gdb-dts-rhel6-python-compat.patch
Patch114: gdb-6.6-buildid-locate-rpm-scl.patch
Patch115: gdb-readline62-ask-more-rh.patch
Patch116: gdb-6.8-attach-signalled-detach-stopped.patch
Patch117: gdb-6.8-quit-never-aborts.patch
Patch118: gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch
Patch120: gdb-testsuite-dw2-undefined-ret-addr.patch
Patch121: gdb-rhbz1325795-framefilters-test.patch
Patch122: gdb-bare-DW_TAG_lexical_block-1of2.patch
Patch123: gdb-bare-DW_TAG_lexical_block-2of2.patch
Patch124: gdb-testsuite-readline63-sigint.patch
Patch110: gdb-rhbz1149205-catch-syscall-after-fork-test.patch
Patch111: gdb-rhbz1186476-internal-error-unqualified-name-re-set-test.patch
Patch112: gdb-rhbz1350436-type-printers-error.patch
Patch113: gdb-rhbz1084404-ppc64-s390x-wrong-prologue-skip-O2-g-3of3.patch
Patch114: gdb-bz1219747-attach-kills.patch
Patch115: gdb-fedora-libncursesw.patch
Patch116: gdb-opcodes-clflushopt-test.patch
Patch117: gdb-dts-rhel6-python-compat.patch
Patch118: gdb-6.6-buildid-locate-rpm-scl.patch
Patch119: gdb-readline62-ask-more-rh.patch
Patch120: gdb-6.8-attach-signalled-detach-stopped.patch
Patch121: gdb-6.8-quit-never-aborts.patch
Patch122: gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch
Patch123: gdb-container-rh-pkg.patch
Patch124: gdb-rhbz1325795-framefilters-test.patch
Patch125: gdb-linux_perf-bundle.patch
Patch126: gdb-bison-old.patch
Patch127: gdb-testsuite-casts.patch
Patch128: gdb-testsuite-m-static.patch
Patch129: gdb-tls-1of2.patch
Patch130: gdb-tls-2of2.patch
Patch131: gdb-testsuite-morestack-gold.patch
Patch132: gdb-libexec-add-index.patch
Patch133: gdb-add-index-chmod.patch
Patch134: gdb-testsuite-readline63-sigint.patch
#Fedora Packages end
# Upstream patch to fix gcc -Werror
@ -221,7 +229,6 @@ Patch1002: gdb-6.6-buildid-locate-rpm-suse.patch
Patch1003: gdb-pahole-python2.patch
Patch1004: gdb-fix-buf-overflow.diff
Patch1005: gdb-7.10-swo18929.patch
Patch1006: gdb-aarch64-v81-hwbreakpoints.diff
BuildRequires: bison
BuildRequires: flex
@ -291,7 +298,7 @@ BuildRequires: gcc-ada
BuildRequires: gcc-ada
%endif
%endif
%if ! (0%{?is_opensuse} && %_arch == "s390x" )
%if ! (0%{?is_opensuse} && %_target_cpu == "s390x" )
# openSUSE for s390x doesn't build 32bit libs
%if 0%{suse_version} > 1110
%ifarch x86_64 ppc64 s390x
@ -498,18 +505,28 @@ find -name "*.info*"|xargs rm -f
%patch116 -p1
%patch117 -p1
%patch118 -p1
%patch119 -p1
%patch120 -p1
%patch121 -p1
%patch122 -p1
%patch123 -p1
%patch124 -p1
%patch125 -p1
%patch126 -p1
%patch127 -p1
%patch128 -p1
%patch129 -p1
%patch130 -p1
%patch131 -p1
%patch132 -p1
%patch133 -p1
%patch134 -p1
#Fedora patching end
%patch1002 -p1
%patch1003 -p1
%patch1004 -p1
%patch1005 -p1
%patch1006 -p1
find -name "*.orig" | xargs rm -f
! find -name "*.rej" # Should not happen.