From 7306e88eb46e8ab011270f0f91ec226c5bf17363 Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Jul 17 2016 14:35:49 +0000 Subject: Rebase to FSF GDB 7.11.50.20160716 (pre-7.12 trunk snapshot). --- diff --git a/.gitignore b/.gitignore index dbb15cb..5af0f9f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ /gdb-libstdc++-v3-python-r225521.tar.xz -/gdb-7.11.1.tar.xz +/gdb-7.11.50.20160716.tar.xz diff --git a/gdb-6.6-buildid-locate-rpm.patch b/gdb-6.6-buildid-locate-rpm.patch index 5efcc5a..56ce7db 100644 --- a/gdb-6.6-buildid-locate-rpm.patch +++ b/gdb-6.6-buildid-locate-rpm.patch @@ -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 -=================================================================== ---- 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 +Index: gdb-7.11.50.20160630/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 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; diff --git a/gdb-6.6-buildid-locate.patch b/gdb-6.6-buildid-locate.patch index b25ad8e..ff77775 100644 --- a/gdb-6.6-buildid-locate.patch +++ b/gdb-6.6-buildid-locate.patch @@ -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,12 @@ 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 +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 +296,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 +334,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 +385,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 +429,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 +633,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 +700,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 +825,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,8 +937,8 @@ Index: gdb-7.10.90.20160211/gdb/build-id.c + { + size_t len_orig = strlen (link_all); + -+ link_all = xrealloc (link_all, -+ len_orig + 1 + strlen (link0_resolved) + 1); ++ link_all = (char *) xrealloc (link_all, ++ len_orig + 1 + strlen (link0_resolved) + 1); + + /* Use whitespace instead of DIRNAME_SEPARATOR to be compatible with + its possible use as an argument for installation command. */ @@ -1095,9 +1095,9 @@ Index: gdb-7.10.90.20160211/gdb/build-id.c + if (*slot != NULL) + return; + -+ missing_filepair = obstack_alloc (&missing_filepair_obstack, -+ sizeof (*missing_filepair) - 1 -+ + binary_len0 + debug_len0); ++ missing_filepair = (struct missing_filepair *) obstack_alloc (&missing_filepair_obstack, ++ sizeof (*missing_filepair) - 1 ++ + binary_len0 + debug_len0); + missing_filepair->binary = missing_filepair->data; + memcpy (missing_filepair->binary, binary, binary_len0); + if (debug != NULL) @@ -1166,10 +1166,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 +1204,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 +1217,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 +1230,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 +1239,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; diff --git a/gdb-6.8-attach-signalled-detach-stopped.patch b/gdb-6.8-attach-signalled-detach-stopped.patch index a0c472b..44b8311 100644 --- a/gdb-6.8-attach-signalled-detach-stopped.patch +++ b/gdb-6.8-attach-signalled-detach-stopped.patch @@ -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); + -+ pid_was_stopped = 0; ++#ifdef NEED_DETACH_SIGSTOP ++ pid_was_stopped = 0; +#endif + } + delete_lwp (main_lwp->ptid); } - - /* Resume execution of the inferior process. If STEP is nonzero, -@@ -1674,6 +1705,16 @@ linux_nat_resume (struct target_ops *ops +@@ -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} diff --git a/gdb-6.8-quit-never-aborts.patch b/gdb-6.8-quit-never-aborts.patch index 47e1c64..55e714e 100644 --- a/gdb-6.8-quit-never-aborts.patch +++ b/gdb-6.8-quit-never-aborts.patch @@ -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.) */ diff --git a/gdb-archer-vla-tests.patch b/gdb-archer-vla-tests.patch index fa60380..7f7e184 100644 --- a/gdb-archer-vla-tests.patch +++ b/gdb-archer-vla-tests.patch @@ -1,7 +1,7 @@ -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.ada/packed_array.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.ada/packed_array.exp =================================================================== ---- gdb-7.10.90.20160211.orig/gdb/testsuite/gdb.ada/packed_array.exp 2016-02-15 23:33:29.830959972 +0100 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.ada/packed_array.exp 2016-02-15 23:35:56.289999846 +0100 +--- gdb-7.11.50.20160716.orig/gdb/testsuite/gdb.ada/packed_array.exp 2016-07-16 03:48:59.000000000 +0200 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.ada/packed_array.exp 2016-07-16 16:53:33.736172889 +0200 @@ -56,5 +56,11 @@ # are. Observed with (FSF GNU Ada 4.5.3 20110124). xfail $test @@ -14,10 +14,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.ada/packed_array.exp + } } -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.arch/x86_64-vla-typedef-foo.S +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.arch/x86_64-vla-typedef-foo.S =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.arch/x86_64-vla-typedef-foo.S 2016-02-15 23:35:56.290999853 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.arch/x86_64-vla-typedef-foo.S 2016-07-16 16:53:33.737172897 +0200 @@ -0,0 +1,455 @@ + .file "x86_64-vla-typedef.c" + .section .debug_abbrev,"",@progbits @@ -474,10 +474,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.arch/x86_64-vla-typedef-foo.S + .string "GNU C 4.3.2 20081105 (Red Hat 4.3.2-7)" + .ident "GCC: (GNU) 4.3.2 20081105 (Red Hat 4.3.2-7)" + .section .note.GNU-stack,"",@progbits -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.arch/x86_64-vla-typedef.c +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.arch/x86_64-vla-typedef.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.arch/x86_64-vla-typedef.c 2016-02-15 23:35:56.290999853 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.arch/x86_64-vla-typedef.c 2016-07-16 16:53:33.737172897 +0200 @@ -0,0 +1,45 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -524,10 +524,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.arch/x86_64-vla-typedef.c +} + +#endif -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.arch/x86_64-vla-typedef.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.arch/x86_64-vla-typedef.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.arch/x86_64-vla-typedef.exp 2016-02-15 23:35:56.290999853 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.arch/x86_64-vla-typedef.exp 2016-07-16 16:53:33.737172897 +0200 @@ -0,0 +1,64 @@ +# Copyright 2009 Free Software Foundation, Inc. + @@ -593,10 +593,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.arch/x86_64-vla-typedef.exp +gdb_test "whatis array" "type = array_t" "second: whatis array" + +gdb_test "ptype array" "type = char \\\[78\\\]" "second: ptype array" -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/arrayidx.c +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.base/arrayidx.c =================================================================== ---- gdb-7.10.90.20160211.orig/gdb/testsuite/gdb.base/arrayidx.c 2016-02-15 23:33:29.830959972 +0100 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.base/arrayidx.c 2016-02-15 23:35:56.290999853 +0100 +--- gdb-7.11.50.20160716.orig/gdb/testsuite/gdb.base/arrayidx.c 2016-07-16 03:48:59.000000000 +0200 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.base/arrayidx.c 2016-07-16 16:53:33.737172897 +0200 @@ -17,6 +17,13 @@ int array[] = {1, 2, 3, 4}; @@ -611,10 +611,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/arrayidx.c int main (void) { -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/arrayidx.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.base/arrayidx.exp =================================================================== ---- gdb-7.10.90.20160211.orig/gdb/testsuite/gdb.base/arrayidx.exp 2016-02-15 23:33:29.830959972 +0100 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.base/arrayidx.exp 2016-02-15 23:35:56.291999860 +0100 +--- gdb-7.11.50.20160716.orig/gdb/testsuite/gdb.base/arrayidx.exp 2016-07-16 03:48:59.000000000 +0200 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.base/arrayidx.exp 2016-07-16 16:53:33.737172897 +0200 @@ -49,4 +49,12 @@ "\\{\\\[0\\\] = 1, \\\[1\\\] = 2, \\\[2\\\] = 3, \\\[3\\\] = 4\\}" \ "Print array with array-indexes on" @@ -629,10 +629,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/arrayidx.exp + unsupported "$test (no GCC)" + } +} -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/internal-var-field-address.c +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.base/internal-var-field-address.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.base/internal-var-field-address.c 2016-02-15 23:35:56.291999860 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.base/internal-var-field-address.c 2016-07-16 16:53:33.737172897 +0200 @@ -0,0 +1,20 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -654,10 +654,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/internal-var-field-address.c +struct { + int field; +} staticstruct = { 1 }; -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/internal-var-field-address.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.base/internal-var-field-address.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.base/internal-var-field-address.exp 2016-02-15 23:35:56.291999860 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.base/internal-var-field-address.exp 2016-07-16 16:53:33.737172897 +0200 @@ -0,0 +1,26 @@ +# Copyright 2009 Free Software Foundation, Inc. + @@ -685,10 +685,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/internal-var-field-address.ex + +gdb_test {set $varstruct = staticstruct} +gdb_test {p $varstruct.field} " = 1" -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla-frame.c +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.base/vla-frame.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla-frame.c 2016-02-15 23:35:56.291999860 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.base/vla-frame.c 2016-07-16 16:53:33.737172897 +0200 @@ -0,0 +1,31 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -721,10 +721,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla-frame.c + f (s); + return 0; +} -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla-frame.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.base/vla-frame.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla-frame.exp 2016-02-15 23:35:56.291999860 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.base/vla-frame.exp 2016-07-16 16:53:33.737172897 +0200 @@ -0,0 +1,38 @@ +# Copyright 2011 Free Software Foundation, Inc. +# @@ -764,10 +764,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla-frame.exp +} + +gdb_test "bt full" "\r\n +s = \"X\\\\000\"\r\n.*" -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla-overflow.c +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.base/vla-overflow.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla-overflow.c 2016-02-15 23:35:56.291999860 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.base/vla-overflow.c 2016-07-16 16:53:33.737172897 +0200 @@ -0,0 +1,30 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -799,10 +799,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla-overflow.c + + return 0; +} -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla-overflow.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.base/vla-overflow.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla-overflow.exp 2016-02-15 23:35:56.292999867 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.base/vla-overflow.exp 2016-07-16 16:53:33.737172897 +0200 @@ -0,0 +1,109 @@ +# Copyright 2008 Free Software Foundation, Inc. + @@ -913,10 +913,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla-overflow.exp +gdb_test "bt" "in \[^ \]*abort \\(.* in main \\(.*" "Backtrace after abort()" + +verbose -log "kb_found in bt after abort() = [expr [memory_v_pages_get] * $pagesize / 1024]" -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla.c +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.base/vla.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla.c 2016-02-15 23:35:56.292999867 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.base/vla.c 2016-07-16 16:53:33.737172897 +0200 @@ -0,0 +1,55 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -973,10 +973,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla.c + foo (78); + return 0; +} -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.base/vla.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla.exp 2016-02-15 23:35:56.292999867 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.base/vla.exp 2016-07-16 16:53:33.738172906 +0200 @@ -0,0 +1,62 @@ +# Copyright 2008 Free Software Foundation, Inc. + @@ -1040,10 +1040,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/vla.exp +gdb_test "p temp1" " = '1' " "second: print temp1" +gdb_test "p temp2" " = '2' " "second: print temp2" +gdb_test "p temp3" " = '3' " "second: print temp3" -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.S +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.S =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.S 2016-02-15 23:35:56.292999867 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.S 2016-07-16 16:53:33.738172906 +0200 @@ -0,0 +1,246 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -1291,10 +1291,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.S + .string "char" +.Luint_str: + .string "unsigned int" -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.exp 2016-02-15 23:35:56.292999867 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.exp 2016-07-16 16:53:33.738172906 +0200 @@ -0,0 +1,66 @@ +# Copyright 2010 Free Software Foundation, Inc. + @@ -1362,10 +1362,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.exp + +# The register contains unpredictable value - the array size. +gdb_test "ptype reg_string" {type = char \[-?[0-9]+\]} -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-stripped.c +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.dwarf2/dw2-stripped.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-stripped.c 2016-02-15 23:35:56.293999874 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.dwarf2/dw2-stripped.c 2016-07-16 16:53:33.738172906 +0200 @@ -0,0 +1,42 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -1409,10 +1409,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-stripped.c + func1 (1, 2); + return 0; +} -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-stripped.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.dwarf2/dw2-stripped.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-stripped.exp 2016-02-15 23:35:56.293999874 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.dwarf2/dw2-stripped.exp 2016-07-16 16:53:33.738172906 +0200 @@ -0,0 +1,79 @@ +# Copyright 2006 Free Software Foundation, Inc. + @@ -1493,10 +1493,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-stripped.exp +gdb_test "step" \ + "func.* \\(.*\\) at .*" \ + "step" -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.S +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.S =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.S 2016-02-15 23:35:56.293999874 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.S 2016-07-16 16:53:33.738172906 +0200 @@ -0,0 +1,83 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -1581,10 +1581,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-loca + + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.exp 2016-02-15 23:35:56.293999874 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.exp 2016-07-16 16:53:33.738172906 +0200 @@ -0,0 +1,37 @@ +# Copyright 2009 Free Software Foundation, Inc. + @@ -1623,10 +1623,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-loca +clean_restart $binfile + +gdb_test "ptype struct some_struct" "type = struct some_struct {\[\r\n \t\]*void field;\[\r\n \t\]*}" -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-subrange-no-type.S +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.dwarf2/dw2-subrange-no-type.S =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-subrange-no-type.S 2016-02-15 23:35:56.293999874 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.dwarf2/dw2-subrange-no-type.S 2016-07-16 16:53:33.738172906 +0200 @@ -0,0 +1,121 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -1749,10 +1749,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-subrange-no-type.S + .byte 0x0 /* Terminator */ + + .byte 0x0 /* Terminator */ -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-subrange-no-type.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.dwarf2/dw2-subrange-no-type.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-subrange-no-type.exp 2016-02-15 23:35:56.293999874 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.dwarf2/dw2-subrange-no-type.exp 2016-07-16 16:53:33.738172906 +0200 @@ -0,0 +1,39 @@ +# Copyright 2012 Free Software Foundation, Inc. + @@ -1793,10 +1793,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.dwarf2/dw2-subrange-no-type.exp + +gdb_test "ptype notype_string" {type = char \[129\]} +gdb_test "p notype_string" " = 'x' " -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/dwarf-stride.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.fortran/dwarf-stride.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/dwarf-stride.exp 2016-02-15 23:35:56.294999881 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.fortran/dwarf-stride.exp 2016-07-16 16:53:33.739172914 +0200 @@ -0,0 +1,42 @@ +# Copyright 2009 Free Software Foundation, Inc. + @@ -1840,10 +1840,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/dwarf-stride.exp +gdb_continue_to_breakpoint "break-here" ".*break-here.*" +gdb_test "p c40pt(1)" " = '0-hello.*" +gdb_test "p c40pt(2)" " = '1-hello.*" -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/dwarf-stride.f90 +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.fortran/dwarf-stride.f90 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/dwarf-stride.f90 2016-02-15 23:35:56.294999881 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.fortran/dwarf-stride.f90 2016-07-16 16:53:33.739172914 +0200 @@ -0,0 +1,40 @@ +! Copyright 2009 Free Software Foundation, Inc. +! @@ -1885,10 +1885,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/dwarf-stride.f90 + print *, c40pt ! break-here + +end program repro -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/dynamic.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.fortran/dynamic.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/dynamic.exp 2016-02-15 23:36:39.358305635 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.fortran/dynamic.exp 2016-07-16 17:19:24.255202013 +0200 @@ -0,0 +1,151 @@ +# Copyright 2007 Free Software Foundation, Inc. + @@ -1935,7 +1935,7 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/dynamic.exp +gdb_breakpoint [gdb_get_line_number "varx-init"] +gdb_continue_to_breakpoint "varx-init" +gdb_test "p varx" "\\$\[0-9\]* = " "p varx unallocated" -+gdb_test "ptype varx" "type = " "ptype varx unallocated" ++gdb_test "ptype varx" {type = real\(kind=4\) \(:,:,:\)} "ptype varx unallocated" +gdb_test "p varx(1,5,17)" {no such vector element \(vector not allocated\)} "p varx(1,5,17) unallocated" +gdb_test "p varx(1,5,17)=1" {no such vector element \(vector not allocated\)} "p varx(1,5,17)=1 unallocated" +gdb_test "ptype varx(1,5,17)" {no such vector element \(vector not allocated\)} "ptype varx(1,5,17) unallocated" @@ -1954,7 +1954,7 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/dynamic.exp +gdb_test "p varx(2, 6, 18)" "\\$\[0-9\]* = 8" +gdb_test "p varx(6, 15, 28)" "\\$\[0-9\]* = 9" +gdb_test "p varv" "\\$\[0-9\]* = " "p varv unassociated" -+gdb_test "ptype varv" "type = " "ptype varv unassociated" ++gdb_test "ptype varv" {type = real\(kind=4\) \(:,:,:\)} "ptype varv unassociated" + +set test "output varx" +gdb_test_multiple $test $test { @@ -1982,7 +1982,7 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/dynamic.exp +gdb_continue_to_breakpoint "varv-deassociated" +# The latter one is for the Intel Fortran Compiler 10.1.008 pointer type. +gdb_test "p varv" "\\$\[0-9\]* = (|.*(Cannot access it|Unable to access the object) because the object is not associated.)" "p varv deassociated" -+gdb_test "ptype varv" "type = (|.*(Cannot access it|Unable to access the object) because the object is not associated.)" "ptype varv deassociated" ++gdb_test "ptype varv" {type = real\(kind=4\) \(:,:,:\)} "ptype varv deassociated" +gdb_test "p l" "\\$\[0-9\]* = \\.FALSE\\." "p l if varv deassociated" +gdb_test "p varv(1,5,17)" {no such vector element \(vector not associated\)} +gdb_test "ptype varv(1,5,17)" {no such vector element \(vector not associated\)} @@ -1990,7 +1990,7 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/dynamic.exp +gdb_breakpoint [gdb_get_line_number "varx-deallocated"] +gdb_continue_to_breakpoint "varx-deallocated" +gdb_test "p varx" "\\$\[0-9\]* = " "p varx deallocated" -+gdb_test "ptype varx" "type = " "ptype varx deallocated" ++gdb_test "ptype varx" {type = real\(kind=4\) \(:,:,:\)} "ptype varx deallocated" +gdb_test "p l" "\\$\[0-9\]* = \\.FALSE\\." "p l if varx deallocated" +gdb_test "p varx(1,5,17)" {no such vector element \(vector not allocated\)} "p varx(1,5,17) deallocated" +gdb_test "ptype varx(1,5,17)" {no such vector element \(vector not allocated\)} "ptype varx(1,5,17) deallocated" @@ -2041,10 +2041,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/dynamic.exp +gdb_test "p vart(3,8)" "\\$\[0-9\]* = 9" +# maps to foo::vary(1,3) +gdb_test "p vart(2,9)" "\\$\[0-9\]* = 10" -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/dynamic.f90 +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.fortran/dynamic.f90 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/dynamic.f90 2016-02-15 23:35:56.294999881 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.fortran/dynamic.f90 2016-07-16 16:53:33.739172914 +0200 @@ -0,0 +1,98 @@ +! Copyright 2007 Free Software Foundation, Inc. +! @@ -2144,10 +2144,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/dynamic.f90 + if (x (1, 1) .ne. 8 .or. x (2, 2) .ne. 9 .or. x (1, 2) .ne. 4) call abort + if (x (3, 1) .ne. 10) call abort +end -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/string.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.fortran/string.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/string.exp 2016-02-15 23:36:39.359305642 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.fortran/string.exp 2016-07-16 16:53:33.739172914 +0200 @@ -0,0 +1,59 @@ +# Copyright 2008 Free Software Foundation, Inc. + @@ -2208,10 +2208,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/string.exp +gdb_continue_to_breakpoint "var-finish" +gdb_test "p e" "\\$\[0-9\]* = 'e '" "p e re-set" +gdb_test "p f" "\\$\[0-9\]* = \\(\\( 'f ', 'f ', 'f ', 'f ', 'f ', 'f ', 'f '\\) \\( 'f2 ', 'f ', 'f ', 'f ', 'f ', 'f ', 'f '\\) \\( 'f ', 'f ', 'f ', 'f ', 'f ', 'f ', 'f '\\) \\)" "p *f re-set" -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/string.f90 +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.fortran/string.f90 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/string.f90 2016-02-15 23:35:56.295999888 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.fortran/string.f90 2016-07-16 16:53:33.739172914 +0200 @@ -0,0 +1,37 @@ +! Copyright 2008 Free Software Foundation, Inc. +! @@ -2250,10 +2250,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/string.f90 + h = 'h' + call foo (g, h) +end -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/subrange.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.fortran/subrange.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/subrange.exp 2016-02-15 23:35:56.295999888 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.fortran/subrange.exp 2016-07-16 16:53:33.739172914 +0200 @@ -0,0 +1,72 @@ +# Copyright 2011 Free Software Foundation, Inc. + @@ -2327,10 +2327,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/subrange.exp +gdb_unload +setup_kfail "*-*-*" "vlaregression/9999" +gdb_test {p $a (3, 2:2)} { = \(23\)} -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/subrange.f90 +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.fortran/subrange.f90 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/subrange.f90 2016-02-15 23:35:56.295999888 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.fortran/subrange.f90 2016-07-16 16:53:33.739172914 +0200 @@ -0,0 +1,28 @@ +! Copyright 2011 Free Software Foundation, Inc. +! @@ -2360,10 +2360,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.fortran/subrange.f90 + ptr => a + write (*,*) a ! break-static +end -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.mi/mi2-var-stale-type.c +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.mi/mi2-var-stale-type.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.mi/mi2-var-stale-type.c 2016-02-15 23:35:56.295999888 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.mi/mi2-var-stale-type.c 2016-07-16 16:53:33.739172914 +0200 @@ -0,0 +1,26 @@ +/* Copyright 2011 Free Software Foundation, Inc. + @@ -2391,10 +2391,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.mi/mi2-var-stale-type.c + + return 0; +} -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.mi/mi2-var-stale-type.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.mi/mi2-var-stale-type.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.mi/mi2-var-stale-type.exp 2016-02-15 23:35:56.295999888 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.mi/mi2-var-stale-type.exp 2016-07-16 16:53:33.739172914 +0200 @@ -0,0 +1,57 @@ +# Copyright 2011 Free Software Foundation, Inc. +# @@ -2453,10 +2453,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.mi/mi2-var-stale-type.exp +mi_create_varobj "vla" "vla" "create local variable vla" + +mi_gdb_test "-var-update *" "\\^done,changelist=.*" "-var-update *" -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.opt/array-from-register-func.c +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.opt/array-from-register-func.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.opt/array-from-register-func.c 2016-02-15 23:35:56.295999888 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.opt/array-from-register-func.c 2016-07-16 16:53:33.739172914 +0200 @@ -0,0 +1,22 @@ +/* This file is part of GDB, the GNU debugger. + @@ -2480,10 +2480,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.opt/array-from-register-func.c +{ + return arr[0]; +} -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.opt/array-from-register.c +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.opt/array-from-register.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.opt/array-from-register.c 2016-02-15 23:35:56.296999895 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.opt/array-from-register.c 2016-07-16 16:53:33.740172922 +0200 @@ -0,0 +1,28 @@ +/* This file is part of GDB, the GNU debugger. + @@ -2513,10 +2513,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.opt/array-from-register.c + + return 0; +} -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.opt/array-from-register.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.opt/array-from-register.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.opt/array-from-register.exp 2016-02-15 23:35:56.296999895 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.opt/array-from-register.exp 2016-07-16 16:53:33.740172922 +0200 @@ -0,0 +1,33 @@ +# Copyright 2009 Free Software Foundation, Inc. +# @@ -2551,10 +2551,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.opt/array-from-register.exp +# Seen regression: +# Address requested for identifier "arr" which is in register $rdi +gdb_test "p arr\[0\]" "\\$\[0-9\]+ = 42" -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.pascal/arrays.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.pascal/arrays.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.pascal/arrays.exp 2016-02-15 23:36:39.359305642 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.pascal/arrays.exp 2016-07-16 16:53:33.740172922 +0200 @@ -0,0 +1,104 @@ +# Copyright 2008, 2009 Free Software Foundation, Inc. +# @@ -2660,10 +2660,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.pascal/arrays.exp +} +gdb_test "print DynArrChar" ".* = 'abcdefghijklm'" "Print dynamic array of char" + -Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.pascal/arrays.pas +Index: gdb-7.11.50.20160716/gdb/testsuite/gdb.pascal/arrays.pas =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.pascal/arrays.pas 2016-02-15 23:35:56.296999895 +0100 ++++ gdb-7.11.50.20160716/gdb/testsuite/gdb.pascal/arrays.pas 2016-07-16 16:53:33.740172922 +0200 @@ -0,0 +1,82 @@ +{ + Copyright 2008, 2009 Free Software Foundation, Inc. @@ -2747,10 +2747,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.pascal/arrays.pas + s := 'test'#0'string'; + writeln(s); { set breakpoint 2 here } +end. -Index: gdb-7.10.90.20160211/gdb/testsuite/lib/gdb.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/lib/gdb.exp =================================================================== ---- gdb-7.10.90.20160211.orig/gdb/testsuite/lib/gdb.exp 2016-02-15 23:35:55.326993008 +0100 -+++ gdb-7.10.90.20160211/gdb/testsuite/lib/gdb.exp 2016-02-15 23:35:56.297999903 +0100 +--- gdb-7.11.50.20160716.orig/gdb/testsuite/lib/gdb.exp 2016-07-16 16:53:33.063167315 +0200 ++++ gdb-7.11.50.20160716/gdb/testsuite/lib/gdb.exp 2016-07-16 16:53:33.741172930 +0200 @@ -173,6 +173,11 @@ send_gdb "y\n" exp_continue @@ -2763,10 +2763,10 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/lib/gdb.exp -re "Discard symbol table from .*y or n.*$" { send_gdb "y\n" exp_continue -Index: gdb-7.10.90.20160211/gdb/testsuite/lib/pascal.exp +Index: gdb-7.11.50.20160716/gdb/testsuite/lib/pascal.exp =================================================================== ---- gdb-7.10.90.20160211.orig/gdb/testsuite/lib/pascal.exp 2016-02-15 23:33:29.830959972 +0100 -+++ gdb-7.10.90.20160211/gdb/testsuite/lib/pascal.exp 2016-02-15 23:35:56.298999910 +0100 +--- gdb-7.11.50.20160716.orig/gdb/testsuite/lib/pascal.exp 2016-07-16 03:48:59.000000000 +0200 ++++ gdb-7.11.50.20160716/gdb/testsuite/lib/pascal.exp 2016-07-16 16:53:33.741172930 +0200 @@ -37,6 +37,9 @@ global pascal_compiler_is_fpc global gpc_compiler diff --git a/gdb-archer.patch b/gdb-archer.patch index 617cc0f..904c606 100644 --- a/gdb-archer.patch +++ b/gdb-archer.patch @@ -2,7 +2,7 @@ http://sourceware.org/gdb/wiki/ProjectArcher http://sourceware.org/gdb/wiki/ArcherBranchManagement GIT snapshot: -commit f0ee78c5ccefe388a64273353ecd5c99dae62558 +commit 5e8c6e345d63e61d3c31e67a55db25a6824787b2 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 16d5f27..7346d46 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 0beca55..f499b53 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 a068622..64abaa7 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 6623d8e..a71f5e1 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 3a272a9..e7e61cf 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) +@@ -1254,6 +1256,90 @@ 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,7 +507,7 @@ 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++) @@ -514,7 +521,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 +546,7 @@ index 4f88b0e..870a1ba 100644 static PyObject * gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2) -@@ -1982,6 +2061,8 @@ PyMethodDef python_GdbMethods[] = +@@ -1972,6 +2058,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 +556,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,7 +567,7 @@ 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 af0026c..6c9bbb2 100644 --- a/gdb/testsuite/gdb.gdb/selftest.exp +++ b/gdb/testsuite/gdb.gdb/selftest.exp @@ -92,6 +92,10 @@ proc do_steps_and_nexts {} { @@ -575,7 +582,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 +595,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 +614,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 diff --git a/gdb-bare-DW_TAG_lexical_block-1of2.patch b/gdb-bare-DW_TAG_lexical_block-1of2.patch deleted file mode 100644 index 03fa5b8..0000000 --- a/gdb-bare-DW_TAG_lexical_block-1of2.patch +++ /dev/null @@ -1,235 +0,0 @@ -From 3a2b436ae9958a1029545c03201b7223ff33c150 Mon Sep 17 00:00:00 2001 -From: Jan Kratochvil -Date: Mon, 30 May 2016 14:11:43 +0200 -Subject: [PATCH 1/2] Code cleanup: dwarf2_get_pc_bounds: -1/0/+1 -> enum - -Make the code (maybe) more readable + primarily prepare it for [patch 2/2] -enum extension. - -This change should have no code change impact. - -gdb/ChangeLog -2016-05-30 Jan Kratochvil - - Code cleanup: dwarf2_get_pc_bounds: -1/0/+1 -> enum - * dwarf2read.c (enum pc_bounds_kind) New. - (dwarf2_get_pc_bounds): Use it in the declaration. - (process_psymtab_comp_unit_reader): Adjust caller. Rename has_pc_info - to cu_bounds_kind. - (read_func_scope, read_lexical_block_scope, read_call_site_scope): - Adjust callers. - (dwarf2_get_pc_bounds): Use enum pc_bounds_kind in the definition. - (dwarf2_get_subprogram_pc_bounds, get_scope_pc_bounds): Adjust callers. ---- - gdb/ChangeLog | 12 ++++++++++ - gdb/dwarf2read.c | 71 ++++++++++++++++++++++++++++++++++++-------------------- - 2 files changed, 58 insertions(+), 25 deletions(-) - -### a/gdb/ChangeLog -### b/gdb/ChangeLog -## -1,3 +1,15 @@ -+2016-05-30 Jan Kratochvil -+ -+ Code cleanup: dwarf2_get_pc_bounds: -1/0/+1 -> enum -+ * dwarf2read.c (enum pc_bounds_kind) New. -+ (dwarf2_get_pc_bounds): Use it in the declaration. -+ (process_psymtab_comp_unit_reader): Adjust caller. Rename has_pc_info -+ to cu_bounds_kind. -+ (read_func_scope, read_lexical_block_scope, read_call_site_scope): -+ Adjust callers. -+ (dwarf2_get_pc_bounds): Use enum pc_bounds_kind in the definition. -+ (dwarf2_get_subprogram_pc_bounds, get_scope_pc_bounds): Adjust callers. -+ - 2016-05-29 Jan Kratochvil - - * NEWS (QCatchSyscalls): Remove the parameter. Include ... ---- a/gdb/dwarf2read.c -+++ b/gdb/dwarf2read.c -@@ -1606,9 +1606,25 @@ static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu); - static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *, - struct dwarf2_cu *, struct partial_symtab *); - --static int dwarf2_get_pc_bounds (struct die_info *, -- CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *, -- struct partial_symtab *); -+/* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return -+ values. */ -+enum pc_bounds_kind -+{ -+ /* No valid combination of DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges -+ was found. */ -+ PC_BOUNDS_NOT_PRESENT, -+ -+ /* Discontiguous range was found - that is DW_AT_ranges was found. */ -+ PC_BOUNDS_RANGES, -+ -+ /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found. */ -+ PC_BOUNDS_HIGH_LOW, -+}; -+ -+static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *, -+ CORE_ADDR *, CORE_ADDR *, -+ struct dwarf2_cu *, -+ struct partial_symtab *); - - static void get_scope_pc_bounds (struct die_info *, - CORE_ADDR *, CORE_ADDR *, -@@ -5947,7 +5963,7 @@ process_psymtab_comp_unit_reader (const struct die_reader_specs *reader, - CORE_ADDR baseaddr; - CORE_ADDR best_lowpc = 0, best_highpc = 0; - struct partial_symtab *pst; -- int has_pc_info; -+ enum pc_bounds_kind cu_bounds_kind; - const char *filename; - struct process_psymtab_comp_unit_data *info - = (struct process_psymtab_comp_unit_data *) data; -@@ -5977,9 +5993,9 @@ process_psymtab_comp_unit_reader (const struct die_reader_specs *reader, - - /* Possibly set the default values of LOWPC and HIGHPC from - `DW_AT_ranges'. */ -- has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc, -- &best_highpc, cu, pst); -- if (has_pc_info == 1 && best_lowpc < best_highpc) -+ cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc, -+ &best_highpc, cu, pst); -+ if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc) - /* Store the contiguous range if it is not empty; it can be empty for - CUs with no code. */ - addrmap_set_empty (objfile->psymtabs_addrmap, -@@ -6003,7 +6019,7 @@ process_psymtab_comp_unit_reader (const struct die_reader_specs *reader, - first_die = load_partial_dies (reader, info_ptr, 1); - - scan_partial_symbols (first_die, &lowpc, &highpc, -- ! has_pc_info, cu); -+ cu_bounds_kind == PC_BOUNDS_NOT_PRESENT, cu); - - /* If we didn't find a lowpc, set it to highpc to avoid - complaints from `maint check'. */ -@@ -6012,7 +6028,7 @@ process_psymtab_comp_unit_reader (const struct die_reader_specs *reader, - - /* If the compilation unit didn't have an explicit address range, - then use the information extracted from its child dies. */ -- if (! has_pc_info) -+ if (cu_bounds_kind == PC_BOUNDS_NOT_PRESENT) - { - best_lowpc = lowpc; - best_highpc = highpc; -@@ -11373,7 +11389,8 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu) - } - - /* Ignore functions with missing or invalid low and high pc attributes. */ -- if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)) -+ if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL) -+ == PC_BOUNDS_NOT_PRESENT) - { - attr = dwarf2_attr (die, DW_AT_external, cu); - if (!attr || !DW_UNSND (attr)) -@@ -11535,7 +11552,8 @@ read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu) - as multiple lexical blocks? Handling children in a sane way would - be nasty. Might be easier to properly extend generic blocks to - describe ranges. */ -- if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)) -+ if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL) -+ == PC_BOUNDS_NOT_PRESENT) - return; - lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr); - highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr); -@@ -11745,7 +11763,8 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu) - CORE_ADDR lowpc; - - /* DW_AT_entry_pc should be preferred. */ -- if (!dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)) -+ if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL) -+ == PC_BOUNDS_NOT_PRESENT) - complaint (&symfile_complaints, - _("DW_AT_GNU_call_site_target target DIE has invalid " - "low pc, for referencing DIE 0x%x [in module %s]"), -@@ -12020,11 +12039,11 @@ dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return, - return 1; - } - --/* Get low and high pc attributes from a die. Return 1 if the attributes -- are present and valid, otherwise, return 0. Return -1 if the range is -- discontinuous, i.e. derived from DW_AT_ranges information. */ -+/* Get low and high pc attributes from a die. See enum pc_bounds_kind -+ definition for the return value. *LOWPC and *HIGHPC are set iff -+ PC_BOUNDS_NOT_PRESENT is not returned. */ - --static int -+static enum pc_bounds_kind - dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc, - CORE_ADDR *highpc, struct dwarf2_cu *cu, - struct partial_symtab *pst) -@@ -12033,7 +12052,7 @@ dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc, - struct attribute *attr_high; - CORE_ADDR low = 0; - CORE_ADDR high = 0; -- int ret = 0; -+ enum pc_bounds_kind ret = PC_BOUNDS_NOT_PRESENT; - - attr_high = dwarf2_attr (die, DW_AT_high_pc, cu); - if (attr_high) -@@ -12048,10 +12067,10 @@ dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc, - } - else - /* Found high w/o low attribute. */ -- return 0; -+ return PC_BOUNDS_NOT_PRESENT; - - /* Found consecutive range of addresses. */ -- ret = 1; -+ ret = PC_BOUNDS_HIGH_LOW; - } - else - { -@@ -12070,15 +12089,15 @@ dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc, - /* Value of the DW_AT_ranges attribute is the offset in the - .debug_ranges section. */ - if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst)) -- return 0; -+ return PC_BOUNDS_NOT_PRESENT; - /* Found discontinuous range of addresses. */ -- ret = -1; -+ ret = PC_BOUNDS_RANGES; - } - } - - /* read_partial_die has also the strict LOW < HIGH requirement. */ - if (high <= low) -- return 0; -+ return PC_BOUNDS_NOT_PRESENT; - - /* When using the GNU linker, .gnu.linkonce. sections are used to - eliminate duplicate copies of functions and vtables and such. -@@ -12089,7 +12108,7 @@ dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc, - If this is a discarded function, mark the pc bounds as invalid, - so that GDB will ignore it. */ - if (low == 0 && !dwarf2_per_objfile->has_section_at_zero) -- return 0; -+ return PC_BOUNDS_NOT_PRESENT; - - *lowpc = low; - if (highpc) -@@ -12110,7 +12129,8 @@ dwarf2_get_subprogram_pc_bounds (struct die_info *die, - CORE_ADDR low, high; - struct die_info *child = die->child; - -- if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL)) -+ if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) -+ != PC_BOUNDS_NOT_PRESENT) - { - *lowpc = min (*lowpc, low); - *highpc = max (*highpc, high); -@@ -12147,7 +12167,8 @@ get_scope_pc_bounds (struct die_info *die, - CORE_ADDR best_high = (CORE_ADDR) 0; - CORE_ADDR current_low, current_high; - -- if (dwarf2_get_pc_bounds (die, ¤t_low, ¤t_high, cu, NULL)) -+ if (dwarf2_get_pc_bounds (die, ¤t_low, ¤t_high, cu, NULL) -+ != PC_BOUNDS_NOT_PRESENT) - { - best_low = current_low; - best_high = current_high; --- -2.5.5 - diff --git a/gdb-bare-DW_TAG_lexical_block-2of2.patch b/gdb-bare-DW_TAG_lexical_block-2of2.patch deleted file mode 100644 index c88fdf3..0000000 --- a/gdb-bare-DW_TAG_lexical_block-2of2.patch +++ /dev/null @@ -1,343 +0,0 @@ -From e385593eef98ac92be57159e141f4b805dadbbb3 Mon Sep 17 00:00:00 2001 -From: Jan Kratochvil -Date: Mon, 30 May 2016 14:14:43 +0200 -Subject: [PATCH 2/2] PR 15231: import bare DW_TAG_lexical_block - -Local variables in lambdas are not accessible -https://sourceware.org/bugzilla/show_bug.cgi?id=15231 - -GDB: read_lexical_block_scope - /* Ignore blocks with missing or invalid low and high pc attributes. */ -[...] - if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)) - return; - -But sometimes there is: - -FAIL: gcc-5.3.1-6.fc23.x86_64 - <2><92>: Abbrev Number: 11 (DW_TAG_lexical_block) - <3><9c>: Abbrev Number: 13 (DW_TAG_structure_type) - <9d> DW_AT_name : (indirect string, offset: 0x3c): - [...] - -Where DW_TAG_lexical_block has no attributes. Such whole subtree is currently -dropped by GDB while I think it should just import all its children DIEs. - -It even XFAIL->XPASSes gdb.ada/out_of_line_in_inlined.exp: - commit 0fa7fe506c242b459c4c05d331e7c7d66fb52390 - Author: Joel Brobecker - out of line functions nested inside inline functions. -So I have removed that xfail. - -gdb/ChangeLog -2016-05-30 Jan Kratochvil - - PR c++/15231 - * dwarf2read.c (enum pc_bounds_kind): Add PC_BOUNDS_INVALID. - (process_psymtab_comp_unit_reader, read_func_scope): Adjust callers. - (read_lexical_block_scope): Import DIEs from bare DW_TAG_lexical_block. - (read_call_site_scope): Adjust callers. - (dwarf2_get_pc_bounds): Implement pc_bounds_invalid. - (dwarf2_get_subprogram_pc_bounds, get_scope_pc_bounds): Adjust callers. - -gdb/testsuite/ChangeLog -2016-05-30 Jan Kratochvil - - PR c++/15231 - * gdb.ada/out_of_line_in_inlined.exp: Remove xfails. - * gdb.dwarf2/dw2-lexical-block-bare.exp: New file. ---- - gdb/ChangeLog | 10 ++++ - gdb/dwarf2read.c | 53 ++++++++++------ - gdb/testsuite/ChangeLog | 6 ++ - gdb/testsuite/gdb.ada/out_of_line_in_inlined.exp | 6 -- - .../gdb.dwarf2/dw2-lexical-block-bare.exp | 70 ++++++++++++++++++++++ - 5 files changed, 120 insertions(+), 25 deletions(-) - create mode 100644 gdb/testsuite/gdb.dwarf2/dw2-lexical-block-bare.exp - -### a/gdb/ChangeLog -### b/gdb/ChangeLog -## -1,5 +1,15 @@ - 2016-05-30 Jan Kratochvil - -+ PR c++/15231 -+ * dwarf2read.c (enum pc_bounds_kind): Add PC_BOUNDS_INVALID. -+ (process_psymtab_comp_unit_reader, read_func_scope): Adjust callers. -+ (read_lexical_block_scope): Import DIEs from bare DW_TAG_lexical_block. -+ (read_call_site_scope): Adjust callers. -+ (dwarf2_get_pc_bounds): Implement pc_bounds_invalid. -+ (dwarf2_get_subprogram_pc_bounds, get_scope_pc_bounds): Adjust callers. -+ -+2016-05-30 Jan Kratochvil -+ - Code cleanup: dwarf2_get_pc_bounds: -1/0/+1 -> enum - * dwarf2read.c (enum pc_bounds_kind) New. - (dwarf2_get_pc_bounds): Use it in the declaration. ---- a/gdb/dwarf2read.c -+++ b/gdb/dwarf2read.c -@@ -1607,13 +1607,16 @@ static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *, - struct dwarf2_cu *, struct partial_symtab *); - - /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return -- values. */ -+ values. Keep the items ordered with increasing constraints compliance. */ - enum pc_bounds_kind - { -- /* No valid combination of DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges -- was found. */ -+ /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found. */ - PC_BOUNDS_NOT_PRESENT, - -+ /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges -+ were present but they do not form a valid range of PC addresses. */ -+ PC_BOUNDS_INVALID, -+ - /* Discontiguous range was found - that is DW_AT_ranges was found. */ - PC_BOUNDS_RANGES, - -@@ -6019,7 +6022,7 @@ process_psymtab_comp_unit_reader (const struct die_reader_specs *reader, - first_die = load_partial_dies (reader, info_ptr, 1); - - scan_partial_symbols (first_die, &lowpc, &highpc, -- cu_bounds_kind == PC_BOUNDS_NOT_PRESENT, cu); -+ cu_bounds_kind <= PC_BOUNDS_INVALID, cu); - - /* If we didn't find a lowpc, set it to highpc to avoid - complaints from `maint check'. */ -@@ -6028,7 +6031,7 @@ process_psymtab_comp_unit_reader (const struct die_reader_specs *reader, - - /* If the compilation unit didn't have an explicit address range, - then use the information extracted from its child dies. */ -- if (cu_bounds_kind == PC_BOUNDS_NOT_PRESENT) -+ if (cu_bounds_kind <= PC_BOUNDS_INVALID) - { - best_lowpc = lowpc; - best_highpc = highpc; -@@ -11390,7 +11393,7 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu) - - /* Ignore functions with missing or invalid low and high pc attributes. */ - if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL) -- == PC_BOUNDS_NOT_PRESENT) -+ <= PC_BOUNDS_INVALID) - { - attr = dwarf2_attr (die, DW_AT_external, cu); - if (!attr || !DW_UNSND (attr)) -@@ -11552,9 +11555,20 @@ read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu) - as multiple lexical blocks? Handling children in a sane way would - be nasty. Might be easier to properly extend generic blocks to - describe ranges. */ -- if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL) -- == PC_BOUNDS_NOT_PRESENT) -- return; -+ switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)) -+ { -+ case PC_BOUNDS_NOT_PRESENT: -+ /* DW_TAG_lexical_block has no attributes, process its children as if -+ there was no wrapping by that DW_TAG_lexical_block. -+ GCC does no longer produces such DWARF since GCC r224161. */ -+ for (child_die = die->child; -+ child_die != NULL && child_die->tag; -+ child_die = sibling_die (child_die)) -+ process_die (child_die, cu); -+ return; -+ case PC_BOUNDS_INVALID: -+ return; -+ } - lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr); - highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr); - -@@ -11764,7 +11778,7 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu) - - /* DW_AT_entry_pc should be preferred. */ - if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL) -- == PC_BOUNDS_NOT_PRESENT) -+ <= PC_BOUNDS_INVALID) - complaint (&symfile_complaints, - _("DW_AT_GNU_call_site_target target DIE has invalid " - "low pc, for referencing DIE 0x%x [in module %s]"), -@@ -12041,7 +12055,7 @@ dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return, - - /* Get low and high pc attributes from a die. See enum pc_bounds_kind - definition for the return value. *LOWPC and *HIGHPC are set iff -- PC_BOUNDS_NOT_PRESENT is not returned. */ -+ neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned. */ - - static enum pc_bounds_kind - dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc, -@@ -12052,7 +12066,7 @@ dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc, - struct attribute *attr_high; - CORE_ADDR low = 0; - CORE_ADDR high = 0; -- enum pc_bounds_kind ret = PC_BOUNDS_NOT_PRESENT; -+ enum pc_bounds_kind ret; - - attr_high = dwarf2_attr (die, DW_AT_high_pc, cu); - if (attr_high) -@@ -12067,7 +12081,7 @@ dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc, - } - else - /* Found high w/o low attribute. */ -- return PC_BOUNDS_NOT_PRESENT; -+ return PC_BOUNDS_INVALID; - - /* Found consecutive range of addresses. */ - ret = PC_BOUNDS_HIGH_LOW; -@@ -12089,15 +12103,17 @@ dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc, - /* Value of the DW_AT_ranges attribute is the offset in the - .debug_ranges section. */ - if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst)) -- return PC_BOUNDS_NOT_PRESENT; -+ return PC_BOUNDS_INVALID; - /* Found discontinuous range of addresses. */ - ret = PC_BOUNDS_RANGES; - } -+ else -+ return PC_BOUNDS_NOT_PRESENT; - } - - /* read_partial_die has also the strict LOW < HIGH requirement. */ - if (high <= low) -- return PC_BOUNDS_NOT_PRESENT; -+ return PC_BOUNDS_INVALID; - - /* When using the GNU linker, .gnu.linkonce. sections are used to - eliminate duplicate copies of functions and vtables and such. -@@ -12108,7 +12124,7 @@ dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc, - If this is a discarded function, mark the pc bounds as invalid, - so that GDB will ignore it. */ - if (low == 0 && !dwarf2_per_objfile->has_section_at_zero) -- return PC_BOUNDS_NOT_PRESENT; -+ return PC_BOUNDS_INVALID; - - *lowpc = low; - if (highpc) -@@ -12129,8 +12145,7 @@ dwarf2_get_subprogram_pc_bounds (struct die_info *die, - CORE_ADDR low, high; - struct die_info *child = die->child; - -- if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) -- != PC_BOUNDS_NOT_PRESENT) -+ if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES) - { - *lowpc = min (*lowpc, low); - *highpc = max (*highpc, high); -@@ -12168,7 +12183,7 @@ get_scope_pc_bounds (struct die_info *die, - CORE_ADDR current_low, current_high; - - if (dwarf2_get_pc_bounds (die, ¤t_low, ¤t_high, cu, NULL) -- != PC_BOUNDS_NOT_PRESENT) -+ >= PC_BOUNDS_RANGES) - { - best_low = current_low; - best_high = current_high; -### a/gdb/testsuite/ChangeLog -### b/gdb/testsuite/ChangeLog -## -1,3 +1,9 @@ -+2016-05-30 Jan Kratochvil -+ -+ PR c++/15231 -+ * gdb.ada/out_of_line_in_inlined.exp: Remove xfails. -+ * gdb.dwarf2/dw2-lexical-block-bare.exp: New file. -+ - 2016-05-27 Pedro Alves - - * gdb.threads/attach-many-short-lived-threads.exp (bad_dejagnu): ---- a/gdb/testsuite/gdb.ada/out_of_line_in_inlined.exp -+++ b/gdb/testsuite/gdb.ada/out_of_line_in_inlined.exp -@@ -23,20 +23,14 @@ if {[gdb_compile_ada "${srcfile}" "${binfile}" executable {debug optimize=-O2}] - - clean_restart ${testfile} - --# GCC currently is missing a DW_AT_origin attribute in one of the --# lexical blocks, preventing GDB from creating a symbol for the --# subprogram we want to break on. --setup_xfail "*-*-*" - gdb_test "break foo_o224_021.child1.child2" \ - "Breakpoint \[0-9\]+ at.*: file .*foo_o224_021.adb, line \[0-9\]+." - - gdb_run_cmd --setup_xfail "*-*-*" - gdb_test "" \ - "Breakpoint $decimal, foo_o224_021\\.child1\\.child2 \\(s=\\.\\.\\.\\).*" - - set opt_addr_in "($hex in)?" --setup_xfail "*-*-*" - gdb_test "bt" \ - [multi_line "#0 +$opt_addr_in +foo_o224_021\\.child1\\.child2 \\(s=\\.\\.\\.\\).*" \ - "#1 +$opt_addr_in +foo_o224_021\\.child1 \\(\\).*" \ ---- /dev/null -+++ b/gdb/testsuite/gdb.dwarf2/dw2-lexical-block-bare.exp -@@ -0,0 +1,70 @@ -+# 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 . -+load_lib dwarf.exp -+ -+# This test can only be run on targets which support DWARF-2 and use gas. -+if {![dwarf2_support]} { -+ return 0 -+} -+ -+standard_testfile .S main.c -+ -+# Make some DWARF for the test. -+set asm_file [standard_output_file $srcfile] -+Dwarf::assemble $asm_file { -+ cu {} { -+ compile_unit { -+ {low_pc [gdb_target_symbol main] DW_FORM_addr} -+ {high_pc [gdb_target_symbol main]+0x10000 DW_FORM_addr} -+ } { -+ declare_labels integer_label -+ -+ integer_label: DW_TAG_base_type { -+ {DW_AT_byte_size 4 DW_FORM_sdata} -+ {DW_AT_encoding @DW_ATE_signed} -+ {DW_AT_name integer} -+ } -+ -+ DW_TAG_subprogram { -+ {name main} -+ {DW_AT_external 1 flag} -+ {low_pc [gdb_target_symbol main] DW_FORM_addr} -+ {high_pc [gdb_target_symbol main]+0x10000 DW_FORM_addr} -+ } { -+ DW_TAG_lexical_block { -+ } { -+ DW_TAG_variable { -+ {DW_AT_name testvar} -+ {DW_AT_type :$integer_label} -+ {DW_AT_external 1 flag} -+ {DW_AT_location { -+ DW_OP_addr [gdb_target_symbol main] -+ } SPECIAL_expr} -+ } -+ } -+ } -+ } -+ } -+} -+ -+if { [prepare_for_testing ${testfile}.exp ${testfile} \ -+ [list $srcfile2 $asm_file] {nodebug}] } { -+ return -1 -+} -+ -+runto_main -+ -+# FAILing GDB did print: No symbol "testvar" in current context. -+gdb_test "p testvar" { = -?[0-9]+} --- -2.5.5 - diff --git a/gdb-bz541866-rwatch-before-run.patch b/gdb-bz541866-rwatch-before-run.patch index b657bd5..8b7b3d0 100644 --- a/gdb-bz541866-rwatch-before-run.patch +++ b/gdb-bz541866-rwatch-before-run.patch @@ -1,7 +1,7 @@ -Index: gdb-7.10.90.20160211/gdb/config/i386/linux64.mh +Index: gdb-7.11.50.20160630/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.50.20160630.orig/gdb/config/i386/linux64.mh 2016-07-02 22:59:18.213248752 +0200 ++++ gdb-7.11.50.20160630/gdb/config/i386/linux64.mh 2016-07-02 22:59:25.716313911 +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.50.20160630/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.50.20160630.orig/gdb/config/i386/linux.mh 2016-07-02 22:59:18.213248752 +0200 ++++ gdb-7.11.50.20160630/gdb/config/i386/linux.mh 2016-07-02 22:59:25.716313911 +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.50.20160630/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.50.20160630/gdb/config/i386/nm-linux.h 2016-07-02 22:59:25.716313911 +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.50.20160630/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.50.20160630/gdb/config/i386/nm-linux64.h 2016-07-02 22:59:25.716313911 +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.50.20160630/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.50.20160630.orig/gdb/target.h 2016-07-02 22:59:18.214248761 +0200 ++++ gdb-7.11.50.20160630/gdb/target.h 2016-07-02 22:59:25.717313919 +0200 +@@ -1928,9 +1928,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.50.20160630/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.50.20160630/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp 2016-07-02 22:59:25.717313919 +0200 @@ -0,0 +1,40 @@ +# Copyright 2009, 2010 Free Software Foundation, Inc. + diff --git a/gdb-dts-rhel6-python-compat.patch b/gdb-dts-rhel6-python-compat.patch index 8388c86..cba1a5b 100644 --- a/gdb-dts-rhel6-python-compat.patch +++ b/gdb-dts-rhel6-python-compat.patch @@ -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. + diff --git a/gdb-fortran-stride-intel-1of6.patch b/gdb-fortran-stride-intel-1of6.patch index b1c131d..5b84857 100644 --- a/gdb-fortran-stride-intel-1of6.patch +++ b/gdb-fortran-stride-intel-1of6.patch @@ -1,7 +1,10 @@ -http://sourceware.org/ml/gdb-patches/2016-02/msg00843.html -Subject: [PATCH v2 1/6] fortran: allow multi-dimensional subarrays +RE: [ping] [PATCH v2 0/6] fortran: multi-dimensional subarrays with strides +https://sourceware.org/ml/gdb-patches/2016-07/msg00009.html +From 993834469f1e64e5461e1e1bef917fd388fe428e Mon Sep 17 00:00:00 2001 From: Christoph Weinmann +Date: Thu, 12 Nov 2015 15:45:52 +0100 +Subject: [PATCH 1/6] fortran: allow multi-dimensional subarrays Add an argument count for subrange expressions in Fortran. Based on the counted value calculate a new array with the @@ -36,17 +39,17 @@ new> $3 = ( ( 21, 31, 41) ( 22, 32, 42) ( 23, 33, 43) ) Signed-off-by: Christoph Weinmann --- - gdb/eval.c | 309 ++++++++++++++++++++++++++++++++++++++++++++++------------- + gdb/eval.c | 314 ++++++++++++++++++++++++++++++++++++++++++++++------------- gdb/f-exp.y | 2 + - gdb/valops.c | 157 ++++++++++++++++++++++++------ + gdb/valops.c | 159 ++++++++++++++++++++++++------ gdb/value.h | 2 + - 4 files changed, 375 insertions(+), 95 deletions(-) + 4 files changed, 380 insertions(+), 97 deletions(-) diff --git a/gdb/eval.c b/gdb/eval.c -index 78ad946..c9f325f 100644 +index de1c663..35815a4 100644 --- a/gdb/eval.c +++ b/gdb/eval.c -@@ -399,29 +399,253 @@ init_array_element (struct value *array, struct value *element, +@@ -399,29 +399,254 @@ init_array_element (struct value *array, struct value *element, return index; } @@ -66,41 +69,49 @@ index 78ad946..c9f325f 100644 - int pc = (*pos) + 1; + int i, dim_count = 0; LONGEST low_bound, high_bound; - struct type *range = check_typedef (TYPE_INDEX_TYPE (value_type (array))); -- enum f90_range_type range_type -- = (enum f90_range_type) longest_to_int (exp->elts[pc].longconst); +- struct type *range = check_typedef (TYPE_INDEX_TYPE (value_type (array))); +- enum range_type range_type +- = (enum range_type) longest_to_int (exp->elts[pc].longconst); - - *pos += 3; +- +- if (range_type == LOW_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT) +- low_bound = TYPE_LOW_BOUND (range); +- else +- low_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside)); + struct value *new_array = array; + struct type *array_type = check_typedef (value_type (new_array)); -+ struct type *temp_type; ++ struct type *elt_type; ++ ++ typedef struct subscript_range ++ { ++ enum range_type f90_range_type; ++ LONGEST low, high; ++ } subscript_range; ++ ++ typedef enum subscript_kind ++ { ++ SUBSCRIPT_RANGE, /* e.g. "(lowbound:highbound)" */ ++ SUBSCRIPT_INDEX /* e.g. "(literal)" */ ++ } kind; + + /* Local struct to hold user data for Fortran subarray dimensions. */ + struct subscript_store + { + /* For every dimension, we are either working on a range or an index + expression, so we store this info separately for later. */ -+ enum -+ { -+ SUBSCRIPT_RANGE, /* e.g. "(lowbound:highbound)" */ -+ SUBSCRIPT_INDEX /* e.g. "(literal)" */ -+ } kind; ++ enum subscript_kind kind; + + /* We also store either the lower and upper bound info, or the index + number. Before evaluation of the input values, we do not know if we are + actually working on a range of ranges, or an index in a range. So as a + first step we store all input in a union. The array calculation itself + deals with this later on. */ -+ union ++ union element_range + { -+ struct subscript_range -+ { -+ enum f90_range_type f90_range_type; -+ LONGEST low, high; -+ } -+ range; ++ subscript_range range; + LONGEST number; -+ }; ++ } U; + } *subscript_array; + + /* Check if the number of arguments provided by the user matches @@ -109,7 +120,7 @@ index 78ad946..c9f325f 100644 + if (nargs != calc_f77_array_dims (value_type (new_array))) + error (_("Wrong number of subscripts")); + -+ subscript_array = alloca (sizeof (*subscript_array) * nargs); ++ subscript_array = (struct subscript_store*) alloca (sizeof (*subscript_array) * nargs); + + /* Parse the user input into the SUBSCRIPT_ARRAY to store it. We need + to evaluate it first, as the input is from left-to-right. The @@ -122,22 +133,22 @@ index 78ad946..c9f325f 100644 + { + struct subscript_store *index = &subscript_array[i]; -- if (range_type == LOW_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT) -- low_bound = TYPE_LOW_BOUND (range); +- if (range_type == HIGH_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT) +- high_bound = TYPE_HIGH_BOUND (range); - else -- low_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside)); +- high_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside)); + /* The user input is a range, with or without lower and upper bound. + E.g.: "p arry(2:5)", "p arry( :5)", "p arry( : )", etc. */ -+ if (exp->elts[*pos].opcode == OP_F90_RANGE) ++ if (exp->elts[*pos].opcode == OP_RANGE) + { + int pc = (*pos) + 1; -+ struct subscript_range *range; ++ subscript_range *range; + + index->kind = SUBSCRIPT_RANGE; -+ range = &index->range; ++ range = &index->U.range; + + *pos += 3; -+ range->f90_range_type = longest_to_int (exp->elts[pc].longconst); ++ range->f90_range_type = (enum range_type) longest_to_int (exp->elts[pc].longconst); + + /* If a lower bound was provided by the user, the bit has been + set and we can assign the value from the elt stack. Same for @@ -155,17 +166,13 @@ index 78ad946..c9f325f 100644 + else + { + struct value *val; - -- if (range_type == HIGH_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT) -- high_bound = TYPE_HIGH_BOUND (range); -- else -- high_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside)); ++ + index->kind = SUBSCRIPT_INDEX; + + /* Evaluate each subscript; it must be a legal integer in F77. This + ensures the validity of the provided index. */ + val = evaluate_subexp_with_coercion (exp, pos, noside); -+ index->number = value_as_long (val); ++ index->U.number = value_as_long (val); + } + + } @@ -188,7 +195,7 @@ index 78ad946..c9f325f 100644 + treat any subsequent user entry as a range. We simply + increment DIM_COUNT which tells us how many times we are + calling VALUE_SLICE_1. */ -+ struct subscript_range *range = &index->range; ++ subscript_range *range = &index->U.range; + + /* If no lower bound was provided by the user, we take the + default boundary. Same for the high bound. */ @@ -232,19 +239,19 @@ index 78ad946..c9f325f 100644 + to get the value offset right. */ + if (dim_count == 0) + new_array -+ = value_subscripted_rvalue (new_array, index->number, ++ = value_subscripted_rvalue (new_array, index->U.number, + f77_get_lowerbound (value_type + (new_array))); + else + { + /* Check for valid index input. */ -+ if (index->number < TYPE_LOW_BOUND (index_type) -+ || index->number > TYPE_HIGH_BOUND (index_type)) ++ if (index->U.number < TYPE_LOW_BOUND (index_type) ++ || index->U.number > TYPE_HIGH_BOUND (index_type)) + error (_("error no such vector element")); + + dim_count++; + new_array = value_slice_1 (new_array, -+ longest_to_int (index->number), ++ longest_to_int (index->U.number), + 1, /* length is '1' element */ + dim_count); + } @@ -270,10 +277,10 @@ index 78ad946..c9f325f 100644 + if (dim_count > 1) + { + struct value *v = NULL; ++ ++ elt_type = TYPE_TARGET_TYPE (value_type (new_array)); - return value_slice (array, low_bound, high_bound - low_bound + 1); -+ temp_type = TYPE_TARGET_TYPE (value_type (new_array)); -+ + /* Every SUBSCRIPT_RANGE in the user input signifies an actual range in + the output array. So we traverse the SUBSCRIPT_ARRAY again, looking + for a range entry. When we find one, we use the range info to create @@ -289,26 +296,25 @@ index 78ad946..c9f325f 100644 + + range_type + = create_static_range_type (NULL, -+ temp_type, -+ 1, -+ index->range.high - index->range.low + 1); ++ elt_type, ++ 1, ++ index->U.range.high ++ - index->U.range.low + 1); + + interim_array_type = create_array_type (NULL, -+ temp_type, ++ elt_type, + range_type); + -+ /* For some reason the type code of the contents is missing, so -+ reset it from the original array. */ + TYPE_CODE (interim_array_type) + = TYPE_CODE (value_type (new_array)); + + v = allocate_value (interim_array_type); + -+ temp_type = value_type (v); ++ elt_type = value_type (v); + } + + } -+ value_contents_copy (v, 0, new_array, 0, TYPE_LENGTH (temp_type)); ++ value_contents_copy (v, 0, new_array, 0, TYPE_LENGTH (elt_type)); + return v; + } + @@ -316,24 +322,24 @@ index 78ad946..c9f325f 100644 } -@@ -1810,14 +2034,11 @@ evaluate_subexp_standard (struct type *expect_type, +@@ -1810,14 +2035,11 @@ evaluate_subexp_standard (struct type *expect_type, switch (code) { case TYPE_CODE_ARRAY: -- if (exp->elts[*pos].opcode == OP_F90_RANGE) +- if (exp->elts[*pos].opcode == OP_RANGE) - return value_f90_subarray (arg1, exp, pos, noside); - else - goto multi_f77_subscript; + return value_f90_subarray (arg1, exp, pos, nargs, noside); case TYPE_CODE_STRING: - if (exp->elts[*pos].opcode == OP_F90_RANGE) + if (exp->elts[*pos].opcode == OP_RANGE) - return value_f90_subarray (arg1, exp, pos, noside); + return value_f90_subarray (arg1, exp, pos, 1, noside); else { arg2 = evaluate_subexp_with_coercion (exp, pos, noside); -@@ -2222,49 +2443,6 @@ evaluate_subexp_standard (struct type *expect_type, +@@ -2222,49 +2444,6 @@ evaluate_subexp_standard (struct type *expect_type, } return (arg1); @@ -383,7 +389,7 @@ index 78ad946..c9f325f 100644 case BINOP_LOGICAL_AND: arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); if (noside == EVAL_SKIP) -@@ -3121,6 +3299,9 @@ calc_f77_array_dims (struct type *array_type) +@@ -3122,6 +3301,9 @@ calc_f77_array_dims (struct type *array_type) int ndimen = 1; struct type *tmp_type; @@ -394,10 +400,10 @@ index 78ad946..c9f325f 100644 error (_("Can't get dimensions for a non-array type")); diff --git a/gdb/f-exp.y b/gdb/f-exp.y -index 4faac32..9343abb 100644 +index e3148a3..dc131c1 100644 --- a/gdb/f-exp.y +++ b/gdb/f-exp.y -@@ -308,6 +308,8 @@ arglist : subrange +@@ -253,6 +253,8 @@ arglist : subrange arglist : arglist ',' exp %prec ABOVE_COMMA { arglist_len++; } @@ -407,10 +413,10 @@ index 4faac32..9343abb 100644 /* There are four sorts of subrange types in F90. */ diff --git a/gdb/valops.c b/gdb/valops.c -index 5a244a9..09ea877 100644 +index 71fb1b3..817a4cf 100644 --- a/gdb/valops.c +++ b/gdb/valops.c -@@ -3759,56 +3759,151 @@ value_of_this_silent (const struct language_defn *lang) +@@ -3766,56 +3766,153 @@ value_of_this_silent (const struct language_defn *lang) struct value * value_slice (struct value *array, int lowbound, int length) { @@ -420,7 +426,9 @@ index 5a244a9..09ea877 100644 + return value_slice_1 (array, lowbound, length, 1); +} + -+/* CALL_COUNT is used to determine if we are calling the function once, e.g. ++/* VALUE_SLICE_1 is called for each array dimension to calculate the number ++ of elements as defined by the subscript expression. ++ CALL_COUNT is used to determine if we are calling the function once, e.g. + we are working on the current dimension of ARRAY, or if we are calling + the function repeatedly. In the later case we need to take elements + from the TARGET_TYPE of ARRAY. @@ -515,7 +523,7 @@ index 5a244a9..09ea877 100644 + done with it. */ + slice_range_type = create_static_range_type (NULL, TYPE_TARGET_TYPE (range_type), -+ ary_low_bound, slice_range_size); ++ ary_low_bound, slice_range_size); { - struct type *element_type = TYPE_TARGET_TYPE (array_type); - LONGEST offset @@ -594,7 +602,7 @@ index 5a244a9..09ea877 100644 /* Create a value for a FORTRAN complex number. Currently most of the diff --git a/gdb/value.h b/gdb/value.h -index 2eac5ef..3400460 100644 +index f8ec854..95588af 100644 --- a/gdb/value.h +++ b/gdb/value.h @@ -1056,6 +1056,8 @@ extern struct value *varying_to_slice (struct value *); @@ -607,5 +615,5 @@ index 2eac5ef..3400460 100644 struct type *); -- -2.5.0 +2.5.5 diff --git a/gdb-fortran-stride-intel-2of6.patch b/gdb-fortran-stride-intel-2of6.patch index bf48143..b4100fe 100644 --- a/gdb-fortran-stride-intel-2of6.patch +++ b/gdb-fortran-stride-intel-2of6.patch @@ -1,10 +1,13 @@ -http://sourceware.org/ml/gdb-patches/2016-02/msg00841.html -Subject: [PATCH v2 2/6] fortran: combine subarray and string computation +RE: [ping] [PATCH v2 0/6] fortran: multi-dimensional subarrays with strides +https://sourceware.org/ml/gdb-patches/2016-07/msg00009.html +From 733b3b60be5c8d23fa7e47498d35e4701528f3ae Mon Sep 17 00:00:00 2001 From: Christoph Weinmann +Date: Fri, 13 Nov 2015 09:00:33 +0100 +Subject: [PATCH 2/6] fortran: combine subarray and string computation -Strings only have one dimension, but the element computation is -identical to the subarray computation for ranges and indices. +Strings types are handled like array types with only one dimension. +Therefore the same algorithm to calculate subsets is used. 2013-11-26 Christoph Weinmann @@ -19,27 +22,27 @@ Signed-off-by: Christoph Weinmann 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/gdb/eval.c b/gdb/eval.c -index c9f325f..164d7ab 100644 +index 35815a4..5c20fee 100644 --- a/gdb/eval.c +++ b/gdb/eval.c -@@ -2034,16 +2034,8 @@ evaluate_subexp_standard (struct type *expect_type, +@@ -2035,16 +2035,8 @@ evaluate_subexp_standard (struct type *expect_type, switch (code) { case TYPE_CODE_ARRAY: - return value_f90_subarray (arg1, exp, pos, nargs, noside); - case TYPE_CODE_STRING: -- if (exp->elts[*pos].opcode == OP_F90_RANGE) +- if (exp->elts[*pos].opcode == OP_RANGE) - return value_f90_subarray (arg1, exp, pos, 1, noside); - else - { - arg2 = evaluate_subexp_with_coercion (exp, pos, noside); - return value_subscript (arg1, value_as_long (arg2)); - } -+ return value_f90_subarray (arg1, exp, pos, nargs, noside); ++ return value_f90_subarray (arg1, exp, pos, nargs, noside); case TYPE_CODE_PTR: case TYPE_CODE_FUNC: -- -2.5.0 +2.5.5 diff --git a/gdb-fortran-stride-intel-3of6.patch b/gdb-fortran-stride-intel-3of6.patch index 50a6582..4e4de7d 100644 --- a/gdb-fortran-stride-intel-3of6.patch +++ b/gdb-fortran-stride-intel-3of6.patch @@ -1,7 +1,10 @@ -http://sourceware.org/ml/gdb-patches/2016-02/msg00845.html -Subject: [PATCH v2 3/6] fortran: change subrange enum to bit field +RE: [ping] [PATCH v2 0/6] fortran: multi-dimensional subarrays with strides +https://sourceware.org/ml/gdb-patches/2016-07/msg00009.html +From 058ed9e55db72244fe1c5346a11fa67eff61d318 Mon Sep 17 00:00:00 2001 From: Christoph Weinmann +Date: Mon, 23 Nov 2015 10:31:44 +0100 +Subject: [PATCH 3/6] fortran: change subrange enum to bit field Change Fortran subrange enum for subrange expressions to represent a bitfield for easier manipulation. Consequently @@ -12,31 +15,41 @@ behaviour of GDB is unchanged. * eval.c (value_f90_subarray): Change evaluation of the subarray boundaries. Set boundaries to be either user - provided (bit in f90_range_type was set) or take the - default value if the boundary was not provided by the user. + provided (bit in range_type was set), or take the default + value if the boundary was not provided by the user. + * expprint.c (print_subexp_standard): Alter boundary com- + putations to use updated range_type enum. + * expprint.h (dump_subexp_body_standard): Dito. + * expression.h (range_type): Change the enum to use bit + values for each boundary, if set by the user. * f-exp.y (subrange): Change rules for subrange expressions to write the relevant bit sequence onto the elt stack. - * f-lang.h (f90_range_type): Change the enum to use bit - values for each boundary, if set by the user. - * parse.c (operator_length_standard): In case of - OP_F90_RANGE change the calculation of the number of - arguments on the elt stack, depending on the number of - boundaries provided by the user. + * parse.c (operator_length_standard): In case of OP_RANGE + change the calculation of the number of arguments on the + elt stack, depending on the number of boundaries provided + by the user. + * rust-exp.y (convert_ast_to_expression): Modify calcula- + tion of subscript elements to use altered range_type. + * rust-lang.c (rust_range): Dito. + * rust-lang.c (rust_subscript): Dito. Signed-off-by: Christoph Weinmann --- - gdb/eval.c | 14 ++++++-------- - gdb/f-exp.y | 11 ++++++----- - gdb/f-lang.h | 6 ++---- - gdb/parse.c | 21 ++++++++------------- - 4 files changed, 22 insertions(+), 30 deletions(-) + gdb/eval.c | 14 ++++++-------- + gdb/expprint.c | 20 ++++++++------------ + gdb/expression.h | 15 ++++++--------- + gdb/f-exp.y | 11 ++++++----- + gdb/parse.c | 21 ++++++++------------- + gdb/rust-exp.y | 12 +++--------- + gdb/rust-lang.c | 17 ++++++++--------- + 7 files changed, 45 insertions(+), 65 deletions(-) diff --git a/gdb/eval.c b/gdb/eval.c -index 164d7ab..9b8b051 100644 +index 5c20fee..44e8600 100644 --- a/gdb/eval.c +++ b/gdb/eval.c -@@ -480,12 +480,12 @@ value_f90_subarray (struct value *array, struct expression *exp, +@@ -482,12 +482,12 @@ value_f90_subarray (struct value *array, struct expression *exp, /* If a lower bound was provided by the user, the bit has been set and we can assign the value from the elt stack. Same for upper bound. */ @@ -53,7 +66,7 @@ index 164d7ab..9b8b051 100644 range->high = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside)); } -@@ -526,12 +526,10 @@ value_f90_subarray (struct value *array, struct expression *exp, +@@ -528,12 +528,10 @@ value_f90_subarray (struct value *array, struct expression *exp, /* If no lower bound was provided by the user, we take the default boundary. Same for the high bound. */ @@ -68,70 +81,135 @@ index 164d7ab..9b8b051 100644 range->high = TYPE_HIGH_BOUND (index_type); /* Both user provided low and high bound have to be inside the +diff --git a/gdb/expprint.c b/gdb/expprint.c +index c37ecb0..214d58e 100644 +--- a/gdb/expprint.c ++++ b/gdb/expprint.c +@@ -568,12 +568,10 @@ print_subexp_standard (struct expression *exp, int *pos, + *pos += 2; + + fputs_filtered ("RANGE(", stream); +- if (range_type == HIGH_BOUND_DEFAULT +- || range_type == NONE_BOUND_DEFAULT) ++ if ((range_type & SUBARRAY_LOW_BOUND) == SUBARRAY_LOW_BOUND) + print_subexp (exp, pos, stream, PREC_ABOVE_COMMA); + fputs_filtered ("..", stream); +- if (range_type == LOW_BOUND_DEFAULT +- || range_type == NONE_BOUND_DEFAULT) ++ if ((range_type & SUBARRAY_HIGH_BOUND) == SUBARRAY_HIGH_BOUND) + print_subexp (exp, pos, stream, PREC_ABOVE_COMMA); + fputs_filtered (")", stream); + return; +@@ -1055,16 +1053,16 @@ dump_subexp_body_standard (struct expression *exp, + + switch (range_type) + { +- case BOTH_BOUND_DEFAULT: ++ case SUBARRAY_NONE_BOUND: + fputs_filtered ("Range '..'", stream); + break; +- case LOW_BOUND_DEFAULT: ++ case SUBARRAY_HIGH_BOUND: + fputs_filtered ("Range '..EXP'", stream); + break; +- case HIGH_BOUND_DEFAULT: ++ case SUBARRAY_LOW_BOUND: + fputs_filtered ("Range 'EXP..'", stream); + break; +- case NONE_BOUND_DEFAULT: ++ case (SUBARRAY_LOW_BOUND | SUBARRAY_HIGH_BOUND): + fputs_filtered ("Range 'EXP..EXP'", stream); + break; + default: +@@ -1072,11 +1070,9 @@ dump_subexp_body_standard (struct expression *exp, + break; + } + +- if (range_type == HIGH_BOUND_DEFAULT +- || range_type == NONE_BOUND_DEFAULT) ++ if ((range_type & SUBARRAY_LOW_BOUND) == SUBARRAY_LOW_BOUND) + elt = dump_subexp (exp, stream, elt); +- if (range_type == LOW_BOUND_DEFAULT +- || range_type == NONE_BOUND_DEFAULT) ++ if ((range_type & SUBARRAY_HIGH_BOUND) == SUBARRAY_HIGH_BOUND) + elt = dump_subexp (exp, stream, elt); + } + break; +diff --git a/gdb/expression.h b/gdb/expression.h +index 4952d84..5a6b720 100644 +--- a/gdb/expression.h ++++ b/gdb/expression.h +@@ -152,17 +152,14 @@ extern void dump_raw_expression (struct expression *, + struct ui_file *, char *); + extern void dump_prefix_expression (struct expression *, struct ui_file *); + +-/* In an OP_RANGE expression, either bound could be empty, indicating +- that its value is by default that of the corresponding bound of the +- array or string. So we have four sorts of subrange. This +- enumeration type is to identify this. */ +- ++/* In an OP_RANGE expression, either bound can be provided by the user, or not. ++ This enumeration type is to identify this. */ ++ + enum range_type + { +- BOTH_BOUND_DEFAULT, /* "(:)" */ +- LOW_BOUND_DEFAULT, /* "(:high)" */ +- HIGH_BOUND_DEFAULT, /* "(low:)" */ +- NONE_BOUND_DEFAULT /* "(low:high)" */ ++ SUBARRAY_NONE_BOUND = 0x0, /* "( : )" */ ++ SUBARRAY_LOW_BOUND = 0x1, /* "(low:)" */ ++ SUBARRAY_HIGH_BOUND = 0x2 /* "(:high)" */ + }; + + #endif /* !defined (EXPRESSION_H) */ diff --git a/gdb/f-exp.y b/gdb/f-exp.y -index 9343abb..b1206de 100644 +index dc131c1..e2c54b6 100644 --- a/gdb/f-exp.y +++ b/gdb/f-exp.y -@@ -315,26 +315,27 @@ arglist : arglist ',' exp %prec ABOVE_COMMA +@@ -260,26 +260,27 @@ arglist : arglist ',' exp %prec ABOVE_COMMA /* There are four sorts of subrange types in F90. */ subrange: exp ':' exp %prec ABOVE_COMMA -- { write_exp_elt_opcode (pstate, OP_F90_RANGE); +- { write_exp_elt_opcode (pstate, OP_RANGE); - write_exp_elt_longcst (pstate, NONE_BOUND_DEFAULT); -+ { write_exp_elt_opcode (pstate, OP_F90_RANGE); ++ { write_exp_elt_opcode (pstate, OP_RANGE); + write_exp_elt_longcst (pstate, + SUBARRAY_LOW_BOUND | SUBARRAY_HIGH_BOUND); - write_exp_elt_opcode (pstate, OP_F90_RANGE); } + write_exp_elt_opcode (pstate, OP_RANGE); } ; subrange: exp ':' %prec ABOVE_COMMA - { write_exp_elt_opcode (pstate, OP_F90_RANGE); + { write_exp_elt_opcode (pstate, OP_RANGE); - write_exp_elt_longcst (pstate, HIGH_BOUND_DEFAULT); + write_exp_elt_longcst (pstate, SUBARRAY_LOW_BOUND); - write_exp_elt_opcode (pstate, OP_F90_RANGE); } + write_exp_elt_opcode (pstate, OP_RANGE); } ; subrange: ':' exp %prec ABOVE_COMMA - { write_exp_elt_opcode (pstate, OP_F90_RANGE); + { write_exp_elt_opcode (pstate, OP_RANGE); - write_exp_elt_longcst (pstate, LOW_BOUND_DEFAULT); + write_exp_elt_longcst (pstate, SUBARRAY_HIGH_BOUND); - write_exp_elt_opcode (pstate, OP_F90_RANGE); } + write_exp_elt_opcode (pstate, OP_RANGE); } ; subrange: ':' %prec ABOVE_COMMA - { write_exp_elt_opcode (pstate, OP_F90_RANGE); + { write_exp_elt_opcode (pstate, OP_RANGE); - write_exp_elt_longcst (pstate, BOTH_BOUND_DEFAULT); + write_exp_elt_longcst (pstate, 0); - write_exp_elt_opcode (pstate, OP_F90_RANGE); } + write_exp_elt_opcode (pstate, OP_RANGE); } ; -diff --git a/gdb/f-lang.h b/gdb/f-lang.h -index eeca107..4d56bf7 100644 ---- a/gdb/f-lang.h -+++ b/gdb/f-lang.h -@@ -44,10 +44,8 @@ extern void f_val_print (struct type *, const gdb_byte *, int, CORE_ADDR, - - enum f90_range_type - { -- BOTH_BOUND_DEFAULT, /* "(:)" */ -- LOW_BOUND_DEFAULT, /* "(:high)" */ -- HIGH_BOUND_DEFAULT, /* "(low:)" */ -- NONE_BOUND_DEFAULT /* "(low:high)" */ -+ SUBARRAY_LOW_BOUND = 0x1, /* "(low:)" */ -+ SUBARRAY_HIGH_BOUND = 0x2 /* "(:high)" */ - }; - - /* A common block. */ diff --git a/gdb/parse.c b/gdb/parse.c -index 4191fc6..d500279 100644 +index 2b00708..6d54a77 100644 --- a/gdb/parse.c +++ b/gdb/parse.c @@ -1006,22 +1006,17 @@ operator_length_standard (const struct expression *expr, int endpos, - case OP_F90_RANGE: + case OP_RANGE: oplen = 3; + args = 0; - range_type = (enum f90_range_type) + range_type = (enum range_type) longest_to_int (expr->elts[endpos - 2].longconst); - switch (range_type) @@ -157,6 +235,107 @@ index 4191fc6..d500279 100644 break; +diff --git a/gdb/rust-exp.y b/gdb/rust-exp.y +index c1a863c..760929b5 100644 +--- a/gdb/rust-exp.y ++++ b/gdb/rust-exp.y +@@ -2418,23 +2418,17 @@ convert_ast_to_expression (struct parser_state *state, + + case OP_RANGE: + { +- enum range_type kind = BOTH_BOUND_DEFAULT; ++ enum range_type kind = SUBARRAY_NONE_BOUND; + + if (operation->left.op != NULL) + { + convert_ast_to_expression (state, operation->left.op, top); +- kind = HIGH_BOUND_DEFAULT; ++ kind = SUBARRAY_LOW_BOUND; + } + if (operation->right.op != NULL) + { + convert_ast_to_expression (state, operation->right.op, top); +- if (kind == BOTH_BOUND_DEFAULT) +- kind = LOW_BOUND_DEFAULT; +- else +- { +- gdb_assert (kind == HIGH_BOUND_DEFAULT); +- kind = NONE_BOUND_DEFAULT; +- } ++ kind = (range_type) (kind | SUBARRAY_HIGH_BOUND); + } + write_exp_elt_opcode (state, OP_RANGE); + write_exp_elt_longcst (state, kind); +diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c +index 5df99ce..8d53e31 100644 +--- a/gdb/rust-lang.c ++++ b/gdb/rust-lang.c +@@ -1188,9 +1188,9 @@ rust_range (struct expression *exp, int *pos, enum noside noside) + kind = (enum range_type) longest_to_int (exp->elts[*pos + 1].longconst); + *pos += 3; + +- if (kind == HIGH_BOUND_DEFAULT || kind == NONE_BOUND_DEFAULT) ++ if ((kind & SUBARRAY_LOW_BOUND) == SUBARRAY_LOW_BOUND) + low = evaluate_subexp (NULL_TYPE, exp, pos, noside); +- if (kind == LOW_BOUND_DEFAULT || kind == NONE_BOUND_DEFAULT) ++ if ((kind & SUBARRAY_HIGH_BOUND) == SUBARRAY_HIGH_BOUND) + high = evaluate_subexp (NULL_TYPE, exp, pos, noside); + + if (noside == EVAL_SKIP) +@@ -1279,7 +1279,7 @@ rust_compute_range (struct type *type, struct value *range, + + *low = 0; + *high = 0; +- *kind = BOTH_BOUND_DEFAULT; ++ *kind = SUBARRAY_NONE_BOUND; + + if (TYPE_NFIELDS (type) == 0) + return; +@@ -1287,15 +1287,14 @@ rust_compute_range (struct type *type, struct value *range, + i = 0; + if (strcmp (TYPE_FIELD_NAME (type, 0), "start") == 0) + { +- *kind = HIGH_BOUND_DEFAULT; ++ *kind = SUBARRAY_LOW_BOUND; + *low = value_as_long (value_field (range, 0)); + ++i; + } + if (TYPE_NFIELDS (type) > i + && strcmp (TYPE_FIELD_NAME (type, i), "end") == 0) + { +- *kind = (*kind == BOTH_BOUND_DEFAULT +- ? LOW_BOUND_DEFAULT : NONE_BOUND_DEFAULT); ++ *kind = (range_type) (*kind | SUBARRAY_HIGH_BOUND); + *high = value_as_long (value_field (range, i)); + } + } +@@ -1310,7 +1309,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside, + struct type *rhstype; + LONGEST low, high_bound; + /* Initialized to appease the compiler. */ +- enum range_type kind = BOTH_BOUND_DEFAULT; ++ enum range_type kind = SUBARRAY_NONE_BOUND; + LONGEST high = 0; + int want_slice = 0; + +@@ -1366,7 +1365,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside, + error (_("Cannot subscript non-array type")); + + if (want_slice +- && (kind == BOTH_BOUND_DEFAULT || kind == LOW_BOUND_DEFAULT)) ++ && ((kind & SUBARRAY_LOW_BOUND) != SUBARRAY_LOW_BOUND)) + low = low_bound; + if (low < 0) + error (_("Index less than zero")); +@@ -1384,7 +1383,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside, + CORE_ADDR addr; + struct value *addrval, *tem; + +- if (kind == BOTH_BOUND_DEFAULT || kind == HIGH_BOUND_DEFAULT) ++ if ((kind & SUBARRAY_HIGH_BOUND) != SUBARRAY_HIGH_BOUND) + high = high_bound; + if (high < 0) + error (_("High index less than zero")); -- -2.5.0 +2.5.5 diff --git a/gdb-fortran-stride-intel-4of6.patch b/gdb-fortran-stride-intel-4of6.patch index 6563d71..0e096e3 100644 --- a/gdb-fortran-stride-intel-4of6.patch +++ b/gdb-fortran-stride-intel-4of6.patch @@ -1,7 +1,10 @@ -http://sourceware.org/ml/gdb-patches/2016-02/msg00842.html -Subject: [PATCH v2 4/6] fortran: enable parsing of stride parameter for subranges +RE: [ping] [PATCH v2 0/6] fortran: multi-dimensional subarrays with strides +https://sourceware.org/ml/gdb-patches/2016-07/msg00009.html +From 338e4c860ad205896b4a95c79f54470c79eeb348 Mon Sep 17 00:00:00 2001 From: Christoph Weinmann +Date: Wed, 1 Jun 2016 15:11:24 +0200 +Subject: [PATCH 4/6] fortran: enable parsing of stride parameter for subranges Allow the user to provide a stride parameter for Fortran subarrays. The stride parameter can be any integer except @@ -11,10 +14,10 @@ subarrays. The stride parameter can be any integer except * eval.c (value_f90_subarray): Add expression evaluation for a stride parameter in a Fortran range expression. + * expression.h (range_type): Add field to enum to show when + a stride value was provided by the user. * f-exp.y: Add yacc rules for writing info on the elt stack when the user provided a stride argument. - * f-lang.h (F90_RANGE): Add field to enum to show when a - stride was provided by the user. * parse.c (operator_length_standard): Check if a stride value was provided, and increment argument counter accordingly. @@ -22,26 +25,27 @@ subarrays. The stride parameter can be any integer except Signed-off-by: Christoph Weinmann --- - gdb/eval.c | 10 +++++++++- - gdb/f-exp.y | 33 +++++++++++++++++++++++++++++++-- - gdb/f-lang.h | 5 +++-- - gdb/parse.c | 3 +++ - 4 files changed, 46 insertions(+), 5 deletions(-) + gdb/eval.c | 11 ++++++++++- + gdb/expression.h | 7 +++++-- + gdb/f-exp.y | 31 ++++++++++++++++++++++++++++++- + gdb/parse.c | 3 +++ + gdb/valops.c | 4 ++-- + 5 files changed, 50 insertions(+), 6 deletions(-) diff --git a/gdb/eval.c b/gdb/eval.c -index 9b8b051..308ada3 100644 +index 44e8600..b5aaf1c 100644 --- a/gdb/eval.c +++ b/gdb/eval.c -@@ -438,7 +438,7 @@ value_f90_subarray (struct value *array, struct expression *exp, - struct subscript_range - { - enum f90_range_type f90_range_type; -- LONGEST low, high; -+ LONGEST low, high, stride; - } - range; - LONGEST number; -@@ -488,6 +488,14 @@ value_f90_subarray (struct value *array, struct expression *exp, +@@ -419,7 +419,7 @@ value_f90_subarray (struct value *array, struct expression *exp, + typedef struct subscript_range + { + enum range_type f90_range_type; +- LONGEST low, high; ++ LONGEST low, high, stride; + } subscript_range; + + typedef enum subscript_kind +@@ -490,6 +490,15 @@ value_f90_subarray (struct value *array, struct expression *exp, == SUBARRAY_HIGH_BOUND) range->high = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside)); @@ -49,82 +53,81 @@ index 9b8b051..308ada3 100644 + /* Assign the user's stride value if provided. */ + if ((range->f90_range_type & SUBARRAY_STRIDE) == SUBARRAY_STRIDE) + range->stride = value_as_long (evaluate_subexp (NULL_TYPE, exp, -+ pos, noside)); ++ pos, noside)); ++ + /* Assign the default stride value '1'. */ + else + range->stride = 1; } /* User input is an index. E.g.: "p arry(5)". */ else +diff --git a/gdb/expression.h b/gdb/expression.h +index 5a6b720..34ca54b 100644 +--- a/gdb/expression.h ++++ b/gdb/expression.h +@@ -153,13 +153,16 @@ extern void dump_raw_expression (struct expression *, + extern void dump_prefix_expression (struct expression *, struct ui_file *); + + /* In an OP_RANGE expression, either bound can be provided by the user, or not. +- This enumeration type is to identify this. */ ++ In addition to this, the user can also specify a stride value to indicated ++ only certain elements of the array. This enumeration type is to identify ++ this. */ + + enum range_type + { + SUBARRAY_NONE_BOUND = 0x0, /* "( : )" */ + SUBARRAY_LOW_BOUND = 0x1, /* "(low:)" */ +- SUBARRAY_HIGH_BOUND = 0x2 /* "(:high)" */ ++ SUBARRAY_HIGH_BOUND = 0x2, /* "(:high)" */ ++ SUBARRAY_STRIDE = 0x4 /* "(::stride)" */ + }; + + #endif /* !defined (EXPRESSION_H) */ diff --git a/gdb/f-exp.y b/gdb/f-exp.y -index b1206de..5151fee 100644 +index e2c54b6..71f1823 100644 --- a/gdb/f-exp.y +++ b/gdb/f-exp.y -@@ -316,8 +316,8 @@ arglist : arglist ',' exp %prec ABOVE_COMMA - - subrange: exp ':' exp %prec ABOVE_COMMA - { write_exp_elt_opcode (pstate, OP_F90_RANGE); -- write_exp_elt_longcst (pstate, -- SUBARRAY_LOW_BOUND | SUBARRAY_HIGH_BOUND); -+ write_exp_elt_longcst (pstate, SUBARRAY_LOW_BOUND -+ | SUBARRAY_HIGH_BOUND); - write_exp_elt_opcode (pstate, OP_F90_RANGE); } - ; - -@@ -339,6 +339,35 @@ subrange: ':' %prec ABOVE_COMMA - write_exp_elt_opcode (pstate, OP_F90_RANGE); } - ; +@@ -280,7 +280,36 @@ subrange: ':' exp %prec ABOVE_COMMA + subrange: ':' %prec ABOVE_COMMA + { write_exp_elt_opcode (pstate, OP_RANGE); +- write_exp_elt_longcst (pstate, 0); ++ write_exp_elt_longcst (pstate, SUBARRAY_NONE_BOUND); ++ write_exp_elt_opcode (pstate, OP_RANGE); } ++ ; ++ +/* Each subrange type can have a stride argument. */ +subrange: exp ':' exp ':' exp %prec ABOVE_COMMA -+ { write_exp_elt_opcode (pstate, OP_F90_RANGE); ++ { write_exp_elt_opcode (pstate, OP_RANGE); + write_exp_elt_longcst (pstate, SUBARRAY_LOW_BOUND + | SUBARRAY_HIGH_BOUND + | SUBARRAY_STRIDE); -+ write_exp_elt_opcode (pstate, OP_F90_RANGE); } ++ write_exp_elt_opcode (pstate, OP_RANGE); } + ; + +subrange: exp ':' ':' exp %prec ABOVE_COMMA -+ { write_exp_elt_opcode (pstate, OP_F90_RANGE); ++ { write_exp_elt_opcode (pstate, OP_RANGE); + write_exp_elt_longcst (pstate, SUBARRAY_LOW_BOUND + | SUBARRAY_STRIDE); -+ write_exp_elt_opcode (pstate, OP_F90_RANGE); } ++ write_exp_elt_opcode (pstate, OP_RANGE); } + ; + +subrange: ':' exp ':' exp %prec ABOVE_COMMA -+ { write_exp_elt_opcode (pstate, OP_F90_RANGE); ++ { write_exp_elt_opcode (pstate, OP_RANGE); + write_exp_elt_longcst (pstate, SUBARRAY_HIGH_BOUND + | SUBARRAY_STRIDE); -+ write_exp_elt_opcode (pstate, OP_F90_RANGE); } ++ write_exp_elt_opcode (pstate, OP_RANGE); } + ; + +subrange: ':' ':' exp %prec ABOVE_COMMA -+ { write_exp_elt_opcode (pstate, OP_F90_RANGE); ++ { write_exp_elt_opcode (pstate, OP_RANGE); + write_exp_elt_longcst (pstate, SUBARRAY_STRIDE); -+ write_exp_elt_opcode (pstate, OP_F90_RANGE); } -+ ; -+ - complexnum: exp ',' exp - { } - ; -diff --git a/gdb/f-lang.h b/gdb/f-lang.h -index 4d56bf7..0ad57af 100644 ---- a/gdb/f-lang.h -+++ b/gdb/f-lang.h -@@ -44,8 +44,9 @@ extern void f_val_print (struct type *, const gdb_byte *, int, CORE_ADDR, - - enum f90_range_type - { -- SUBARRAY_LOW_BOUND = 0x1, /* "(low:)" */ -- SUBARRAY_HIGH_BOUND = 0x2 /* "(:high)" */ -+ SUBARRAY_LOW_BOUND = 0x1, /* "(low:)" or "(low::)" */ -+ SUBARRAY_HIGH_BOUND = 0x2, /* "(:high)" or "(:high:)" */ -+ SUBARRAY_STRIDE = 0x4 /* "(::stride)" */ - }; + write_exp_elt_opcode (pstate, OP_RANGE); } + ; - /* A common block. */ diff --git a/gdb/parse.c b/gdb/parse.c -index d500279..07248c3 100644 +index 6d54a77..992af87 100644 --- a/gdb/parse.c +++ b/gdb/parse.c @@ -1018,6 +1018,9 @@ operator_length_standard (const struct expression *expr, int endpos, @@ -137,6 +140,28 @@ index d500279..07248c3 100644 break; default: +diff --git a/gdb/valops.c b/gdb/valops.c +index 817a4cf..fbc7dcb 100644 +--- a/gdb/valops.c ++++ b/gdb/valops.c +@@ -3834,7 +3834,7 @@ value_slice_1 (struct value *array, int lowbound, int length, int call_count) + if (call_count == 1) + { + range_type = TYPE_INDEX_TYPE (array_type); +- slice_range_size = elem_count; ++ slice_range_size = ary_low_bound + elem_count - 1; + + /* Check if the array bounds are valid. */ + if (get_discrete_bounds (range_type, &ary_low_bound, &ary_high_bound) < 0) +@@ -3846,7 +3846,7 @@ value_slice_1 (struct value *array, int lowbound, int length, int call_count) + else + { + range_type = TYPE_INDEX_TYPE (TYPE_TARGET_TYPE (array_type)); +- slice_range_size = (ary_low_bound + row_count - 1) * (elem_count); ++ slice_range_size = ary_low_bound + (row_count * elem_count) - 1; + ary_low_bound = TYPE_LOW_BOUND (range_type); + } + -- -2.5.0 +2.5.5 diff --git a/gdb-fortran-stride-intel-5of6.patch b/gdb-fortran-stride-intel-5of6.patch index 9a7dba3..2b9a662 100644 --- a/gdb-fortran-stride-intel-5of6.patch +++ b/gdb-fortran-stride-intel-5of6.patch @@ -1,9 +1,12 @@ -http://sourceware.org/ml/gdb-patches/2016-02/msg00844.html -Subject: [PATCH v2 5/6] fortran: calculate subarray with stride values. +RE: [ping] [PATCH v2 0/6] fortran: multi-dimensional subarrays with strides +https://sourceware.org/ml/gdb-patches/2016-07/msg00009.html +From 1189098c3cacc2ee69021de1a83ad3328821d755 Mon Sep 17 00:00:00 2001 From: Christoph Weinmann +Date: Wed, 1 Jun 2016 15:04:01 +0200 +Subject: [PATCH 5/6] fortran: calculate elements of a subarray using a + provided stride value -Calculate elements of a subarray using a provided stride value The stride value can be a positive or negative integer, but may not be zero. If no stride is provided, use the default value 1 to print all elements inside the range. @@ -32,44 +35,25 @@ $3 = (1, 3, 5, 7, 9) Signed-off-by: Christoph Weinmann --- - gdb/eval.c | 111 ++++++++++++++++++++++++++++++++++++++++++++++------------- - gdb/valops.c | 87 +++++++++++++++++++++++++++++++++------------- + gdb/eval.c | 102 ++++++++++++++++++++++++++++++++++++++++++++++++----------- + gdb/valops.c | 83 +++++++++++++++++++++++++++++++++++------------- gdb/value.h | 2 +- - 3 files changed, 152 insertions(+), 48 deletions(-) + 3 files changed, 145 insertions(+), 42 deletions(-) diff --git a/gdb/eval.c b/gdb/eval.c -index 308ada3..d01b579 100644 +index b5aaf1c..1f27b6f 100644 --- a/gdb/eval.c +++ b/gdb/eval.c -@@ -437,8 +437,8 @@ value_f90_subarray (struct value *array, struct expression *exp, - { - struct subscript_range - { -- enum f90_range_type f90_range_type; -- LONGEST low, high, stride; -+ enum f90_range_type f90_range_type; -+ LONGEST low, high, stride; - } - range; - LONGEST number; -@@ -475,7 +475,7 @@ value_f90_subarray (struct value *array, struct expression *exp, - range = &index->range; +@@ -477,7 +477,7 @@ value_f90_subarray (struct value *array, struct expression *exp, + range = &index->U.range; *pos += 3; -- range->f90_range_type = longest_to_int (exp->elts[pc].longconst); -+ range->f90_range_type = exp->elts[pc].longconst; +- range->f90_range_type = (enum range_type) longest_to_int (exp->elts[pc].longconst); ++ range->f90_range_type = (enum range_type) exp->elts[pc].longconst; /* If a lower bound was provided by the user, the bit has been set and we can assign the value from the elt stack. Same for -@@ -484,6 +484,7 @@ value_f90_subarray (struct value *array, struct expression *exp, - == SUBARRAY_LOW_BOUND) - range->low = value_as_long (evaluate_subexp (NULL_TYPE, exp, - pos, noside)); -+ - if ((range->f90_range_type & SUBARRAY_HIGH_BOUND) - == SUBARRAY_HIGH_BOUND) - range->high = value_as_long (evaluate_subexp (NULL_TYPE, exp, -@@ -496,6 +497,10 @@ value_f90_subarray (struct value *array, struct expression *exp, +@@ -499,6 +499,10 @@ value_f90_subarray (struct value *array, struct expression *exp, /* Assign the default stride value '1'. */ else range->stride = 1; @@ -80,7 +64,7 @@ index 308ada3..d01b579 100644 } /* User input is an index. E.g.: "p arry(5)". */ else -@@ -512,10 +517,8 @@ value_f90_subarray (struct value *array, struct expression *exp, +@@ -515,10 +519,8 @@ value_f90_subarray (struct value *array, struct expression *exp, } @@ -93,7 +77,7 @@ index 308ada3..d01b579 100644 for (i = nargs - 1; i >= 0; i--) { struct subscript_store *index = &subscript_array[i]; -@@ -548,6 +551,48 @@ value_f90_subarray (struct value *array, struct expression *exp, +@@ -551,6 +553,48 @@ value_f90_subarray (struct value *array, struct expression *exp, || range->high > TYPE_HIGH_BOUND (index_type)) error (_("provided bound(s) outside array bound(s)")); @@ -113,7 +97,7 @@ index 308ada3..d01b579 100644 + + } + -+ array_type = TYPE_TARGET_TYPE (array_type); ++ array_type = TYPE_TARGET_TYPE (array_type); + } + + /* Reset ARRAY_TYPE before slicing.*/ @@ -137,12 +121,12 @@ index 308ada3..d01b579 100644 + treat any subsequent user entry as a range. We simply + increment DIM_COUNT which tells us how many times we are + calling VALUE_SLICE_1. */ -+ struct subscript_range *range = &index->range; ++ subscript_range *range = &index->U.range; + /* DIM_COUNT counts every user argument that is treated as a range. This is necessary for expressions like 'print array(7, 8:9). Here the first argument is a literal, but must be treated as a -@@ -555,10 +600,9 @@ value_f90_subarray (struct value *array, struct expression *exp, +@@ -558,10 +602,9 @@ value_f90_subarray (struct value *array, struct expression *exp, dim_count++; new_array @@ -156,13 +140,7 @@ index 308ada3..d01b579 100644 } break; -@@ -572,27 +616,38 @@ value_f90_subarray (struct value *array, struct expression *exp, - to get the value offset right. */ - if (dim_count == 0) - new_array -- = value_subscripted_rvalue (new_array, index->number, -+ = value_subscripted_rvalue (new_array, index->number, - f77_get_lowerbound (value_type +@@ -580,21 +623,32 @@ value_f90_subarray (struct value *array, struct expression *exp, (new_array))); else { @@ -174,21 +152,21 @@ index 308ada3..d01b579 100644 + cannot do the range checks for us. So we have to make sure + ourselves that the user provided index is inside the + array bounds. Throw an error if not. */ - if (index->number < TYPE_LOW_BOUND (index_type) -- || index->number > TYPE_HIGH_BOUND (index_type)) + if (index->U.number < TYPE_LOW_BOUND (index_type) +- || index->U.number > TYPE_HIGH_BOUND (index_type)) - error (_("error no such vector element")); -+ && index->number < TYPE_HIGH_BOUND (index_type)) ++ && index->U.number > TYPE_HIGH_BOUND (index_type)) + error (_("provided bound(s) outside array bound(s)")); + -+ if (index->number > TYPE_LOW_BOUND (index_type) -+ && index->number > TYPE_HIGH_BOUND (index_type)) ++ if (index->U.number > TYPE_LOW_BOUND (index_type) ++ && index->U.number > TYPE_HIGH_BOUND (index_type)) + error (_("provided bound(s) outside array bound(s)")); - dim_count++; new_array = value_slice_1 (new_array, -- longest_to_int (index->number), +- longest_to_int (index->U.number), - 1, /* length is '1' element */ -+ index->number, ++ index->U.number, + 1, /* COUNT is '1' element */ + 1, /* STRIDE set to '1' */ dim_count); @@ -197,13 +175,11 @@ index 308ada3..d01b579 100644 } break; } -- } + array_type = TYPE_TARGET_TYPE (array_type); -+ } + } /* With DIM_COUNT > 1 we currently have a one dimensional array, but expect - an array of arrays, depending on how many ranges have been provided by -@@ -617,7 +672,9 @@ value_f90_subarray (struct value *array, struct expression *exp, +@@ -620,7 +674,9 @@ value_f90_subarray (struct value *array, struct expression *exp, the output array. So we traverse the SUBSCRIPT_ARRAY again, looking for a range entry. When we find one, we use the range info to create an additional range_type to set the correct bounds and dimensions for @@ -214,35 +190,35 @@ index 308ada3..d01b579 100644 for (i = 0; i < nargs; i++) { struct subscript_store *index = &subscript_array[i]; -@@ -625,12 +682,20 @@ value_f90_subarray (struct value *array, struct expression *exp, - if (index->kind == SUBSCRIPT_RANGE) +@@ -629,12 +685,20 @@ value_f90_subarray (struct value *array, struct expression *exp, { struct type *range_type, *interim_array_type; + + int new_length; + + /* The length of a sub-dimension with all elements between the + bounds plus the start element itself. It may be modified by + a user provided stride value. */ -+ new_length = index->range.high - index->range.low; ++ new_length = index->U.range.high - index->U.range.low; ++ ++ new_length /= index->U.range.stride; + -+ new_length /= index->range.stride; - range_type = create_static_range_type (NULL, -- temp_type, -- 1, -- index->range.high - index->range.low + 1); -+ temp_type, -+ index->range.low, -+ index->range.low + new_length); + elt_type, +- 1, +- index->U.range.high +- - index->U.range.low + 1); ++ index->U.range.low, ++ index->U.range.low + new_length); interim_array_type = create_array_type (NULL, - temp_type, + elt_type, diff --git a/gdb/valops.c b/gdb/valops.c -index 09ea877..83c8462 100644 +index fbc7dcb..ded8efc 100644 --- a/gdb/valops.c +++ b/gdb/valops.c -@@ -3759,10 +3759,13 @@ value_of_this_silent (const struct language_defn *lang) +@@ -3766,10 +3766,13 @@ value_of_this_silent (const struct language_defn *lang) struct value * value_slice (struct value *array, int lowbound, int length) { @@ -259,8 +235,8 @@ index 09ea877..83c8462 100644 + return value_slice_1 (array, lowbound, length, 1, 1); } - /* CALL_COUNT is used to determine if we are calling the function once, e.g. -@@ -3776,7 +3779,8 @@ value_slice (struct value *array, int lowbound, int length) + /* VALUE_SLICE_1 is called for each array dimension to calculate the number +@@ -3785,7 +3788,8 @@ value_slice (struct value *array, int lowbound, int length) ranges in the calling function. */ struct value * @@ -270,7 +246,7 @@ index 09ea877..83c8462 100644 { struct type *slice_range_type, *slice_type, *range_type; struct type *array_type = check_typedef (value_type (array)); -@@ -3799,14 +3803,24 @@ value_slice_1 (struct value *array, int lowbound, int length, int call_count) +@@ -3808,14 +3812,24 @@ value_slice_1 (struct value *array, int lowbound, int length, int call_count) attributes of the underlying type. */ if (call_count > 1) { @@ -297,25 +273,7 @@ index 09ea877..83c8462 100644 elt_stride = TYPE_LENGTH (TYPE_INDEX_TYPE (array_type)); elt_offs *= elt_size; -@@ -3825,7 +3839,7 @@ value_slice_1 (struct value *array, int lowbound, int length, int call_count) - if (call_count == 1) - { - range_type = TYPE_INDEX_TYPE (array_type); -- slice_range_size = elem_count; -+ slice_range_size = ary_low_bound + elem_count - 1; - - /* Check if the array bounds are valid. */ - if (get_discrete_bounds (range_type, &ary_low_bound, &ary_high_bound) < 0) -@@ -3837,7 +3851,7 @@ value_slice_1 (struct value *array, int lowbound, int length, int call_count) - else - { - range_type = TYPE_INDEX_TYPE (TYPE_TARGET_TYPE (array_type)); -- slice_range_size = (ary_low_bound + row_count - 1) * (elem_count); -+ slice_range_size = ary_low_bound + (row_count * elem_count) - 1; - ary_low_bound = TYPE_LOW_BOUND (range_type); - } - -@@ -3849,8 +3863,9 @@ value_slice_1 (struct value *array, int lowbound, int length, int call_count) +@@ -3858,8 +3872,9 @@ value_slice_1 (struct value *array, int lowbound, int length, int call_count) { struct type *element_type; @@ -327,7 +285,7 @@ index 09ea877..83c8462 100644 { element_type = TYPE_TARGET_TYPE (array_type); -@@ -3871,29 +3886,53 @@ value_slice_1 (struct value *array, int lowbound, int length, int call_count) +@@ -3880,29 +3895,53 @@ value_slice_1 (struct value *array, int lowbound, int length, int call_count) } } @@ -359,8 +317,8 @@ index 09ea877..83c8462 100644 slice_type = create_array_type (NULL, element_type, slice_range_type); - TYPE_CODE (slice_type) = TYPE_CODE (TYPE_TARGET_TYPE (array_type)); -+ /* If we have a one dimensional array, we copy its TYPE_CODE. For a -+ multi dimensional array we copy the embedded type's TYPE_CODE. */ ++ /* If we have a one dimensional array, we copy its TYPE_CODE. For a ++ multi dimensional array we copy the embedded type's TYPE_CODE. */ + if (call_count == 1) + TYPE_CODE (slice_type) = TYPE_CODE (array_type); + else @@ -395,7 +353,7 @@ index 09ea877..83c8462 100644 } diff --git a/gdb/value.h b/gdb/value.h -index 3400460..c18ef2e 100644 +index 95588af..e417639 100644 --- a/gdb/value.h +++ b/gdb/value.h @@ -1056,7 +1056,7 @@ extern struct value *varying_to_slice (struct value *); @@ -408,5 +366,5 @@ index 3400460..c18ef2e 100644 extern struct value *value_literal_complex (struct value *, struct value *, struct type *); -- -2.5.0 +2.5.5 diff --git a/gdb-fortran-stride-intel-6of6-nokfail.patch b/gdb-fortran-stride-intel-6of6-nokfail.patch deleted file mode 100644 index 5b61de1..0000000 --- a/gdb-fortran-stride-intel-6of6-nokfail.patch +++ /dev/null @@ -1,36 +0,0 @@ ---- gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/subrange.exp-orig 2016-01-08 22:45:44.956842553 +0100 -+++ gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/subrange.exp 2016-01-08 23:26:05.078554629 +0100 -@@ -39,27 +39,16 @@ foreach var {a alloc ptr} { - set old_prefix $pf_prefix - lappend pf_prefix "$var:" - -- setup_kfail "*-*-*" "vlaregression/9999" - gdb_test "p $var (2, 2:3)" { = \(22, 32\)} -- setup_kfail "*-*-*" "vlaregression/9999" - gdb_test "p $var (2:3, 3)" { = \(32, 33\)} -- setup_kfail "*-*-*" "vlaregression/9999" - gdb_test "p $var (1, 2:)" { = \(21, 31\)} -- setup_kfail "*-*-*" "vlaregression/9999" - gdb_test "p $var (2, :2)" { = \(12, 22\)} -- setup_kfail "*-*-*" "vlaregression/9999" - gdb_test "p $var (3, 2:2)" { = \(23\)} -- setup_kfail "*-*-*" "vlaregression/9999" - gdb_test "ptype $var (3, 2:2)" " = $int4 \\(2:2\\)" -- setup_kfail "*-*-*" "vlaregression/9999" - gdb_test "p $var (4, :)" { = \(14, 24, 34\)} -- setup_kfail "*-*-*" "vlaregression/9999" - gdb_test "p $var (:, :)" { = \(\( *11, 12, 13, 14\) \( *21, 22, 23, 24\) \( *31, 32, 33, 34\) *\)} -- setup_kfail "*-*-*" "vlaregression/9999" - gdb_test "ptype $var (:, :)" " = $int4 \\(4,3\\)" -- setup_kfail "*-*-*" "vlaregression/9999" - gdb_test "p $var (:)" "Wrong number of subscripts" -- setup_kfail "*-*-*" "vlaregression/9999" - gdb_test "p $var (:, :, :)" "Wrong number of subscripts" - - set pf_prefix $old_prefix -@@ -68,5 +57,4 @@ foreach var {a alloc ptr} { - gdb_test_no_output {set $a=a} - delete_breakpoints - gdb_unload --setup_kfail "*-*-*" "vlaregression/9999" - gdb_test {p $a (3, 2:2)} { = \(23\)} diff --git a/gdb-fortran-stride-intel-6of6.patch b/gdb-fortran-stride-intel-6of6.patch index 47faef2..777bbc9 100644 --- a/gdb-fortran-stride-intel-6of6.patch +++ b/gdb-fortran-stride-intel-6of6.patch @@ -1,7 +1,10 @@ -http://sourceware.org/ml/gdb-patches/2016-02/msg00847.html -Subject: [PATCH v2 6/6] fortran: test cases for subarray strides and slices +RE: [ping] [PATCH v2 0/6] fortran: multi-dimensional subarrays with strides +https://sourceware.org/ml/gdb-patches/2016-07/msg00009.html +From 982d582ee738cbcf252ba8eab59a9514edda75b9 Mon Sep 17 00:00:00 2001 From: Christoph Weinmann +Date: Wed, 4 Dec 2013 11:47:15 +0000 +Subject: [PATCH 6/6] fortran: test cases for subarray strides and slices Add test cases for subarray creation with range, literal and stride value permutations for one, two, and three dimensional @@ -511,5 +514,5 @@ index 0000000..f22fcbe + call sub +end -- -2.5.0 +2.5.5 diff --git a/gdb-python-gil.patch b/gdb-python-gil.patch index 1e3b0b9..5ce13a8 100644 --- a/gdb-python-gil.patch +++ b/gdb-python-gil.patch @@ -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 (¤t_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,10 +112,10 @@ 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 +Index: gdb-7.11.50.20160630/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 ++++ gdb-7.11.50.20160630/gdb/testsuite/gdb.python/py-gil-mthread.c 2016-07-03 16:30:42.813387876 +0200 @@ -0,0 +1,12 @@ +#include + @@ -128,10 +129,10 @@ 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 +Index: gdb-7.11.50.20160630/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 ++++ gdb-7.11.50.20160630/gdb/testsuite/gdb.python/py-gil-mthread.exp 2016-07-03 16:30:42.813387876 +0200 @@ -0,0 +1,69 @@ +# Copyright (C) 2014 Free Software Foundation, Inc. + @@ -202,10 +203,10 @@ 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 +Index: gdb-7.11.50.20160630/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 ++++ gdb-7.11.50.20160630/gdb/testsuite/gdb.python/py-gil-mthread.py 2016-07-03 16:30:42.814387884 +0200 @@ -0,0 +1,22 @@ +import thread +import time diff --git a/gdb-readline62-ask-more-rh.patch b/gdb-readline62-ask-more-rh.patch index ae68946..463d9d3 100644 --- a/gdb-readline62-ask-more-rh.patch +++ b/gdb-readline62-ask-more-rh.patch @@ -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 diff --git a/gdb-rhbz795424-bitpos-20of25.patch b/gdb-rhbz795424-bitpos-20of25.patch index 6037e0e..b37c5b9 100644 --- a/gdb-rhbz795424-bitpos-20of25.patch +++ b/gdb-rhbz795424-bitpos-20of25.patch @@ -463,11 +463,11 @@ Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=bitpos-main.patch -Index: gdb-7.10.50.20151027/gdb/ada-lang.c +Index: gdb-7.11.50.20160716/gdb/ada-lang.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/ada-lang.c 2015-11-02 21:23:11.175351410 +0100 -+++ gdb-7.10.50.20151027/gdb/ada-lang.c 2015-11-02 21:23:13.197364714 +0100 -@@ -75,7 +75,7 @@ static struct type *desc_bounds_type (st +--- gdb-7.11.50.20160716.orig/gdb/ada-lang.c 2016-07-16 14:33:42.053510117 +0200 ++++ gdb-7.11.50.20160716/gdb/ada-lang.c 2016-07-16 14:33:44.527530028 +0200 +@@ -75,7 +75,7 @@ static struct value *desc_bounds (struct value *); @@ -476,7 +476,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c static int fat_pntr_bounds_bitsize (struct type *); -@@ -83,13 +83,13 @@ static struct type *desc_data_target_typ +@@ -83,13 +83,13 @@ static struct value *desc_data (struct value *); @@ -492,7 +492,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c static int desc_bound_bitsize (struct type *, int, int); -@@ -172,7 +172,7 @@ static struct type *static_unwrap_type ( +@@ -172,7 +172,7 @@ static struct value *unwrap_value (struct value *); @@ -501,7 +501,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c static struct type *decode_constrained_packed_array_type (struct type *); -@@ -187,7 +187,8 @@ static int ada_is_unconstrained_packed_a +@@ -187,7 +187,8 @@ static struct value *value_subscript_packed (struct value *, int, struct value **); @@ -511,7 +511,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c static struct value *coerce_unspec_val_to_type (struct value *, struct type *); -@@ -215,14 +216,14 @@ static struct value *value_val_atr (stru +@@ -215,14 +216,14 @@ static struct symbol *standard_lookup (const char *, const struct block *, domain_enum); @@ -530,7 +530,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c static struct value *ada_to_fixed_value_create (struct type *, CORE_ADDR, struct value *); -@@ -236,7 +237,7 @@ static int ada_is_direct_array_type (str +@@ -236,7 +237,7 @@ static void ada_language_arch_info (struct gdbarch *, struct language_arch_info *); @@ -539,7 +539,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c struct type *); static struct value *assign_aggregate (struct value *, struct value *, -@@ -700,7 +701,7 @@ coerce_unspec_val_to_type (struct value +@@ -700,7 +701,7 @@ } static const gdb_byte * @@ -548,7 +548,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c { if (valaddr == NULL) return NULL; -@@ -709,7 +710,7 @@ cond_offset_host (const gdb_byte *valadd +@@ -709,7 +710,7 @@ } static CORE_ADDR @@ -557,7 +557,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c { if (address == 0) return 0; -@@ -1717,7 +1718,7 @@ desc_bounds (struct value *arr) +@@ -1756,7 +1757,7 @@ /* If TYPE is the type of an array-descriptor (fat pointer), the bit position of the field containing the address of the bounds data. */ @@ -566,7 +566,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c fat_pntr_bounds_bitpos (struct type *type) { return TYPE_FIELD_BITPOS (desc_base_type (type), 1); -@@ -1783,7 +1784,7 @@ desc_data (struct value *arr) +@@ -1822,7 +1823,7 @@ /* If TYPE is the type of an array-descriptor (fat pointer), the bit position of the field containing the address of the data. */ @@ -575,7 +575,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c fat_pntr_data_bitpos (struct type *type) { return TYPE_FIELD_BITPOS (desc_base_type (type), 0); -@@ -1818,7 +1819,7 @@ desc_one_bound (struct value *bounds, in +@@ -1857,7 +1858,7 @@ of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper bound, if WHICH is 1. The first bound is I=1. */ @@ -584,7 +584,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c desc_bound_bitpos (struct type *type, int i, int which) { return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2); -@@ -2008,7 +2009,7 @@ ada_type_of_array (struct value *arr, in +@@ -2047,7 +2048,7 @@ zero, and does not need to be recomputed. */ if (lo < hi) { @@ -593,7 +593,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0); TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8; -@@ -2168,7 +2169,7 @@ decode_packed_array_bitsize (struct type +@@ -2207,7 +2208,7 @@ the length is arbitrary. */ static struct type * @@ -602,7 +602,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c { struct type *new_elt_type; struct type *new_type; -@@ -2222,7 +2223,7 @@ decode_constrained_packed_array_type (st +@@ -2261,7 +2262,7 @@ char *name; const char *tail; struct type *shadow_type; @@ -611,7 +611,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c if (!raw_name) raw_name = ada_type_name (desc_base_type (type)); -@@ -2293,7 +2294,8 @@ decode_constrained_packed_array (struct +@@ -2332,7 +2333,8 @@ array with no wrapper. In order to interpret the value through the (left-justified) packed array type we just built, we must first left-justify it. */ @@ -621,7 +621,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c ULONGEST mod; mod = ada_modulus (value_type (arr)) - 1; -@@ -2521,7 +2523,7 @@ ada_unpack_from_contents (const gdb_byte +@@ -2560,7 +2562,7 @@ struct value * ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr, @@ -630,7 +630,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c struct type *type) { struct value *v; -@@ -2594,7 +2596,7 @@ ada_value_primitive_packed_val (struct v +@@ -2633,7 +2635,7 @@ if (obj != NULL) { @@ -639,7 +639,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c set_value_component_location (v, obj); set_value_bitpos (v, bit_offset + value_bitpos (obj)); -@@ -2642,7 +2644,7 @@ ada_value_primitive_packed_val (struct v +@@ -2681,7 +2683,7 @@ not overlap. */ static void move_bits (gdb_byte *target, int targ_offset, const gdb_byte *source, @@ -648,7 +648,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c { unsigned int accum, mask; int accum_bits, chunk_size; -@@ -2732,7 +2734,7 @@ ada_value_assign (struct value *toval, s +@@ -2771,7 +2773,7 @@ { int len = (value_bitpos (toval) + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT; @@ -657,7 +657,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c gdb_byte *buffer = (gdb_byte *) alloca (len); struct value *val; CORE_ADDR to_addr = value_address (toval); -@@ -2783,7 +2785,7 @@ value_assign_to_component (struct value +@@ -2822,7 +2824,7 @@ (LONGEST) (value_address (component) - value_address (container)); int bit_offset_in_container = value_bitpos (component) - value_bitpos (container); @@ -666,7 +666,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c val = value_cast (value_type (component), val); -@@ -4392,7 +4394,7 @@ ensure_lval (struct value *val) +@@ -4480,7 +4482,7 @@ if (VALUE_LVAL (val) == not_lval || VALUE_LVAL (val) == lval_internalvar) { @@ -675,7 +675,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c const CORE_ADDR addr = value_as_long (value_allocate_space_in_inferior (len)); -@@ -4476,7 +4478,7 @@ static CORE_ADDR +@@ -4564,7 +4566,7 @@ value_pointer (struct value *value, struct type *type) { struct gdbarch *gdbarch = get_type_arch (type); @@ -684,7 +684,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c gdb_byte *buf = (gdb_byte *) alloca (len); CORE_ADDR addr; -@@ -6711,7 +6713,7 @@ value_tag_from_contents_and_address (str +@@ -6799,7 +6801,7 @@ const gdb_byte *valaddr, CORE_ADDR address) { @@ -693,7 +693,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c struct type *tag_type; if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset, -@@ -7181,7 +7183,7 @@ ada_in_variant (LONGEST val, struct type +@@ -7280,7 +7282,7 @@ only in that it can handle packed values of arbitrary type. */ static struct value * @@ -702,7 +702,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c struct type *arg_type) { struct type *type; -@@ -7193,7 +7195,7 @@ ada_value_primitive_field (struct value +@@ -7292,7 +7294,7 @@ if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0) { @@ -711,7 +711,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno); return ada_value_primitive_packed_val (arg1, value_contents (arg1), -@@ -7220,9 +7222,9 @@ ada_value_primitive_field (struct value +@@ -7319,9 +7321,9 @@ Returns 1 if found, 0 otherwise. */ static int @@ -723,7 +723,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c int *index_p) { int i; -@@ -7240,8 +7242,8 @@ find_struct_field (const char *name, str +@@ -7339,8 +7341,8 @@ for (i = 0; i < TYPE_NFIELDS (type); i += 1) { @@ -734,7 +734,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c const char *t_field_name = TYPE_FIELD_NAME (type, i); if (t_field_name == NULL) -@@ -7311,7 +7313,7 @@ num_visible_fields (struct type *type) +@@ -7410,7 +7412,7 @@ Searches recursively through wrapper fields (e.g., '_parent'). */ static struct value * @@ -743,7 +743,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c struct type *type) { int i; -@@ -7344,7 +7346,7 @@ ada_search_struct_field (const char *nam +@@ -7443,7 +7445,7 @@ int j; struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type, i)); @@ -752,7 +752,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c for (j = 0; j < TYPE_NFIELDS (field_type); j += 1) { -@@ -7362,8 +7364,8 @@ ada_search_struct_field (const char *nam +@@ -7461,8 +7463,8 @@ return NULL; } @@ -763,7 +763,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c /* Return field #INDEX in ARG, where the index is that returned by -@@ -7372,7 +7374,7 @@ static struct value *ada_index_struct_fi +@@ -7471,7 +7473,7 @@ * If found, return value, else return NULL. */ static struct value * @@ -772,7 +772,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c struct type *type) { return ada_index_struct_field_1 (&index, arg, offset, type); -@@ -7384,7 +7386,7 @@ ada_index_struct_field (int index, struc +@@ -7483,7 +7485,7 @@ * *INDEX_P. */ static struct value * @@ -781,7 +781,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c struct type *type) { int i; -@@ -7474,7 +7476,8 @@ ada_value_struct_elt (struct value *arg, +@@ -7573,7 +7575,8 @@ v = ada_search_struct_field (name, arg, 0, t); else { @@ -791,7 +791,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c struct type *field_type; CORE_ADDR address; -@@ -7791,8 +7794,8 @@ ada_coerce_ref (struct value *val0) +@@ -7904,8 +7907,8 @@ /* Return OFF rounded upward if necessary to a multiple of ALIGNMENT (a power of 2). */ @@ -802,7 +802,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c { return (off + alignment - 1) & ~(alignment - 1); } -@@ -8186,10 +8189,9 @@ ada_template_to_fixed_record_type_1 (str +@@ -8299,10 +8302,9 @@ struct value *mark = value_mark (); struct value *dval; struct type *rtype; @@ -815,7 +815,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c int f; /* Compute the number of fields in this record type that are going -@@ -8267,7 +8269,7 @@ ada_template_to_fixed_record_type_1 (str +@@ -8380,7 +8382,7 @@ that follow this one. */ if (ada_is_aligner_type (field_type)) { @@ -824,7 +824,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c field_valaddr = cond_offset_host (field_valaddr, field_offset); field_address = cond_offset_target (field_address, field_offset); -@@ -8403,11 +8405,11 @@ ada_template_to_fixed_record_type_1 (str +@@ -8516,11 +8518,11 @@ if (TYPE_LENGTH (type) <= 0) { if (TYPE_NAME (rtype)) @@ -840,7 +840,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c } else { -@@ -8874,7 +8876,8 @@ to_fixed_array_type (struct type *type0, +@@ -8987,7 +8989,8 @@ type was a regular (non-packed) array type. As a result, the bitsize of the array elements needs to be set again, and the array length needs to be recomputed based on that bitsize. */ @@ -850,11 +850,11 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.c int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0); TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0); -Index: gdb-7.10.50.20151027/gdb/ada-lang.h +Index: gdb-7.11.50.20160716/gdb/ada-lang.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/ada-lang.h 2015-11-02 21:23:11.177351423 +0100 -+++ gdb-7.10.50.20151027/gdb/ada-lang.h 2015-11-02 21:23:13.198364721 +0100 -@@ -168,7 +168,7 @@ extern void ada_print_type (struct type +--- gdb-7.11.50.20160716.orig/gdb/ada-lang.h 2016-07-16 14:33:42.054510125 +0200 ++++ gdb-7.11.50.20160716/gdb/ada-lang.h 2016-07-16 14:33:44.528530036 +0200 +@@ -168,7 +168,7 @@ extern void ada_print_typedef (struct type *type, struct symbol *new_symbol, struct ui_file *stream); @@ -863,7 +863,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.h struct ui_file *, int, const struct value *, const struct value_print_options *); -@@ -183,7 +183,7 @@ extern void ada_emit_char (int, struct t +@@ -183,7 +183,7 @@ extern void ada_printchar (int, struct type *, struct ui_file *); extern void ada_printstr (struct ui_file *, struct type *, const gdb_byte *, @@ -872,7 +872,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.h const struct value_print_options *); struct value *ada_convert_actual (struct value *actual, -@@ -255,7 +255,7 @@ extern int ada_is_constrained_packed_arr +@@ -255,7 +255,7 @@ extern struct value *ada_value_primitive_packed_val (struct value *, const gdb_byte *, @@ -881,11 +881,11 @@ Index: gdb-7.10.50.20151027/gdb/ada-lang.h struct type *); extern struct type *ada_coerce_to_simple_array_type (struct type *); -Index: gdb-7.10.50.20151027/gdb/ada-typeprint.c +Index: gdb-7.11.50.20160716/gdb/ada-typeprint.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/ada-typeprint.c 2015-11-02 21:23:11.177351423 +0100 -+++ gdb-7.10.50.20151027/gdb/ada-typeprint.c 2015-11-02 21:23:13.198364721 +0100 -@@ -891,8 +891,8 @@ ada_print_type (struct type *type0, cons +--- gdb-7.11.50.20160716.orig/gdb/ada-typeprint.c 2016-07-16 14:33:42.055510133 +0200 ++++ gdb-7.11.50.20160716/gdb/ada-typeprint.c 2016-07-16 14:33:44.528530036 +0200 +@@ -891,8 +891,8 @@ const char *name = ada_type_name (type); if (!ada_is_range_type_name (name)) @@ -896,7 +896,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-typeprint.c else { fprintf_filtered (stream, "range "); -@@ -913,7 +913,8 @@ ada_print_type (struct type *type0, cons +@@ -913,7 +913,8 @@ } break; case TYPE_CODE_FLT: @@ -906,10 +906,10 @@ Index: gdb-7.10.50.20151027/gdb/ada-typeprint.c break; case TYPE_CODE_ENUM: if (show < 0) -Index: gdb-7.10.50.20151027/gdb/ada-valprint.c +Index: gdb-7.11.50.20160716/gdb/ada-valprint.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/ada-valprint.c 2015-11-02 21:23:11.179351436 +0100 -+++ gdb-7.10.50.20151027/gdb/ada-valprint.c 2015-11-02 21:23:13.199364728 +0100 +--- gdb-7.11.50.20160716.orig/gdb/ada-valprint.c 2016-07-16 14:33:42.056510141 +0200 ++++ gdb-7.11.50.20160716/gdb/ada-valprint.c 2016-07-16 14:33:44.528530036 +0200 @@ -33,11 +33,11 @@ #include "objfiles.h" @@ -924,7 +924,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-valprint.c const struct language_defn *); -@@ -279,7 +279,7 @@ ada_emit_char (int c, struct type *type, +@@ -279,7 +279,7 @@ of a character. */ static int @@ -933,7 +933,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-valprint.c enum bfd_endian byte_order) { if (type_len == 1) -@@ -441,11 +441,11 @@ ada_print_scalar (struct type *type, LON +@@ -441,11 +441,11 @@ static void printstr (struct ui_file *stream, struct type *elttype, const gdb_byte *string, @@ -947,7 +947,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-valprint.c unsigned int things_printed = 0; int in_quotes = 0; int need_comma = 0; -@@ -460,9 +460,9 @@ printstr (struct ui_file *stream, struct +@@ -460,9 +460,9 @@ { /* Position of the character we are examining to see whether it is repeated. */ @@ -959,7 +959,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-valprint.c QUIT; -@@ -493,7 +493,8 @@ printstr (struct ui_file *stream, struct +@@ -493,7 +493,8 @@ ada_emit_char (char_at (string, i, type_len, byte_order), elttype, stream, '\'', type_len); fputs_filtered ("'", stream); @@ -969,7 +969,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-valprint.c i = rep1 - 1; things_printed += options->repeat_count_threshold; need_comma = 1; -@@ -521,7 +522,7 @@ printstr (struct ui_file *stream, struct +@@ -521,7 +522,7 @@ void ada_printstr (struct ui_file *stream, struct type *type, @@ -978,7 +978,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-valprint.c const char *encoding, int force_ellipses, const struct value_print_options *options) { -@@ -531,12 +532,12 @@ ada_printstr (struct ui_file *stream, st +@@ -531,12 +532,12 @@ static int print_variant_part (struct type *type, int field_num, @@ -993,7 +993,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-valprint.c const struct language_defn *language) { struct type *var_type = TYPE_FIELD_TYPE (type, field_num); -@@ -572,11 +573,11 @@ print_variant_part (struct type *type, i +@@ -572,11 +573,11 @@ static int print_field_values (struct type *type, const gdb_byte *valaddr, @@ -1007,7 +1007,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-valprint.c const struct language_defn *language) { int i, len; -@@ -643,7 +644,7 @@ print_field_values (struct type *type, c +@@ -643,7 +644,7 @@ } else { @@ -1016,7 +1016,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-valprint.c int bit_size = TYPE_FIELD_BITSIZE (type, i); struct value_print_options opts; -@@ -689,8 +690,8 @@ ada_val_print_string (struct type *type, +@@ -689,8 +690,8 @@ { enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); struct type *elttype = TYPE_TARGET_TYPE (type); @@ -1027,7 +1027,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-valprint.c /* We know that ELTTYPE cannot possibly be null, because we assume that we're called only when TYPE is a string-like type. -@@ -709,7 +710,7 @@ ada_val_print_string (struct type *type, +@@ -709,7 +710,7 @@ elements up to it. */ if (options->stop_print_at_null) { @@ -1036,7 +1036,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-valprint.c /* Look for a NULL char. */ for (temp_len = 0; -@@ -1074,7 +1075,7 @@ ada_val_print_ref (struct type *type, co +@@ -1074,7 +1075,7 @@ static void ada_val_print_1 (struct type *type, const gdb_byte *valaddr, @@ -1045,7 +1045,7 @@ Index: gdb-7.10.50.20151027/gdb/ada-valprint.c struct ui_file *stream, int recurse, const struct value *original_value, const struct value_print_options *options, -@@ -1157,7 +1158,7 @@ ada_val_print_1 (struct type *type, cons +@@ -1157,7 +1158,7 @@ void ada_val_print (struct type *type, const gdb_byte *valaddr, @@ -1054,11 +1054,11 @@ Index: gdb-7.10.50.20151027/gdb/ada-valprint.c struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options) -Index: gdb-7.10.50.20151027/gdb/annotate.c +Index: gdb-7.11.50.20160716/gdb/annotate.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/annotate.c 2015-11-02 21:23:11.179351436 +0100 -+++ gdb-7.10.50.20151027/gdb/annotate.c 2015-11-02 21:23:13.199364728 +0100 -@@ -542,21 +542,21 @@ annotate_frame_end (void) +--- gdb-7.11.50.20160716.orig/gdb/annotate.c 2016-07-16 14:33:42.057510149 +0200 ++++ gdb-7.11.50.20160716/gdb/annotate.c 2016-07-16 14:33:44.528530036 +0200 +@@ -533,21 +533,21 @@ } void @@ -1084,11 +1084,11 @@ Index: gdb-7.10.50.20151027/gdb/annotate.c } void -Index: gdb-7.10.50.20151027/gdb/annotate.h +Index: gdb-7.11.50.20160716/gdb/annotate.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/annotate.h 2015-11-02 21:23:11.179351436 +0100 -+++ gdb-7.10.50.20151027/gdb/annotate.h 2015-11-02 21:23:13.199364728 +0100 -@@ -92,8 +92,8 @@ extern void annotate_frame_source_end (v +--- gdb-7.11.50.20160716.orig/gdb/annotate.h 2016-07-16 14:33:42.057510149 +0200 ++++ gdb-7.11.50.20160716/gdb/annotate.h 2016-07-16 14:33:44.528530036 +0200 +@@ -92,8 +92,8 @@ extern void annotate_frame_where (void); extern void annotate_frame_end (void); @@ -1099,11 +1099,11 @@ Index: gdb-7.10.50.20151027/gdb/annotate.h extern void annotate_elt_rep_end (void); extern void annotate_elt (void); extern void annotate_array_section_end (void); -Index: gdb-7.10.50.20151027/gdb/arm-linux-nat.c +Index: gdb-7.11.50.20160716/gdb/arm-linux-nat.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/arm-linux-nat.c 2015-11-02 21:23:11.180351443 +0100 -+++ gdb-7.10.50.20151027/gdb/arm-linux-nat.c 2015-11-02 21:23:13.200364734 +0100 -@@ -1099,7 +1099,7 @@ arm_linux_remove_hw_breakpoint (struct t +--- gdb-7.11.50.20160716.orig/gdb/arm-linux-nat.c 2016-07-16 14:33:42.057510149 +0200 ++++ gdb-7.11.50.20160716/gdb/arm-linux-nat.c 2016-07-16 14:33:44.529530044 +0200 +@@ -1063,7 +1063,7 @@ ADDR? */ static int arm_linux_region_ok_for_hw_watchpoint (struct target_ops *self, @@ -1112,11 +1112,11 @@ Index: gdb-7.10.50.20151027/gdb/arm-linux-nat.c { const struct arm_linux_hwbp_cap *cap = arm_linux_get_hwbp_cap (); CORE_ADDR max_wp_length, aligned_addr; -Index: gdb-7.10.50.20151027/gdb/ax-gdb.c +Index: gdb-7.11.50.20160716/gdb/ax-gdb.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/ax-gdb.c 2015-11-02 21:23:11.182351456 +0100 -+++ gdb-7.10.50.20151027/gdb/ax-gdb.c 2015-11-02 21:23:13.201364741 +0100 -@@ -83,12 +83,12 @@ static void gen_traced_pop (struct gdbar +--- gdb-7.11.50.20160716.orig/gdb/ax-gdb.c 2016-07-16 14:33:42.060510173 +0200 ++++ gdb-7.11.50.20160716/gdb/ax-gdb.c 2016-07-16 14:33:44.529530044 +0200 +@@ -83,12 +83,12 @@ static void gen_sign_extend (struct agent_expr *, struct type *); static void gen_extend (struct agent_expr *, struct type *); static void gen_fetch (struct agent_expr *, struct type *); @@ -1131,7 +1131,7 @@ Index: gdb-7.10.50.20151027/gdb/ax-gdb.c static void gen_sym_offset (struct agent_expr *, struct symbol *); static void gen_var_ref (struct gdbarch *, struct agent_expr *ax, struct axs_value *value, struct symbol *var); -@@ -136,15 +136,16 @@ static void gen_deref (struct agent_expr +@@ -136,15 +136,16 @@ static void gen_address_of (struct agent_expr *, struct axs_value *); static void gen_bitfield_ref (struct expression *exp, struct agent_expr *ax, struct axs_value *value, @@ -1151,7 +1151,7 @@ Index: gdb-7.10.50.20151027/gdb/ax-gdb.c struct type *type); static void gen_struct_ref (struct expression *exp, struct agent_expr *ax, struct axs_value *value, -@@ -539,7 +540,7 @@ gen_fetch (struct agent_expr *ax, struct +@@ -538,7 +539,7 @@ right shift it by -DISTANCE bits if DISTANCE < 0. This generates unsigned (logical) right shifts. */ static void @@ -1160,7 +1160,7 @@ Index: gdb-7.10.50.20151027/gdb/ax-gdb.c { if (distance > 0) { -@@ -593,7 +594,7 @@ gen_frame_locals_address (struct gdbarch +@@ -592,7 +593,7 @@ programming in ML, it would be clearer why these are the same thing. */ static void @@ -1169,7 +1169,7 @@ Index: gdb-7.10.50.20151027/gdb/ax-gdb.c { /* It would suffice to simply push the offset and add it, but this makes it easier to read positive and negative offsets in the -@@ -1249,7 +1250,7 @@ gen_address_of (struct agent_expr *ax, s +@@ -1248,7 +1249,7 @@ static void gen_bitfield_ref (struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *type, @@ -1178,7 +1178,7 @@ Index: gdb-7.10.50.20151027/gdb/ax-gdb.c { /* Note that ops[i] fetches 8 << i bits. */ static enum agent_op ops[] -@@ -1284,13 +1285,13 @@ gen_bitfield_ref (struct expression *exp +@@ -1283,13 +1284,13 @@ /* The first and one-after-last bits in the field, but rounded down and up to byte boundaries. */ @@ -1197,7 +1197,7 @@ Index: gdb-7.10.50.20151027/gdb/ax-gdb.c /* The index in ops of the opcode we're considering. */ int op; -@@ -1409,7 +1410,7 @@ gen_bitfield_ref (struct expression *exp +@@ -1408,7 +1409,7 @@ static void gen_primitive_field (struct expression *exp, struct agent_expr *ax, struct axs_value *value, @@ -1206,7 +1206,7 @@ Index: gdb-7.10.50.20151027/gdb/ax-gdb.c { /* Is this a bitfield? */ if (TYPE_FIELD_PACKED (type, fieldno)) -@@ -1434,7 +1435,7 @@ gen_primitive_field (struct expression * +@@ -1433,7 +1434,7 @@ static int gen_struct_ref_recursive (struct expression *exp, struct agent_expr *ax, struct axs_value *value, @@ -1215,11 +1215,11 @@ Index: gdb-7.10.50.20151027/gdb/ax-gdb.c { int i, rslt; int nbases = TYPE_N_BASECLASSES (type); -Index: gdb-7.10.50.20151027/gdb/ax-general.c +Index: gdb-7.11.50.20160716/gdb/ax-general.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/ax-general.c 2015-11-02 21:23:11.182351456 +0100 -+++ gdb-7.10.50.20151027/gdb/ax-general.c 2015-11-02 21:23:13.201364741 +0100 -@@ -192,7 +192,7 @@ ax_zero_ext (struct agent_expr *x, int n +--- gdb-7.11.50.20160716.orig/gdb/ax-general.c 2016-07-16 14:33:42.060510173 +0200 ++++ gdb-7.11.50.20160716/gdb/ax-general.c 2016-07-16 14:33:44.529530044 +0200 +@@ -199,7 +199,7 @@ /* Append a trace_quick instruction to EXPR, to record N bytes. */ void @@ -1228,11 +1228,11 @@ Index: gdb-7.10.50.20151027/gdb/ax-general.c { /* N must fit in a byte. */ if (n < 0 || n > 255) -Index: gdb-7.10.50.20151027/gdb/ax.h +Index: gdb-7.11.50.20160716/gdb/ax.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/ax.h 2015-11-02 21:23:11.183351463 +0100 -+++ gdb-7.10.50.20151027/gdb/ax.h 2015-11-02 21:23:13.201364741 +0100 -@@ -207,7 +207,7 @@ extern void ax_ext (struct agent_expr *E +--- gdb-7.11.50.20160716.orig/gdb/ax.h 2016-07-16 14:33:42.060510173 +0200 ++++ gdb-7.11.50.20160716/gdb/ax.h 2016-07-16 14:33:44.529530044 +0200 +@@ -210,7 +210,7 @@ extern void ax_zero_ext (struct agent_expr *EXPR, int N); /* Append a trace_quick instruction to EXPR, to record N bytes. */ @@ -1241,11 +1241,11 @@ Index: gdb-7.10.50.20151027/gdb/ax.h /* Append a goto op to EXPR. OP is the actual op (must be aop_goto or aop_if_goto). We assume we don't know the target offset yet, -Index: gdb-7.10.50.20151027/gdb/breakpoint.c +Index: gdb-7.11.50.20160716/gdb/breakpoint.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/breakpoint.c 2015-11-02 21:23:11.188351496 +0100 -+++ gdb-7.10.50.20151027/gdb/breakpoint.c 2015-11-02 21:23:13.205364767 +0100 -@@ -2215,9 +2215,9 @@ should_be_inserted (struct bp_location * +--- gdb-7.11.50.20160716.orig/gdb/breakpoint.c 2016-07-16 14:33:42.067510230 +0200 ++++ gdb-7.11.50.20160716/gdb/breakpoint.c 2016-07-16 14:33:44.531530060 +0200 +@@ -2251,9 +2251,9 @@ { fprintf_unfiltered (gdb_stdlog, "infrun: stepping past non-steppable watchpoint. " @@ -1257,7 +1257,7 @@ Index: gdb-7.10.50.20151027/gdb/breakpoint.c } return 0; } -@@ -7053,7 +7053,7 @@ breakpoint_address_match (struct address +@@ -7181,7 +7181,7 @@ static int breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1, @@ -1266,7 +1266,7 @@ Index: gdb-7.10.50.20151027/gdb/breakpoint.c CORE_ADDR addr2) { return ((gdbarch_has_global_breakpoints (target_gdbarch ()) -@@ -11387,7 +11387,7 @@ can_use_hardware_watchpoint (struct valu +@@ -11534,7 +11534,7 @@ && TYPE_CODE (vtype) != TYPE_CODE_ARRAY)) { CORE_ADDR vaddr = value_address (v); @@ -1275,11 +1275,11 @@ Index: gdb-7.10.50.20151027/gdb/breakpoint.c int num_regs; len = (target_exact_watchpoints -Index: gdb-7.10.50.20151027/gdb/breakpoint.h +Index: gdb-7.11.50.20160716/gdb/breakpoint.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/breakpoint.h 2015-11-02 21:23:11.190351509 +0100 -+++ gdb-7.10.50.20151027/gdb/breakpoint.h 2015-11-02 21:23:13.206364773 +0100 -@@ -237,7 +237,7 @@ struct bp_target_info +--- gdb-7.11.50.20160716.orig/gdb/breakpoint.h 2016-07-16 14:33:42.068510238 +0200 ++++ gdb-7.11.50.20160716/gdb/breakpoint.h 2016-07-16 14:33:44.532530068 +0200 +@@ -237,7 +237,7 @@ /* If this is a ranged breakpoint, then this field contains the length of the range that will be watched for execution. */ @@ -1288,7 +1288,7 @@ Index: gdb-7.10.50.20151027/gdb/breakpoint.h /* If the breakpoint lives in memory and reading that memory would give back the breakpoint, instead of the original contents, then -@@ -413,7 +413,7 @@ struct bp_location +@@ -413,7 +413,7 @@ /* For hardware watchpoints, the size of the memory region being watched. For hardware ranged breakpoints, the size of the breakpoint range. */ @@ -1297,11 +1297,11 @@ Index: gdb-7.10.50.20151027/gdb/breakpoint.h /* Type of hardware watchpoint. */ enum target_hw_bp_type watchpoint_type; -Index: gdb-7.10.50.20151027/gdb/c-lang.c +Index: gdb-7.11.50.20160716/gdb/c-lang.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/c-lang.c 2015-11-02 21:23:11.190351509 +0100 -+++ gdb-7.10.50.20151027/gdb/c-lang.c 2015-11-02 21:23:13.206364773 +0100 -@@ -187,7 +187,7 @@ c_printchar (int c, struct type *type, s +--- gdb-7.11.50.20160716.orig/gdb/c-lang.c 2016-07-16 14:33:42.069510246 +0200 ++++ gdb-7.11.50.20160716/gdb/c-lang.c 2016-07-16 14:33:44.532530068 +0200 +@@ -186,7 +186,7 @@ void c_printstr (struct ui_file *stream, struct type *type, @@ -1310,7 +1310,7 @@ Index: gdb-7.10.50.20151027/gdb/c-lang.c const char *user_encoding, int force_ellipses, const struct value_print_options *options) { -@@ -676,7 +676,7 @@ evaluate_subexp_c (struct type *expect_t +@@ -675,7 +675,7 @@ } else { @@ -1319,7 +1319,7 @@ Index: gdb-7.10.50.20151027/gdb/c-lang.c /* Write the terminating character. */ for (i = 0; i < TYPE_LENGTH (type); ++i) -@@ -685,7 +685,7 @@ evaluate_subexp_c (struct type *expect_t +@@ -684,7 +684,7 @@ if (satisfy_expected) { LONGEST low_bound, high_bound; @@ -1328,11 +1328,11 @@ Index: gdb-7.10.50.20151027/gdb/c-lang.c if (get_discrete_bounds (TYPE_INDEX_TYPE (expect_type), &low_bound, &high_bound) < 0) -Index: gdb-7.10.50.20151027/gdb/c-lang.h +Index: gdb-7.11.50.20160716/gdb/c-lang.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/c-lang.h 2015-11-02 21:23:11.191351515 +0100 -+++ gdb-7.10.50.20151027/gdb/c-lang.h 2015-11-02 21:23:13.206364773 +0100 -@@ -74,7 +74,7 @@ extern void c_print_typedef (struct type +--- gdb-7.11.50.20160716.orig/gdb/c-lang.h 2016-07-16 14:33:42.069510246 +0200 ++++ gdb-7.11.50.20160716/gdb/c-lang.h 2016-07-16 14:33:44.532530068 +0200 +@@ -77,7 +77,7 @@ struct ui_file *); extern void c_val_print (struct type *, const gdb_byte *, @@ -1341,7 +1341,7 @@ Index: gdb-7.10.50.20151027/gdb/c-lang.h struct ui_file *, int, const struct value *, const struct value_print_options *); -@@ -94,7 +94,7 @@ extern void c_printchar (int, struct typ +@@ -97,7 +97,7 @@ extern void c_printstr (struct ui_file * stream, struct type *elttype, const gdb_byte *string, @@ -1350,28 +1350,11 @@ Index: gdb-7.10.50.20151027/gdb/c-lang.h const char *user_encoding, int force_ellipses, const struct value_print_options *options); -@@ -120,14 +120,14 @@ extern void cp_print_class_member (const - struct ui_file *, char *); - - extern void cp_print_value_fields (struct type *, struct type *, -- const gdb_byte *, int, CORE_ADDR, -+ const gdb_byte *, LONGEST, CORE_ADDR, - struct ui_file *, int, - const struct value *, - const struct value_print_options *, - struct type **, int); - - extern void cp_print_value_fields_rtti (struct type *, -- const gdb_byte *, int, CORE_ADDR, -+ const gdb_byte *, LONGEST, CORE_ADDR, - struct ui_file *, int, - const struct value *, - const struct value_print_options *, -Index: gdb-7.10.50.20151027/gdb/c-valprint.c +Index: gdb-7.11.50.20160716/gdb/c-valprint.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/c-valprint.c 2015-11-02 21:23:11.191351515 +0100 -+++ gdb-7.10.50.20151027/gdb/c-valprint.c 2015-11-02 21:23:13.207364780 +0100 -@@ -242,7 +242,7 @@ c_val_print_array (struct type *type, co +--- gdb-7.11.50.20160716.orig/gdb/c-valprint.c 2016-07-16 14:33:42.070510254 +0200 ++++ gdb-7.11.50.20160716/gdb/c-valprint.c 2016-07-16 14:33:44.532530068 +0200 +@@ -244,7 +244,7 @@ if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (unresolved_elttype) > 0) { LONGEST low_bound, high_bound; @@ -1380,7 +1363,7 @@ Index: gdb-7.10.50.20151027/gdb/c-valprint.c struct gdbarch *gdbarch = get_type_arch (type); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); unsigned int i = 0; /* Number of characters printed. */ -@@ -316,8 +316,8 @@ c_val_print_array (struct type *type, co +@@ -318,8 +318,8 @@ if (cp_is_vtbl_ptr_type (elttype)) { i = 1; @@ -1391,7 +1374,7 @@ Index: gdb-7.10.50.20151027/gdb/c-valprint.c } else { -@@ -394,7 +394,7 @@ c_val_print_struct (struct type *type, c +@@ -396,7 +396,7 @@ -fvtable_thunks. (Otherwise, look under TYPE_CODE_PTR.) */ struct gdbarch *gdbarch = get_type_arch (type); @@ -1400,7 +1383,7 @@ Index: gdb-7.10.50.20151027/gdb/c-valprint.c + TYPE_FIELD_BITPOS (type, VTBL_FNADDR_OFFSET) / 8); struct type *field_type = TYPE_FIELD_TYPE (type, VTBL_FNADDR_OFFSET); -@@ -493,7 +493,7 @@ c_val_print_memberptr (struct type *type +@@ -495,7 +495,7 @@ void c_val_print (struct type *type, const gdb_byte *valaddr, @@ -1409,29 +1392,18 @@ Index: gdb-7.10.50.20151027/gdb/c-valprint.c struct ui_file *stream, int recurse, const struct value *original_value, const struct value_print_options *options) -@@ -565,7 +565,8 @@ c_value_print (struct value *val, struct - const struct value_print_options *options) - { - struct type *type, *real_type, *val_type; -- int full, top, using_enc; -+ int full, using_enc; -+ LONGEST top; - struct value_print_options opts = *options; - - opts.deref_ref = 1; -Index: gdb-7.10.50.20151027/gdb/cp-abi.c +Index: gdb-7.11.50.20160716/gdb/cp-abi.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/cp-abi.c 2015-11-02 21:23:11.192351522 +0100 -+++ gdb-7.10.50.20151027/gdb/cp-abi.c 2015-11-02 21:23:13.207364780 +0100 -@@ -64,12 +64,12 @@ is_operator_name (const char *name) +--- gdb-7.11.50.20160716.orig/gdb/cp-abi.c 2016-07-16 14:33:42.070510254 +0200 ++++ gdb-7.11.50.20160716/gdb/cp-abi.c 2016-07-16 14:33:44.532530068 +0200 +@@ -64,12 +64,12 @@ return (*current_cp_abi.is_operator_name) (name); } -int +LONGEST baseclass_offset (struct type *type, int index, const gdb_byte *valaddr, -- int embedded_offset, CORE_ADDR address, -+ LONGEST embedded_offset, CORE_ADDR address, + LONGEST embedded_offset, CORE_ADDR address, const struct value *val) { - int res = 0; @@ -1439,7 +1411,7 @@ Index: gdb-7.10.50.20151027/gdb/cp-abi.c gdb_assert (current_cp_abi.baseclass_offset != NULL); -@@ -96,7 +96,7 @@ baseclass_offset (struct type *type, int +@@ -96,7 +96,7 @@ struct value * value_virtual_fn_field (struct value **arg1p, struct fn_field *f, int j, @@ -1448,20 +1420,11 @@ Index: gdb-7.10.50.20151027/gdb/cp-abi.c { if ((current_cp_abi.virtual_fn_field) == NULL) return NULL; -@@ -106,7 +106,7 @@ value_virtual_fn_field (struct value **a - - struct type * - value_rtti_type (struct value *v, int *full, -- int *top, int *using_enc) -+ LONGEST *top, int *using_enc) - { - struct type *ret = NULL; - -Index: gdb-7.10.50.20151027/gdb/cp-abi.h +Index: gdb-7.11.50.20160716/gdb/cp-abi.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/cp-abi.h 2015-11-02 21:23:11.192351522 +0100 -+++ gdb-7.10.50.20151027/gdb/cp-abi.h 2015-11-02 21:23:13.207364780 +0100 -@@ -108,7 +108,7 @@ extern struct value *value_virtual_fn_fi +--- gdb-7.11.50.20160716.orig/gdb/cp-abi.h 2016-07-16 14:33:42.070510254 +0200 ++++ gdb-7.11.50.20160716/gdb/cp-abi.h 2016-07-16 14:33:44.532530068 +0200 +@@ -108,7 +108,7 @@ struct fn_field *f, int j, struct type *type, @@ -1470,22 +1433,13 @@ Index: gdb-7.10.50.20151027/gdb/cp-abi.h /* Try to find the run-time type of VALUE, using C++ run-time type -@@ -135,7 +135,7 @@ extern struct value *value_virtual_fn_fi - FULL, TOP, and USING_ENC can each be zero, in which case we don't - provide the corresponding piece of information. */ - extern struct type *value_rtti_type (struct value *value, -- int *full, int *top, -+ int *full, LONGEST *top, - int *using_enc); - - /* Compute the offset of the baseclass which is the INDEXth baseclass -@@ -144,11 +144,11 @@ extern struct type *value_rtti_type (str +@@ -144,11 +144,11 @@ contents of VAL. The result is the offset of the baseclass value relative to (the address of)(ARG) + OFFSET. */ -extern int baseclass_offset (struct type *type, - int index, const gdb_byte *valaddr, -- int embedded_offset, +- LONGEST embedded_offset, - CORE_ADDR address, - const struct value *val); +extern LONGEST baseclass_offset (struct type *type, @@ -1496,48 +1450,28 @@ Index: gdb-7.10.50.20151027/gdb/cp-abi.h /* Describe the target of a pointer to method. CONTENTS is the byte pattern representing the pointer to method. TYPE is the pointer to -@@ -227,12 +227,13 @@ struct cp_abi_ops +@@ -227,12 +227,12 @@ struct value *(*virtual_fn_field) (struct value **arg1p, struct fn_field * f, int j, struct type * type, - int offset); + LONGEST offset); struct type *(*rtti_type) (struct value *v, int *full, -- int *top, int *using_enc); + LONGEST *top, int *using_enc); - int (*baseclass_offset) (struct type *type, int index, -- const bfd_byte *valaddr, int embedded_offset, +- const bfd_byte *valaddr, LONGEST embedded_offset, - CORE_ADDR address, const struct value *val); -+ LONGEST *top, int *using_enc); + LONGEST (*baseclass_offset) (struct type *type, int index, -+ const bfd_byte *valaddr, -+ LONGEST embedded_offset, CORE_ADDR address, -+ const struct value *val); ++ const bfd_byte *valaddr, LONGEST embedded_offset, ++ CORE_ADDR address, const struct value *val); void (*print_method_ptr) (const gdb_byte *contents, struct type *type, struct ui_file *stream); -Index: gdb-7.10.50.20151027/gdb/cp-valprint.c +Index: gdb-7.11.50.20160716/gdb/cp-valprint.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/cp-valprint.c 2015-11-02 21:23:11.193351529 +0100 -+++ gdb-7.10.50.20151027/gdb/cp-valprint.c 2015-11-02 21:23:13.208364787 +0100 -@@ -80,7 +80,7 @@ static void cp_print_static_field (struc - const struct value_print_options *); - - static void cp_print_value (struct type *, struct type *, -- const gdb_byte *, int, -+ const gdb_byte *, LONGEST, - CORE_ADDR, struct ui_file *, - int, const struct value *, - const struct value_print_options *, -@@ -154,7 +154,7 @@ cp_is_vtbl_member (struct type *type) - - void - cp_print_value_fields (struct type *type, struct type *real_type, -- const gdb_byte *valaddr, int offset, -+ const gdb_byte *valaddr, LONGEST offset, - CORE_ADDR address, struct ui_file *stream, - int recurse, const struct value *val, - const struct value_print_options *options, -@@ -334,7 +334,7 @@ cp_print_value_fields (struct type *type +--- gdb-7.11.50.20160716.orig/gdb/cp-valprint.c 2016-07-16 14:33:42.071510262 +0200 ++++ gdb-7.11.50.20160716/gdb/cp-valprint.c 2016-07-16 14:33:44.532530068 +0200 +@@ -334,7 +334,7 @@ } else if (i == vptr_fieldno && type == vptr_basetype) { @@ -1546,57 +1480,11 @@ Index: gdb-7.10.50.20151027/gdb/cp-valprint.c struct type *i_type = TYPE_FIELD_TYPE (type, i); if (valprint_check_validity (stream, i_type, i_offset, val)) -@@ -417,7 +417,7 @@ cp_print_value_fields (struct type *type - - void - cp_print_value_fields_rtti (struct type *type, -- const gdb_byte *valaddr, int offset, -+ const gdb_byte *valaddr, LONGEST offset, - CORE_ADDR address, - struct ui_file *stream, int recurse, - const struct value *val, -@@ -434,7 +434,8 @@ cp_print_value_fields_rtti (struct type - TARGET_CHAR_BIT * TYPE_LENGTH (type))) - { - struct value *value; -- int full, top, using_enc; -+ int full, using_enc; -+ LONGEST top; - - /* Ugh, we have to convert back to a value here. */ - value = value_from_contents_and_address (type, valaddr + offset, -@@ -459,7 +460,7 @@ cp_print_value_fields_rtti (struct type - - static void - cp_print_value (struct type *type, struct type *real_type, -- const gdb_byte *valaddr, int offset, -+ const gdb_byte *valaddr, LONGEST offset, - CORE_ADDR address, struct ui_file *stream, - int recurse, const struct value *val, - const struct value_print_options *options, -@@ -469,7 +470,7 @@ cp_print_value (struct type *type, struc - = (struct type **) obstack_next_free (&dont_print_vb_obstack); - struct obstack tmp_obstack = dont_print_vb_obstack; - int i, n_baseclasses = TYPE_N_BASECLASSES (type); -- int thisoffset; -+ LONGEST thisoffset; - struct type *thistype; - - if (dont_print_vb == 0) -@@ -483,7 +484,7 @@ cp_print_value (struct type *type, struc - - for (i = 0; i < n_baseclasses; i++) - { -- int boffset = 0; -+ LONGEST boffset = 0; - int skip = 0; - struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i)); - const char *basename = TYPE_NAME (baseclass); -Index: gdb-7.10.50.20151027/gdb/d-lang.h +Index: gdb-7.11.50.20160716/gdb/d-lang.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/d-lang.h 2015-11-02 21:23:11.193351529 +0100 -+++ gdb-7.10.50.20151027/gdb/d-lang.h 2015-11-02 21:23:13.208364787 +0100 -@@ -81,7 +81,7 @@ extern struct block_symbol d_lookup_nest +--- gdb-7.11.50.20160716.orig/gdb/d-lang.h 2016-07-16 14:33:42.071510262 +0200 ++++ gdb-7.11.50.20160716/gdb/d-lang.h 2016-07-16 14:33:44.533530076 +0200 +@@ -81,7 +81,7 @@ /* Defined in d-valprint.c */ extern void d_val_print (struct type *type, const gdb_byte *valaddr, @@ -1605,20 +1493,11 @@ Index: gdb-7.10.50.20151027/gdb/d-lang.h struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options); -Index: gdb-7.10.50.20151027/gdb/d-valprint.c +Index: gdb-7.11.50.20160716/gdb/d-valprint.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/d-valprint.c 2015-11-02 21:23:11.193351529 +0100 -+++ gdb-7.10.50.20151027/gdb/d-valprint.c 2015-11-02 21:23:13.208364787 +0100 -@@ -29,7 +29,7 @@ - - static int - dynamic_array_type (struct type *type, const gdb_byte *valaddr, -- int embedded_offset, CORE_ADDR address, -+ LONGEST embedded_offset, CORE_ADDR address, - struct ui_file *stream, int recurse, - const struct value *val, - const struct value_print_options *options) -@@ -73,9 +73,9 @@ dynamic_array_type (struct type *type, c +--- gdb-7.11.50.20160716.orig/gdb/d-valprint.c 2016-07-16 14:33:42.071510262 +0200 ++++ gdb-7.11.50.20160716/gdb/d-valprint.c 2016-07-16 14:33:44.533530076 +0200 +@@ -73,9 +73,9 @@ /* Implements the la_val_print routine for language D. */ void @@ -1631,11 +1510,11 @@ Index: gdb-7.10.50.20151027/gdb/d-valprint.c const struct value_print_options *options) { int ret; -Index: gdb-7.10.50.20151027/gdb/doublest.c +Index: gdb-7.11.50.20160716/gdb/doublest.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/doublest.c 2015-11-02 21:23:11.194351535 +0100 -+++ gdb-7.10.50.20151027/gdb/doublest.c 2015-11-02 21:23:13.208364787 +0100 -@@ -765,7 +765,7 @@ floatformat_from_doublest (const struct +--- gdb-7.11.50.20160716.orig/gdb/doublest.c 2016-07-16 14:33:42.072510270 +0200 ++++ gdb-7.11.50.20160716/gdb/doublest.c 2016-07-16 14:33:44.533530076 +0200 +@@ -784,7 +784,7 @@ but not passed on by GDB. This should be fixed. */ static const struct floatformat * @@ -1644,7 +1523,7 @@ Index: gdb-7.10.50.20151027/gdb/doublest.c { const struct floatformat *format; -@@ -793,8 +793,8 @@ floatformat_from_length (struct gdbarch +@@ -812,8 +812,8 @@ else format = NULL; if (format == NULL) @@ -1655,11 +1534,11 @@ Index: gdb-7.10.50.20151027/gdb/doublest.c return format; } -Index: gdb-7.10.50.20151027/gdb/dwarf2loc.c +Index: gdb-7.11.50.20160716/gdb/dwarf2loc.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/dwarf2loc.c 2015-11-02 21:23:11.197351555 +0100 -+++ gdb-7.10.50.20151027/gdb/dwarf2loc.c 2015-11-02 21:23:13.209364793 +0100 -@@ -1632,19 +1632,19 @@ insert_bits (unsigned int datum, +--- gdb-7.11.50.20160716.orig/gdb/dwarf2loc.c 2016-07-16 14:33:42.076510302 +0200 ++++ gdb-7.11.50.20160716/gdb/dwarf2loc.c 2016-07-16 14:33:44.533530076 +0200 +@@ -1638,19 +1638,19 @@ BITS_BIG_ENDIAN is taken directly from gdbarch. */ static void @@ -1685,7 +1564,7 @@ Index: gdb-7.10.50.20151027/gdb/dwarf2loc.c dest_avail = 8 - dest_offset_bits % 8; -@@ -1682,13 +1682,13 @@ static void +@@ -1688,13 +1688,13 @@ read_pieced_value (struct value *v) { int i; @@ -1701,7 +1580,7 @@ Index: gdb-7.10.50.20151027/gdb/dwarf2loc.c size_t buffer_size = 0; gdb_byte *buffer = NULL; struct cleanup *cleanup; -@@ -1715,8 +1715,8 @@ read_pieced_value (struct value *v) +@@ -1721,8 +1721,8 @@ for (i = 0; i < c->n_pieces && offset < type_len; i++) { struct dwarf_expr_piece *p = &c->pieces[i]; @@ -1712,7 +1591,7 @@ Index: gdb-7.10.50.20151027/gdb/dwarf2loc.c const gdb_byte *intermediate_buffer; /* Compute size, source, and destination offsets for copying, in -@@ -1856,13 +1856,13 @@ static void +@@ -1862,13 +1862,13 @@ write_pieced_value (struct value *to, struct value *from) { int i; @@ -1728,7 +1607,7 @@ Index: gdb-7.10.50.20151027/gdb/dwarf2loc.c size_t buffer_size = 0; gdb_byte *buffer = NULL; struct cleanup *cleanup; -@@ -1890,8 +1890,8 @@ write_pieced_value (struct value *to, st +@@ -1896,8 +1896,8 @@ for (i = 0; i < c->n_pieces && offset < type_len; i++) { struct dwarf_expr_piece *p = &c->pieces[i]; @@ -1739,18 +1618,16 @@ Index: gdb-7.10.50.20151027/gdb/dwarf2loc.c int need_bitwise; const gdb_byte *source_buffer; -@@ -2010,8 +2010,8 @@ write_pieced_value (struct value *to, st - a synthetic pointer. */ +@@ -2017,7 +2017,7 @@ static int --check_pieced_synthetic_pointer (const struct value *value, int bit_offset, + check_pieced_synthetic_pointer (const struct value *value, LONGEST bit_offset, - int bit_length) -+check_pieced_synthetic_pointer (const struct value *value, LONGEST bit_offset, + LONGEST bit_length) { struct piece_closure *c = (struct piece_closure *) value_computed_closure (value); -@@ -2024,7 +2024,7 @@ check_pieced_synthetic_pointer (const st +@@ -2030,7 +2030,7 @@ for (i = 0; i < c->n_pieces && bit_length > 0; i++) { struct dwarf_expr_piece *p = &c->pieces[i]; @@ -1759,20 +1636,18 @@ Index: gdb-7.10.50.20151027/gdb/dwarf2loc.c if (bit_offset > 0) { -@@ -2066,9 +2066,10 @@ indirect_pieced_value (struct value *val +@@ -2132,8 +2132,8 @@ struct type *type; struct frame_info *frame; struct dwarf2_locexpr_baton baton; -- int i, bit_offset, bit_length; +- int i, bit_length; +- LONGEST bit_offset; + int i; -+ LONGEST bit_length; ++ LONGEST bit_length, bit_offset; struct dwarf_expr_piece *piece = NULL; -- LONGEST byte_offset; -+ LONGEST byte_offset, bit_offset; + LONGEST byte_offset; enum bfd_endian byte_order; - - type = check_typedef (value_type (value)); -@@ -2083,7 +2084,7 @@ indirect_pieced_value (struct value *val +@@ -2150,7 +2150,7 @@ for (i = 0; i < c->n_pieces && bit_length > 0; i++) { struct dwarf_expr_piece *p = &c->pieces[i]; @@ -1781,7 +1656,7 @@ Index: gdb-7.10.50.20151027/gdb/dwarf2loc.c if (bit_offset > 0) { -@@ -2363,7 +2364,7 @@ dwarf2_evaluate_loc_desc_full (struct ty +@@ -2444,7 +2444,7 @@ struct value *value = dwarf_expr_fetch (ctx, 0); gdb_byte *contents; const gdb_byte *val_bytes; @@ -1790,11 +1665,11 @@ Index: gdb-7.10.50.20151027/gdb/dwarf2loc.c if (byte_offset + TYPE_LENGTH (type) > n) invalid_synthetic_pointer (); -Index: gdb-7.10.50.20151027/gdb/dwarf2read.c +Index: gdb-7.11.50.20160716/gdb/dwarf2read.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/dwarf2read.c 2015-11-02 21:23:11.204351601 +0100 -+++ gdb-7.10.50.20151027/gdb/dwarf2read.c 2015-11-02 21:23:13.215364833 +0100 -@@ -1917,12 +1917,12 @@ dwarf2_complex_location_expr_complaint ( +--- gdb-7.11.50.20160716.orig/gdb/dwarf2read.c 2016-07-16 14:33:42.083510358 +0200 ++++ gdb-7.11.50.20160716/gdb/dwarf2read.c 2016-07-16 14:33:44.536530100 +0200 +@@ -1935,12 +1935,12 @@ } static void @@ -1811,7 +1686,7 @@ Index: gdb-7.10.50.20151027/gdb/dwarf2read.c } static void -@@ -12554,8 +12554,8 @@ dwarf2_add_field (struct field_info *fip +@@ -12573,8 +12573,8 @@ object, and then subtract off the number of bits of the field itself. The result is the bit offset of the LSB of the field. */ @@ -1822,11 +1697,11 @@ Index: gdb-7.10.50.20151027/gdb/dwarf2read.c attr = dwarf2_attr (die, DW_AT_byte_size, cu); if (attr) -Index: gdb-7.10.50.20151027/gdb/eval.c +Index: gdb-7.11.50.20160716/gdb/eval.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/eval.c 2015-11-02 21:23:11.206351614 +0100 -+++ gdb-7.10.50.20151027/gdb/eval.c 2015-11-02 21:23:13.216364839 +0100 -@@ -317,7 +317,8 @@ evaluate_struct_tuple (struct value *str +--- gdb-7.11.50.20160716.orig/gdb/eval.c 2016-07-16 14:33:42.086510383 +0200 ++++ gdb-7.11.50.20160716/gdb/eval.c 2016-07-16 14:33:44.537530108 +0200 +@@ -317,7 +317,8 @@ while (--nargs >= 0) { struct value *val = NULL; @@ -1836,7 +1711,7 @@ Index: gdb-7.10.50.20151027/gdb/eval.c bfd_byte *addr; fieldno++; -@@ -378,7 +379,7 @@ init_array_element (struct value *array, +@@ -378,7 +379,7 @@ enum noside noside, LONGEST low_bound, LONGEST high_bound) { LONGEST index; @@ -1845,7 +1720,7 @@ Index: gdb-7.10.50.20151027/gdb/eval.c if (exp->elts[*pos].opcode == BINOP_COMMA) { -@@ -526,11 +527,11 @@ binop_promote (const struct language_def +@@ -822,11 +823,11 @@ /* FIXME: Also mixed integral/booleans, with result an integer. */ { const struct builtin_type *builtin = builtin_type (gdbarch); @@ -1860,7 +1735,7 @@ Index: gdb-7.10.50.20151027/gdb/eval.c int unsigned_operation; /* Determine type length and signedness after promotion for -@@ -712,7 +713,7 @@ evaluate_subexp_standard (struct type *e +@@ -1008,7 +1009,7 @@ struct value **argvec; int code; int ix; @@ -1869,7 +1744,7 @@ Index: gdb-7.10.50.20151027/gdb/eval.c struct type **arg_types; int save_pos1; struct symbol *function = NULL; -@@ -891,7 +892,7 @@ evaluate_subexp_standard (struct type *e +@@ -1187,7 +1188,7 @@ struct type *range_type = TYPE_INDEX_TYPE (type); struct type *element_type = TYPE_TARGET_TYPE (type); struct value *array = allocate_value (expect_type); @@ -1878,21 +1753,11 @@ Index: gdb-7.10.50.20151027/gdb/eval.c LONGEST low_bound, high_bound, index; if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0) -@@ -1900,7 +1901,8 @@ evaluate_subexp_standard (struct type *e - { - struct type *type = value_type (arg1); - struct type *real_type; -- int full, top, using_enc; -+ int full, using_enc; -+ LONGEST top; - struct value_print_options opts; - - get_user_print_options (&opts); -Index: gdb-7.10.50.20151027/gdb/f-lang.c +Index: gdb-7.11.50.20160716/gdb/f-lang.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/f-lang.c 2015-11-02 21:23:11.206351614 +0100 -+++ gdb-7.10.50.20151027/gdb/f-lang.c 2015-11-02 21:23:13.216364839 +0100 -@@ -103,7 +103,7 @@ f_printchar (int c, struct type *type, s +--- gdb-7.11.50.20160716.orig/gdb/f-lang.c 2016-07-16 14:33:42.087510391 +0200 ++++ gdb-7.11.50.20160716/gdb/f-lang.c 2016-07-16 14:33:44.537530108 +0200 +@@ -103,7 +103,7 @@ static void f_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string, @@ -1901,11 +1766,11 @@ Index: gdb-7.10.50.20151027/gdb/f-lang.c const struct value_print_options *options) { const char *type_encoding = f_get_encoding (type); -Index: gdb-7.10.50.20151027/gdb/f-lang.h +Index: gdb-7.11.50.20160716/gdb/f-lang.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/f-lang.h 2015-11-02 21:23:11.207351620 +0100 -+++ gdb-7.10.50.20151027/gdb/f-lang.h 2015-11-02 21:23:13.216364839 +0100 -@@ -30,7 +30,7 @@ extern void f_error (char *); /* Defined +--- gdb-7.11.50.20160716.orig/gdb/f-lang.h 2016-07-16 14:33:42.087510391 +0200 ++++ gdb-7.11.50.20160716/gdb/f-lang.h 2016-07-16 14:33:44.537530108 +0200 +@@ -30,7 +30,7 @@ extern void f_print_type (struct type *, const char *, struct ui_file *, int, int, const struct type_print_options *); @@ -1914,11 +1779,11 @@ Index: gdb-7.10.50.20151027/gdb/f-lang.h struct ui_file *, int, const struct value *, const struct value_print_options *); -Index: gdb-7.10.50.20151027/gdb/f-valprint.c +Index: gdb-7.11.50.20160716/gdb/f-valprint.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/f-valprint.c 2015-11-02 21:23:11.207351620 +0100 -+++ gdb-7.10.50.20151027/gdb/f-valprint.c 2015-11-02 21:24:34.108897090 +0100 -@@ -38,7 +38,7 @@ extern void _initialize_f_valprint (void +--- gdb-7.11.50.20160716.orig/gdb/f-valprint.c 2016-07-16 14:33:42.087510391 +0200 ++++ gdb-7.11.50.20160716/gdb/f-valprint.c 2016-07-16 14:33:44.537530108 +0200 +@@ -38,7 +38,7 @@ static void info_common_command (char *, int); static void f77_get_dynamic_length_of_aggregate (struct type *); @@ -1927,7 +1792,7 @@ Index: gdb-7.10.50.20151027/gdb/f-valprint.c /* 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. */ -@@ -73,8 +73,8 @@ f77_get_upperbound (struct type *type) +@@ -73,8 +73,8 @@ static void f77_get_dynamic_length_of_aggregate (struct type *type) { @@ -1938,7 +1803,7 @@ Index: gdb-7.10.50.20151027/gdb/f-valprint.c /* Recursively go all the way down into a possibly multi-dimensional F77 array and get the bounds. For simple arrays, this is pretty -@@ -106,7 +106,7 @@ f77_get_dynamic_length_of_aggregate (str +@@ -106,7 +106,7 @@ static void f77_print_array_1 (int nss, int ndimensions, struct type *type, const gdb_byte *valaddr, @@ -1947,7 +1812,7 @@ Index: gdb-7.10.50.20151027/gdb/f-valprint.c struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options, -@@ -115,7 +115,7 @@ f77_print_array_1 (int nss, int ndimensi +@@ -115,7 +115,7 @@ struct type *range_type = TYPE_INDEX_TYPE (check_typedef (type)); CORE_ADDR addr = address + embedded_offset; LONGEST lowerbound, upperbound; @@ -1956,7 +1821,7 @@ Index: gdb-7.10.50.20151027/gdb/f-valprint.c get_discrete_bounds (range_type, &lowerbound, &upperbound); -@@ -178,7 +178,7 @@ f77_print_array_1 (int nss, int ndimensi +@@ -172,7 +172,7 @@ static void f77_print_array (struct type *type, const gdb_byte *valaddr, @@ -1965,7 +1830,7 @@ Index: gdb-7.10.50.20151027/gdb/f-valprint.c CORE_ADDR address, struct ui_file *stream, int recurse, const struct value *val, -@@ -215,8 +215,9 @@ static const struct generic_val_print_de +@@ -211,8 +211,9 @@ function; they are identical. */ void @@ -1977,11 +1842,11 @@ Index: gdb-7.10.50.20151027/gdb/f-valprint.c const struct value *original_value, const struct value_print_options *options) { -Index: gdb-7.10.50.20151027/gdb/findvar.c +Index: gdb-7.11.50.20160716/gdb/findvar.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/findvar.c 2015-11-02 21:23:11.208351627 +0100 -+++ gdb-7.10.50.20151027/gdb/findvar.c 2015-11-02 21:23:13.217364846 +0100 -@@ -801,7 +801,7 @@ struct value * +--- gdb-7.11.50.20160716.orig/gdb/findvar.c 2016-07-16 14:33:42.088510399 +0200 ++++ gdb-7.11.50.20160716/gdb/findvar.c 2016-07-16 14:33:44.537530108 +0200 +@@ -802,7 +802,7 @@ default_value_from_register (struct gdbarch *gdbarch, struct type *type, int regnum, struct frame_id frame_id) { @@ -1990,21 +1855,16 @@ Index: gdb-7.10.50.20151027/gdb/findvar.c struct value *value = allocate_value (type); VALUE_LVAL (value) = lval_register; -@@ -834,10 +834,10 @@ void - read_frame_register_value (struct value *value, struct frame_info *frame) - { - struct gdbarch *gdbarch = get_frame_arch (frame); -- int offset = 0; -- int reg_offset = value_offset (value); -+ LONGEST offset = 0; -+ LONGEST reg_offset = value_offset (value); +@@ -838,7 +838,7 @@ + LONGEST offset = 0; + LONGEST reg_offset = value_offset (value); int regnum = VALUE_REGNUM (value); - int len = type_length_units (check_typedef (value_type (value))); + LONGEST len = type_length_units (check_typedef (value_type (value))); gdb_assert (VALUE_LVAL (value) == lval_register); -@@ -852,7 +852,7 @@ read_frame_register_value (struct value +@@ -853,7 +853,7 @@ while (len > 0) { struct value *regval = get_frame_register_value (frame, regnum); @@ -2013,11 +1873,11 @@ Index: gdb-7.10.50.20151027/gdb/findvar.c /* If the register length is larger than the number of bytes remaining to copy, then only copy the appropriate bytes. */ -Index: gdb-7.10.50.20151027/gdb/frame.c +Index: gdb-7.11.50.20160716/gdb/frame.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/frame.c 2015-11-02 21:23:11.208351627 +0100 -+++ gdb-7.10.50.20151027/gdb/frame.c 2015-11-02 21:23:13.218364852 +0100 -@@ -1272,7 +1272,7 @@ deprecated_frame_register_read (struct f +--- gdb-7.11.50.20160716.orig/gdb/frame.c 2016-07-16 14:33:42.089510407 +0200 ++++ gdb-7.11.50.20160716/gdb/frame.c 2016-07-16 14:33:44.538530116 +0200 +@@ -1320,7 +1320,7 @@ int get_frame_register_bytes (struct frame_info *frame, int regnum, @@ -2026,7 +1886,7 @@ Index: gdb-7.10.50.20151027/gdb/frame.c int *optimizedp, int *unavailablep) { struct gdbarch *gdbarch = get_frame_arch (frame); -@@ -1301,7 +1301,7 @@ get_frame_register_bytes (struct frame_i +@@ -1349,7 +1349,7 @@ } if (len > maxsize) error (_("Bad debug information detected: " @@ -2035,11 +1895,11 @@ Index: gdb-7.10.50.20151027/gdb/frame.c /* Copy the data. */ while (len > 0) -Index: gdb-7.10.50.20151027/gdb/frame.h +Index: gdb-7.11.50.20160716/gdb/frame.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/frame.h 2015-11-02 21:23:11.209351634 +0100 -+++ gdb-7.10.50.20151027/gdb/frame.h 2015-11-02 21:23:13.218364852 +0100 -@@ -585,7 +585,7 @@ extern void put_frame_register (struct f +--- gdb-7.11.50.20160716.orig/gdb/frame.h 2016-07-16 14:33:42.090510415 +0200 ++++ gdb-7.11.50.20160716/gdb/frame.h 2016-07-16 14:33:44.538530116 +0200 +@@ -585,7 +585,7 @@ contents are optimized out or unavailable, set *OPTIMIZEDP, *UNAVAILABLEP accordingly. */ extern int get_frame_register_bytes (struct frame_info *frame, int regnum, @@ -2048,11 +1908,11 @@ Index: gdb-7.10.50.20151027/gdb/frame.h gdb_byte *myaddr, int *optimizedp, int *unavailablep); -Index: gdb-7.10.50.20151027/gdb/gdbtypes.c +Index: gdb-7.11.50.20160716/gdb/gdbtypes.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/gdbtypes.c 2015-11-02 21:23:11.212351653 +0100 -+++ gdb-7.10.50.20151027/gdb/gdbtypes.c 2015-11-02 21:23:13.220364866 +0100 -@@ -2719,7 +2719,7 @@ allocate_gnat_aux_type (struct type *typ +--- gdb-7.11.50.20160716.orig/gdb/gdbtypes.c 2016-07-16 14:33:42.092510431 +0200 ++++ gdb-7.11.50.20160716/gdb/gdbtypes.c 2016-07-16 14:33:44.539530124 +0200 +@@ -2722,7 +2722,7 @@ least as long as OBJFILE. */ struct type * @@ -2061,7 +1921,7 @@ Index: gdb-7.10.50.20151027/gdb/gdbtypes.c const char *name, struct objfile *objfile) { struct type *type; -@@ -2959,8 +2959,8 @@ is_public_ancestor (struct type *base, s +@@ -2962,8 +2962,8 @@ static int is_unique_ancestor_worker (struct type *base, struct type *dclass, @@ -2072,7 +1932,7 @@ Index: gdb-7.10.50.20151027/gdb/gdbtypes.c CORE_ADDR address, struct value *val) { int i, count = 0; -@@ -2971,7 +2971,7 @@ is_unique_ancestor_worker (struct type * +@@ -2974,7 +2974,7 @@ for (i = 0; i < TYPE_N_BASECLASSES (dclass) && count < 2; ++i) { struct type *iter; @@ -2081,7 +1941,7 @@ Index: gdb-7.10.50.20151027/gdb/gdbtypes.c iter = check_typedef (TYPE_BASECLASS (dclass, i)); -@@ -3012,7 +3012,7 @@ is_unique_ancestor_worker (struct type * +@@ -3015,7 +3015,7 @@ int is_unique_ancestor (struct type *base, struct value *val) { @@ -2090,7 +1950,7 @@ Index: gdb-7.10.50.20151027/gdb/gdbtypes.c return is_unique_ancestor_worker (base, value_type (val), &offset, value_contents_for_printing (val), -@@ -4200,7 +4200,7 @@ recursive_dump_type (struct type *type, +@@ -4203,7 +4203,7 @@ break; } puts_filtered ("\n"); @@ -2099,40 +1959,20 @@ Index: gdb-7.10.50.20151027/gdb/gdbtypes.c if (TYPE_OBJFILE_OWNED (type)) { printfi_filtered (spaces, "objfile "); -@@ -4328,8 +4328,8 @@ recursive_dump_type (struct type *type, - idx, plongest (TYPE_FIELD_ENUMVAL (type, idx))); - else - printfi_filtered (spaces + 2, -- "[%d] bitpos %d bitsize %d type ", -- idx, TYPE_FIELD_BITPOS (type, idx), -+ "[%d] bitpos %s bitsize %d type ", -+ idx, plongest (TYPE_FIELD_BITPOS (type, idx)), - TYPE_FIELD_BITSIZE (type, idx)); - gdb_print_host_address (TYPE_FIELD_TYPE (type, idx), gdb_stdout); - printf_filtered (" name '%s' (", -@@ -4671,7 +4671,7 @@ copy_type (const struct type *type) +@@ -4663,7 +4663,7 @@ struct type * arch_type (struct gdbarch *gdbarch, -- enum type_code code, int length, char *name) -+ enum type_code code, LONGEST length, char *name) +- enum type_code code, int length, const char *name) ++ enum type_code code, LONGEST length, const char *name) { struct type *type; -Index: gdb-7.10.50.20151027/gdb/gdbtypes.h +Index: gdb-7.11.50.20160716/gdb/gdbtypes.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/gdbtypes.h 2015-11-02 21:23:11.213351660 +0100 -+++ gdb-7.10.50.20151027/gdb/gdbtypes.h 2015-11-02 21:23:13.220364866 +0100 -@@ -512,7 +512,7 @@ union field_location - gdbarch_bits_big_endian=0 targets, it is the bit offset to - the LSB. */ - -- int bitpos; -+ LONGEST bitpos; - - /* * Enum value. */ - LONGEST enumval; -@@ -822,7 +822,7 @@ struct type +--- gdb-7.11.50.20160716.orig/gdb/gdbtypes.h 2016-07-16 14:33:42.093510439 +0200 ++++ gdb-7.11.50.20160716/gdb/gdbtypes.h 2016-07-16 14:33:44.539530124 +0200 +@@ -806,7 +806,7 @@ type_length_units function should be used in order to get the length expressed in target addressable memory units. */ @@ -2141,7 +1981,7 @@ Index: gdb-7.10.50.20151027/gdb/gdbtypes.h /* * Core type, shared by a group of qualified types. */ -@@ -1717,11 +1717,12 @@ extern unsigned int type_length_units (s +@@ -1677,11 +1677,11 @@ /* * Helper function to construct objfile-owned types. */ @@ -2150,17 +1990,16 @@ Index: gdb-7.10.50.20151027/gdb/gdbtypes.h struct objfile *); /* Helper functions to construct architecture-owned types. */ --extern struct type *arch_type (struct gdbarch *, enum type_code, int, char *); +-extern struct type *arch_type (struct gdbarch *, enum type_code, int, +extern struct type *arch_type (struct gdbarch *, enum type_code, LONGEST, -+ char *); - extern struct type *arch_integer_type (struct gdbarch *, int, int, char *); - extern struct type *arch_character_type (struct gdbarch *, int, int, char *); - extern struct type *arch_boolean_type (struct gdbarch *, int, int, char *); -Index: gdb-7.10.50.20151027/gdb/gnu-v2-abi.c -=================================================================== ---- gdb-7.10.50.20151027.orig/gdb/gnu-v2-abi.c 2015-11-02 21:23:11.213351660 +0100 -+++ gdb-7.10.50.20151027/gdb/gnu-v2-abi.c 2015-11-02 21:23:13.221364872 +0100 -@@ -82,7 +82,7 @@ gnuv2_is_operator_name (const char *name + const char *); + extern struct type *arch_integer_type (struct gdbarch *, int, int, + const char *); +Index: gdb-7.11.50.20160716/gdb/gnu-v2-abi.c +=================================================================== +--- gdb-7.11.50.20160716.orig/gdb/gnu-v2-abi.c 2016-07-16 14:33:42.093510439 +0200 ++++ gdb-7.11.50.20160716/gdb/gnu-v2-abi.c 2016-07-16 14:33:44.539530124 +0200 +@@ -82,7 +82,7 @@ TYPE is the type in which F is located. */ static struct value * gnuv2_virtual_fn_field (struct value **arg1p, struct fn_field * f, int j, @@ -2169,40 +2008,26 @@ Index: gdb-7.10.50.20151027/gdb/gnu-v2-abi.c { struct value *arg1 = *arg1p; struct type *type1 = check_typedef (value_type (arg1)); -@@ -183,7 +183,8 @@ gnuv2_virtual_fn_field (struct value **a - - - static struct type * --gnuv2_value_rtti_type (struct value *v, int *full, int *top, int *using_enc) -+gnuv2_value_rtti_type (struct value *v, int *full, LONGEST *top, -+ int *using_enc) - { - struct type *known_type; - struct type *rtti_type; -@@ -338,9 +339,9 @@ vb_match (struct type *type, int index, +@@ -338,7 +338,7 @@ target). The result is the offset of the baseclass value relative to (the address of)(ARG) + OFFSET. */ -static int +static LONGEST gnuv2_baseclass_offset (struct type *type, int index, -- const bfd_byte *valaddr, int embedded_offset, -+ const bfd_byte *valaddr, LONGEST embedded_offset, + const bfd_byte *valaddr, LONGEST embedded_offset, CORE_ADDR address, const struct value *val) - { - struct type *basetype = TYPE_BASECLASS (type, index); -@@ -358,8 +359,8 @@ gnuv2_baseclass_offset (struct type *typ +@@ -358,8 +358,7 @@ if (vb_match (type, i, basetype)) { struct type *field_type; -- int field_offset; +- LONGEST field_offset; - int field_length; -+ LONGEST field_offset; -+ LONGEST field_length; ++ LONGEST field_offset, field_length; CORE_ADDR addr; field_type = check_typedef (TYPE_FIELD_TYPE (type, i)); -@@ -383,7 +384,7 @@ gnuv2_baseclass_offset (struct type *typ +@@ -383,7 +382,7 @@ /* Don't go through baseclass_offset, as that wraps exceptions, thus, inner exceptions would be wrapped more than once. */ @@ -2211,11 +2036,11 @@ Index: gdb-7.10.50.20151027/gdb/gnu-v2-abi.c gnuv2_baseclass_offset (type, i, valaddr, embedded_offset, address, val); -Index: gdb-7.10.50.20151027/gdb/gnu-v3-abi.c +Index: gdb-7.11.50.20160716/gdb/gnu-v3-abi.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/gnu-v3-abi.c 2015-11-02 21:23:11.214351667 +0100 -+++ gdb-7.10.50.20151027/gdb/gnu-v3-abi.c 2015-11-02 21:23:13.221364872 +0100 -@@ -108,7 +108,7 @@ build_gdb_vtable_type (struct gdbarch *a +--- gdb-7.11.50.20160716.orig/gdb/gnu-v3-abi.c 2016-07-16 14:33:42.094510447 +0200 ++++ gdb-7.11.50.20160716/gdb/gnu-v3-abi.c 2016-07-16 14:33:44.539530124 +0200 +@@ -108,7 +108,7 @@ { struct type *t; struct field *field_list, *field; @@ -2224,7 +2049,7 @@ Index: gdb-7.10.50.20151027/gdb/gnu-v3-abi.c struct type *void_ptr_type = builtin_type (arch)->builtin_data_ptr; -@@ -184,7 +184,7 @@ vtable_ptrdiff_type (struct gdbarch *gdb +@@ -184,7 +184,7 @@ /* Return the offset from the start of the imaginary `struct gdb_gnu_v3_abi_vtable' object to the vtable's "address point" (i.e., where objects' virtual table pointers point). */ @@ -2233,16 +2058,7 @@ Index: gdb-7.10.50.20151027/gdb/gnu-v3-abi.c vtable_address_point_offset (struct gdbarch *gdbarch) { struct type *vtable_type -@@ -286,7 +286,7 @@ gnuv3_get_vtable (struct gdbarch *gdbarc - - static struct type * - gnuv3_rtti_type (struct value *value, -- int *full_p, int *top_p, int *using_enc_p) -+ int *full_p, LONGEST *top_p, int *using_enc_p) - { - struct gdbarch *gdbarch; - struct type *values_type = check_typedef (value_type (value)); -@@ -411,7 +411,7 @@ gnuv3_get_virtual_fn (struct gdbarch *gd +@@ -411,7 +411,7 @@ static struct value * gnuv3_virtual_fn_field (struct value **value_p, struct fn_field *f, int j, @@ -2251,18 +2067,16 @@ Index: gdb-7.10.50.20151027/gdb/gnu-v3-abi.c { struct type *values_type = check_typedef (value_type (*value_p)); struct gdbarch *gdbarch; -@@ -441,16 +441,16 @@ gnuv3_virtual_fn_field (struct value **v +@@ -441,7 +441,7 @@ -1 is returned on error. */ -static int +static LONGEST gnuv3_baseclass_offset (struct type *type, int index, -- const bfd_byte *valaddr, int embedded_offset, -+ const bfd_byte *valaddr, LONGEST embedded_offset, + const bfd_byte *valaddr, LONGEST embedded_offset, CORE_ADDR address, const struct value *val) - { - struct gdbarch *gdbarch; +@@ -450,7 +450,7 @@ struct type *ptr_type; struct value *vtable; struct value *vbase_array; @@ -2271,7 +2085,7 @@ Index: gdb-7.10.50.20151027/gdb/gnu-v3-abi.c /* Determine architecture. */ gdbarch = get_type_arch (type); -@@ -474,7 +474,7 @@ gnuv3_baseclass_offset (struct type *typ +@@ -474,7 +474,7 @@ cur_base_offset = cur_base_offset + vtable_address_point_offset (gdbarch); if ((- cur_base_offset) % TYPE_LENGTH (ptr_type) != 0) error (_("Misaligned vbase offset.")); @@ -2280,7 +2094,7 @@ Index: gdb-7.10.50.20151027/gdb/gnu-v3-abi.c vtable = gnuv3_get_vtable (gdbarch, type, address + embedded_offset); gdb_assert (vtable != NULL); -@@ -518,7 +518,7 @@ gnuv3_find_method_in (struct type *domai +@@ -518,7 +518,7 @@ we're out of luck. */ for (i = 0; i < TYPE_N_BASECLASSES (domain); i++) { @@ -2289,11 +2103,11 @@ Index: gdb-7.10.50.20151027/gdb/gnu-v3-abi.c struct type *basetype; if (BASETYPE_VIA_VIRTUAL (domain, i)) -Index: gdb-7.10.50.20151027/gdb/go-lang.h +Index: gdb-7.11.50.20160716/gdb/go-lang.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/go-lang.h 2015-11-02 21:23:11.214351667 +0100 -+++ gdb-7.10.50.20151027/gdb/go-lang.h 2015-11-02 21:23:13.221364872 +0100 -@@ -85,7 +85,7 @@ extern void go_print_type (struct type * +--- gdb-7.11.50.20160716.orig/gdb/go-lang.h 2016-07-16 14:33:42.094510447 +0200 ++++ gdb-7.11.50.20160716/gdb/go-lang.h 2016-07-16 14:33:44.539530124 +0200 +@@ -85,7 +85,7 @@ /* Defined in go-valprint.c. */ extern void go_val_print (struct type *type, const gdb_byte *valaddr, @@ -2302,20 +2116,11 @@ Index: gdb-7.10.50.20151027/gdb/go-lang.h struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options); -Index: gdb-7.10.50.20151027/gdb/go-valprint.c +Index: gdb-7.11.50.20160716/gdb/go-valprint.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/go-valprint.c 2015-11-02 21:23:11.214351667 +0100 -+++ gdb-7.10.50.20151027/gdb/go-valprint.c 2015-11-02 21:23:13.222364879 +0100 -@@ -37,7 +37,7 @@ - - static void - print_go_string (struct type *type, const gdb_byte *valaddr, -- int embedded_offset, CORE_ADDR address, -+ LONGEST embedded_offset, CORE_ADDR address, - struct ui_file *stream, int recurse, - const struct value *val, - const struct value_print_options *options) -@@ -86,9 +86,9 @@ print_go_string (struct type *type, cons +--- gdb-7.11.50.20160716.orig/gdb/go-valprint.c 2016-07-16 14:33:42.094510447 +0200 ++++ gdb-7.11.50.20160716/gdb/go-valprint.c 2016-07-16 14:33:44.539530124 +0200 +@@ -86,9 +86,9 @@ /* Implements the la_val_print routine for language Go. */ void @@ -2328,11 +2133,11 @@ Index: gdb-7.10.50.20151027/gdb/go-valprint.c const struct value_print_options *options) { type = check_typedef (type); -Index: gdb-7.10.50.20151027/gdb/jv-lang.c +Index: gdb-7.11.50.20160716/gdb/jv-lang.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/jv-lang.c 2015-11-02 21:23:11.215351673 +0100 -+++ gdb-7.10.50.20151027/gdb/jv-lang.c 2015-11-02 21:23:13.222364879 +0100 -@@ -440,7 +440,7 @@ java_link_class_type (struct gdbarch *gd +--- gdb-7.11.50.20160716.orig/gdb/jv-lang.c 2016-07-16 14:33:42.094510447 +0200 ++++ gdb-7.11.50.20160716/gdb/jv-lang.c 2016-07-16 14:33:44.540530132 +0200 +@@ -440,7 +440,7 @@ for (i = TYPE_N_BASECLASSES (type); i < nfields; i++) { int accflags; @@ -2341,7 +2146,7 @@ Index: gdb-7.10.50.20151027/gdb/jv-lang.c if (fields == NULL) { -@@ -890,7 +890,7 @@ java_printchar (int c, struct type *type +@@ -890,7 +890,7 @@ static void java_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string, @@ -2350,11 +2155,11 @@ Index: gdb-7.10.50.20151027/gdb/jv-lang.c const struct value_print_options *options) { const char *type_encoding = java_get_encoding (type); -Index: gdb-7.10.50.20151027/gdb/jv-lang.h +Index: gdb-7.11.50.20160716/gdb/jv-lang.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/jv-lang.h 2015-11-02 21:23:11.215351673 +0100 -+++ gdb-7.10.50.20151027/gdb/jv-lang.h 2015-11-02 21:23:13.222364879 +0100 -@@ -43,8 +43,8 @@ struct builtin_java_type +--- gdb-7.11.50.20160716.orig/gdb/jv-lang.h 2016-07-16 14:33:42.094510447 +0200 ++++ gdb-7.11.50.20160716/gdb/jv-lang.h 2016-07-16 14:33:44.540530132 +0200 +@@ -43,8 +43,8 @@ extern const struct builtin_java_type *builtin_java_type (struct gdbarch *); @@ -2365,20 +2170,11 @@ Index: gdb-7.10.50.20151027/gdb/jv-lang.h const struct value *, const struct value_print_options *); -Index: gdb-7.10.50.20151027/gdb/jv-valprint.c +Index: gdb-7.11.50.20160716/gdb/jv-valprint.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/jv-valprint.c 2015-11-02 21:23:11.215351673 +0100 -+++ gdb-7.10.50.20151027/gdb/jv-valprint.c 2015-11-02 21:23:13.222364879 +0100 -@@ -266,7 +266,7 @@ java_value_print (struct value *val, str - - static void - java_print_value_fields (struct type *type, const gdb_byte *valaddr, -- int offset, -+ LONGEST offset, - CORE_ADDR address, struct ui_file *stream, - int recurse, - const struct value *val, -@@ -454,7 +454,7 @@ java_print_value_fields (struct type *ty +--- gdb-7.11.50.20160716.orig/gdb/jv-valprint.c 2016-07-16 14:33:42.095510455 +0200 ++++ gdb-7.11.50.20160716/gdb/jv-valprint.c 2016-07-16 14:33:44.540530132 +0200 +@@ -454,7 +454,7 @@ void java_val_print (struct type *type, const gdb_byte *valaddr, @@ -2387,11 +2183,11 @@ Index: gdb-7.10.50.20151027/gdb/jv-valprint.c struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options) -Index: gdb-7.10.50.20151027/gdb/language.c +Index: gdb-7.11.50.20160716/gdb/language.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/language.c 2015-11-02 21:23:11.216351680 +0100 -+++ gdb-7.10.50.20151027/gdb/language.c 2015-11-02 21:23:13.223364885 +0100 -@@ -739,7 +739,7 @@ unk_lang_printchar (int c, struct type * +--- gdb-7.11.50.20160716.orig/gdb/language.c 2016-07-16 14:33:42.095510455 +0200 ++++ gdb-7.11.50.20160716/gdb/language.c 2016-07-16 14:33:44.540530132 +0200 +@@ -766,7 +766,7 @@ static void unk_lang_printstr (struct ui_file *stream, struct type *type, @@ -2400,7 +2196,7 @@ Index: gdb-7.10.50.20151027/gdb/language.c const char *encoding, int force_ellipses, const struct value_print_options *options) { -@@ -758,7 +758,7 @@ unk_lang_print_type (struct type *type, +@@ -785,7 +785,7 @@ static void unk_lang_val_print (struct type *type, const gdb_byte *valaddr, @@ -2409,11 +2205,11 @@ Index: gdb-7.10.50.20151027/gdb/language.c struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options) -Index: gdb-7.10.50.20151027/gdb/language.h +Index: gdb-7.11.50.20160716/gdb/language.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/language.h 2015-11-02 21:23:11.216351680 +0100 -+++ gdb-7.10.50.20151027/gdb/language.h 2015-11-02 21:23:13.223364885 +0100 -@@ -189,7 +189,7 @@ struct language_defn +--- gdb-7.11.50.20160716.orig/gdb/language.h 2016-07-16 14:33:42.095510455 +0200 ++++ gdb-7.11.50.20160716/gdb/language.h 2016-07-16 14:33:44.540530132 +0200 +@@ -196,7 +196,7 @@ struct ui_file * stream); void (*la_printstr) (struct ui_file * stream, struct type *elttype, @@ -2422,7 +2218,7 @@ Index: gdb-7.10.50.20151027/gdb/language.h const char *encoding, int force_ellipses, const struct value_print_options *); -@@ -231,7 +231,7 @@ struct language_defn +@@ -238,7 +238,7 @@ void (*la_val_print) (struct type *type, const gdb_byte *contents, @@ -2431,11 +2227,11 @@ Index: gdb-7.10.50.20151027/gdb/language.h struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options); -Index: gdb-7.10.50.20151027/gdb/m2-lang.c +Index: gdb-7.11.50.20160716/gdb/m2-lang.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/m2-lang.c 2015-11-02 21:23:11.217351686 +0100 -+++ gdb-7.10.50.20151027/gdb/m2-lang.c 2015-11-02 21:23:13.223364885 +0100 -@@ -104,10 +104,10 @@ m2_printchar (int c, struct type *type, +--- gdb-7.11.50.20160716.orig/gdb/m2-lang.c 2016-07-16 14:33:42.096510463 +0200 ++++ gdb-7.11.50.20160716/gdb/m2-lang.c 2016-07-16 14:33:44.540530132 +0200 +@@ -104,10 +104,10 @@ static void m2_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string, @@ -2448,7 +2244,7 @@ Index: gdb-7.10.50.20151027/gdb/m2-lang.c unsigned int things_printed = 0; int in_quotes = 0; int need_comma = 0; -@@ -122,9 +122,9 @@ m2_printstr (struct ui_file *stream, str +@@ -122,9 +122,9 @@ { /* Position of the character we are examining to see whether it is repeated. */ @@ -2460,7 +2256,7 @@ Index: gdb-7.10.50.20151027/gdb/m2-lang.c QUIT; -@@ -150,7 +150,7 @@ m2_printstr (struct ui_file *stream, str +@@ -150,7 +150,7 @@ in_quotes = 0; } m2_printchar (string[i], type, stream); @@ -2469,11 +2265,11 @@ Index: gdb-7.10.50.20151027/gdb/m2-lang.c i = rep1 - 1; things_printed += options->repeat_count_threshold; need_comma = 1; -Index: gdb-7.10.50.20151027/gdb/m2-lang.h +Index: gdb-7.11.50.20160716/gdb/m2-lang.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/m2-lang.h 2015-11-02 21:23:11.217351686 +0100 -+++ gdb-7.10.50.20151027/gdb/m2-lang.h 2015-11-02 21:23:13.223364885 +0100 -@@ -34,7 +34,7 @@ extern void m2_print_typedef (struct typ +--- gdb-7.11.50.20160716.orig/gdb/m2-lang.h 2016-07-16 14:33:42.096510463 +0200 ++++ gdb-7.11.50.20160716/gdb/m2-lang.h 2016-07-16 14:33:44.540530132 +0200 +@@ -34,7 +34,7 @@ extern int m2_is_long_set (struct type *type); extern int m2_is_unbounded_array (struct type *type); @@ -2482,11 +2278,11 @@ Index: gdb-7.10.50.20151027/gdb/m2-lang.h struct ui_file *, int, const struct value *, const struct value_print_options *); -Index: gdb-7.10.50.20151027/gdb/m2-typeprint.c +Index: gdb-7.11.50.20160716/gdb/m2-typeprint.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/m2-typeprint.c 2015-11-02 21:23:11.217351686 +0100 -+++ gdb-7.10.50.20151027/gdb/m2-typeprint.c 2015-11-02 21:23:13.224364892 +0100 -@@ -234,9 +234,12 @@ static void m2_array (struct type *type, +--- gdb-7.11.50.20160716.orig/gdb/m2-typeprint.c 2016-07-16 14:33:42.096510463 +0200 ++++ gdb-7.11.50.20160716/gdb/m2-typeprint.c 2016-07-16 14:33:44.541530140 +0200 +@@ -234,9 +234,12 @@ m2_print_bounds (TYPE_INDEX_TYPE (type), stream, show, -1, 1); } else @@ -2502,11 +2298,11 @@ Index: gdb-7.10.50.20151027/gdb/m2-typeprint.c } fprintf_filtered (stream, "] OF "); m2_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level, flags); -Index: gdb-7.10.50.20151027/gdb/m2-valprint.c +Index: gdb-7.11.50.20160716/gdb/m2-valprint.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/m2-valprint.c 2015-11-02 21:23:11.217351686 +0100 -+++ gdb-7.10.50.20151027/gdb/m2-valprint.c 2015-11-02 21:23:13.224364892 +0100 -@@ -35,7 +35,7 @@ static int print_unpacked_pointer (struc +--- gdb-7.11.50.20160716.orig/gdb/m2-valprint.c 2016-07-16 14:33:42.096510463 +0200 ++++ gdb-7.11.50.20160716/gdb/m2-valprint.c 2016-07-16 14:35:19.830297013 +0200 +@@ -35,7 +35,7 @@ struct ui_file *stream); static void m2_print_array_contents (struct type *type, const gdb_byte *valaddr, @@ -2515,7 +2311,7 @@ Index: gdb-7.10.50.20151027/gdb/m2-valprint.c struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options, -@@ -67,7 +67,7 @@ get_long_set_bounds (struct type *type, +@@ -67,7 +67,7 @@ static void m2_print_long_set (struct type *type, const gdb_byte *valaddr, @@ -2524,7 +2320,7 @@ Index: gdb-7.10.50.20151027/gdb/m2-valprint.c struct ui_file *stream) { int empty_set = 1; -@@ -158,7 +158,7 @@ m2_print_long_set (struct type *type, co +@@ -158,7 +158,7 @@ static void m2_print_unbounded_array (struct type *type, const gdb_byte *valaddr, @@ -2533,7 +2329,7 @@ Index: gdb-7.10.50.20151027/gdb/m2-valprint.c struct ui_file *stream, int recurse, const struct value_print_options *options) { -@@ -262,7 +262,7 @@ print_variable_at_address (struct type * +@@ -260,7 +260,7 @@ static void m2_print_array_contents (struct type *type, const gdb_byte *valaddr, @@ -2542,27 +2338,23 @@ Index: gdb-7.10.50.20151027/gdb/m2-valprint.c struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options, -@@ -308,14 +308,15 @@ static const struct generic_val_print_de +@@ -308,13 +308,13 @@ function; they are identical. */ void -m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, -- CORE_ADDR address, struct ui_file *stream, int recurse, -+m2_val_print (struct type *type, const gdb_byte *valaddr, -+ LONGEST embedded_offset, CORE_ADDR address, -+ struct ui_file *stream, int recurse, ++m2_val_print (struct type *type, const gdb_byte *valaddr, LONGEST embedded_offset, + CORE_ADDR address, struct ui_file *stream, int recurse, const struct value *original_value, const struct value_print_options *options) { struct gdbarch *gdbarch = get_type_arch (type); -- unsigned int i = 0; /* Number of characters printed. */ - unsigned len; -+ ULONGEST i = 0; /* Number of characters printed. */ + ULONGEST len; struct type *elttype; CORE_ADDR addr; -@@ -340,7 +341,7 @@ m2_val_print (struct type *type, const g +@@ -339,7 +339,7 @@ elements up to it. */ if (options->stop_print_at_null) { @@ -2571,10 +2363,19 @@ Index: gdb-7.10.50.20151027/gdb/m2-valprint.c /* Look for a NULL char. */ for (temp_len = 0; -Index: gdb-7.10.50.20151027/gdb/memrange.c +@@ -415,7 +415,7 @@ + { + struct type *range = elttype; + LONGEST low_bound, high_bound; +- int i; ++ LONGEST i; + int need_comma = 0; + + fputs_filtered ("{", stream); +Index: gdb-7.11.50.20160716/gdb/memrange.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/memrange.c 2015-11-02 21:23:11.218351693 +0100 -+++ gdb-7.10.50.20151027/gdb/memrange.c 2015-11-02 21:23:13.224364892 +0100 +--- gdb-7.11.50.20160716.orig/gdb/memrange.c 2016-07-16 14:33:42.096510463 +0200 ++++ gdb-7.11.50.20160716/gdb/memrange.c 2016-07-16 14:33:44.541530140 +0200 @@ -21,8 +21,8 @@ #include "memrange.h" @@ -2586,11 +2387,11 @@ Index: gdb-7.10.50.20151027/gdb/memrange.c { ULONGEST h, l; -Index: gdb-7.10.50.20151027/gdb/memrange.h +Index: gdb-7.11.50.20160716/gdb/memrange.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/memrange.h 2015-11-02 21:23:11.218351693 +0100 -+++ gdb-7.10.50.20151027/gdb/memrange.h 2015-11-02 21:23:13.224364892 +0100 -@@ -30,7 +30,7 @@ struct mem_range +--- gdb-7.11.50.20160716.orig/gdb/memrange.h 2016-07-16 14:33:42.097510471 +0200 ++++ gdb-7.11.50.20160716/gdb/memrange.h 2016-07-16 14:33:44.541530140 +0200 +@@ -30,7 +30,7 @@ CORE_ADDR start; /* Length of the range. */ @@ -2599,7 +2400,7 @@ Index: gdb-7.10.50.20151027/gdb/memrange.h }; typedef struct mem_range mem_range_s; -@@ -40,8 +40,8 @@ DEF_VEC_O(mem_range_s); +@@ -40,8 +40,8 @@ /* Returns true if the ranges defined by [start1, start1+len1) and [start2, start2+len2) overlap. */ @@ -2610,11 +2411,11 @@ Index: gdb-7.10.50.20151027/gdb/memrange.h /* Returns true if ADDR is in RANGE. */ -Index: gdb-7.10.50.20151027/gdb/mips-linux-nat.c +Index: gdb-7.11.50.20160716/gdb/mips-linux-nat.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/mips-linux-nat.c 2015-11-02 21:23:11.218351693 +0100 -+++ gdb-7.10.50.20151027/gdb/mips-linux-nat.c 2015-11-02 21:23:13.225364899 +0100 -@@ -587,7 +587,7 @@ mips_linux_stopped_data_address (struct +--- gdb-7.11.50.20160716.orig/gdb/mips-linux-nat.c 2016-07-16 14:33:42.097510471 +0200 ++++ gdb-7.11.50.20160716/gdb/mips-linux-nat.c 2016-07-16 14:33:44.541530140 +0200 +@@ -587,7 +587,7 @@ static int mips_linux_region_ok_for_hw_watchpoint (struct target_ops *self, @@ -2623,11 +2424,11 @@ Index: gdb-7.10.50.20151027/gdb/mips-linux-nat.c { struct pt_watch_regs dummy_regs; int i; -Index: gdb-7.10.50.20151027/gdb/opencl-lang.c +Index: gdb-7.11.50.20160716/gdb/opencl-lang.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/opencl-lang.c 2015-11-02 21:23:11.219351699 +0100 -+++ gdb-7.10.50.20151027/gdb/opencl-lang.c 2015-11-02 21:23:13.225364899 +0100 -@@ -78,11 +78,11 @@ builtin_opencl_type (struct gdbarch *gdb +--- gdb-7.11.50.20160716.orig/gdb/opencl-lang.c 2016-07-16 14:33:42.097510471 +0200 ++++ gdb-7.11.50.20160716/gdb/opencl-lang.c 2016-07-16 14:33:44.541530140 +0200 +@@ -78,11 +78,11 @@ static struct type * lookup_opencl_vector_type (struct gdbarch *gdbarch, enum type_code code, @@ -2641,37 +2442,29 @@ Index: gdb-7.10.50.20151027/gdb/opencl-lang.c struct type *type = NULL; struct type **types = builtin_opencl_type (gdbarch); -@@ -172,9 +172,9 @@ lval_func_read (struct value *v) - struct lval_closure *c = (struct lval_closure *) value_computed_closure (v); - struct type *type = check_typedef (value_type (v)); +@@ -174,7 +174,7 @@ struct type *eltype = TYPE_TARGET_TYPE (check_typedef (value_type (c->val))); -- int offset = value_offset (v); -- int elsize = TYPE_LENGTH (eltype); + LONGEST offset = value_offset (v); + LONGEST elsize = TYPE_LENGTH (eltype); - int n, i, j = 0; -+ LONGEST offset = value_offset (v); -+ LONGEST elsize = TYPE_LENGTH (eltype); + LONGEST n, i, j = 0; LONGEST lowb = 0; LONGEST highb = 0; -@@ -201,9 +201,9 @@ lval_func_write (struct value *v, struct - struct lval_closure *c = (struct lval_closure *) value_computed_closure (v); - struct type *type = check_typedef (value_type (v)); +@@ -203,7 +203,7 @@ struct type *eltype = TYPE_TARGET_TYPE (check_typedef (value_type (c->val))); -- int offset = value_offset (v); -- int elsize = TYPE_LENGTH (eltype); + LONGEST offset = value_offset (v); + LONGEST elsize = TYPE_LENGTH (eltype); - int n, i, j = 0; -+ LONGEST offset = value_offset (v); -+ LONGEST elsize = TYPE_LENGTH (eltype); + LONGEST n, i, j = 0; LONGEST lowb = 0; LONGEST highb = 0; -@@ -243,17 +243,17 @@ lval_func_write (struct value *v, struct +@@ -243,17 +243,17 @@ static int lval_func_check_synthetic_pointer (const struct value *v, -- int offset, int length) +- LONGEST offset, int length) + LONGEST offset, LONGEST length) { struct lval_closure *c = (struct lval_closure *) value_computed_closure (v); @@ -2692,7 +2485,7 @@ Index: gdb-7.10.50.20151027/gdb/opencl-lang.c if (endrest) end++; -@@ -263,8 +263,8 @@ lval_func_check_synthetic_pointer (const +@@ -263,8 +263,8 @@ for (i = start; i < end; i++) { @@ -2703,11 +2496,11 @@ Index: gdb-7.10.50.20151027/gdb/opencl-lang.c if (!value_bits_synthetic_pointer (c->val, c->indices[i] * elsize + comp_offset, -Index: gdb-7.10.50.20151027/gdb/p-lang.c +Index: gdb-7.11.50.20160716/gdb/p-lang.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/p-lang.c 2015-11-02 21:23:11.219351699 +0100 -+++ gdb-7.10.50.20151027/gdb/p-lang.c 2015-11-02 21:23:13.225364899 +0100 -@@ -95,8 +95,8 @@ pascal_main_name (void) +--- gdb-7.11.50.20160716.orig/gdb/p-lang.c 2016-07-16 14:33:42.098510479 +0200 ++++ gdb-7.11.50.20160716/gdb/p-lang.c 2016-07-16 14:33:44.542530148 +0200 +@@ -95,8 +95,8 @@ are not multiple of TARGET_CHAR_BIT then the results are wrong but this does not happen for Free Pascal nor for GPC. */ int @@ -2718,7 +2511,7 @@ Index: gdb-7.10.50.20151027/gdb/p-lang.c struct type **char_type, const char **arrayname) { -@@ -216,12 +216,12 @@ pascal_printchar (int c, struct type *ty +@@ -216,12 +216,12 @@ void pascal_printstr (struct ui_file *stream, struct type *type, @@ -2733,7 +2526,7 @@ Index: gdb-7.10.50.20151027/gdb/p-lang.c unsigned int things_printed = 0; int in_quotes = 0; int need_comma = 0; -@@ -249,9 +249,9 @@ pascal_printstr (struct ui_file *stream, +@@ -249,9 +249,9 @@ { /* Position of the character we are examining to see whether it is repeated. */ @@ -2745,7 +2538,7 @@ Index: gdb-7.10.50.20151027/gdb/p-lang.c unsigned long int current_char; QUIT; -@@ -283,7 +283,7 @@ pascal_printstr (struct ui_file *stream, +@@ -283,7 +283,7 @@ in_quotes = 0; } pascal_printchar (current_char, type, stream); @@ -2754,11 +2547,11 @@ Index: gdb-7.10.50.20151027/gdb/p-lang.c i = rep1 - 1; things_printed += options->repeat_count_threshold; need_comma = 1; -Index: gdb-7.10.50.20151027/gdb/p-lang.h +Index: gdb-7.11.50.20160716/gdb/p-lang.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/p-lang.h 2015-11-02 21:23:11.219351699 +0100 -+++ gdb-7.10.50.20151027/gdb/p-lang.h 2015-11-02 21:23:13.226364905 +0100 -@@ -36,7 +36,7 @@ extern void pascal_print_type (struct ty +--- gdb-7.11.50.20160716.orig/gdb/p-lang.h 2016-07-16 14:33:42.098510479 +0200 ++++ gdb-7.11.50.20160716/gdb/p-lang.h 2016-07-16 14:33:44.542530148 +0200 +@@ -36,7 +36,7 @@ extern void pascal_print_typedef (struct type *, struct symbol *, struct ui_file *); @@ -2767,7 +2560,7 @@ Index: gdb-7.10.50.20151027/gdb/p-lang.h CORE_ADDR, struct ui_file *, int, const struct value *, const struct value_print_options *); -@@ -50,13 +50,13 @@ extern void pascal_type_print_method_arg +@@ -50,13 +50,13 @@ /* These are in p-lang.c: */ extern int @@ -2783,20 +2576,11 @@ Index: gdb-7.10.50.20151027/gdb/p-lang.h const struct value_print_options *); extern struct type **const (pascal_builtin_types[]); -@@ -72,7 +72,7 @@ extern void - const struct type_print_options *); - - extern void pascal_object_print_value_fields (struct type *, const gdb_byte *, -- int, -+ LONGEST, - CORE_ADDR, struct ui_file *, - int, - const struct value *, -Index: gdb-7.10.50.20151027/gdb/p-valprint.c +Index: gdb-7.11.50.20160716/gdb/p-valprint.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/p-valprint.c 2015-11-02 21:23:11.220351706 +0100 -+++ gdb-7.10.50.20151027/gdb/p-valprint.c 2015-11-02 21:23:13.226364905 +0100 -@@ -57,7 +57,7 @@ static const struct generic_val_print_de +--- gdb-7.11.50.20160716.orig/gdb/p-valprint.c 2016-07-16 14:33:42.098510479 +0200 ++++ gdb-7.11.50.20160716/gdb/p-valprint.c 2016-07-16 14:33:44.542530148 +0200 +@@ -59,7 +59,7 @@ void pascal_val_print (struct type *type, const gdb_byte *valaddr, @@ -2805,7 +2589,7 @@ Index: gdb-7.10.50.20151027/gdb/p-valprint.c struct ui_file *stream, int recurse, const struct value *original_value, const struct value_print_options *options) -@@ -68,8 +68,8 @@ pascal_val_print (struct type *type, con +@@ -70,8 +70,8 @@ unsigned len; LONGEST low_bound, high_bound; struct type *elttype; @@ -2816,52 +2600,11 @@ Index: gdb-7.10.50.20151027/gdb/p-valprint.c struct type *char_type; CORE_ADDR addr; int want_space = 0; -@@ -467,7 +467,7 @@ static void pascal_object_print_static_f - const struct value_print_options *); - - static void pascal_object_print_value (struct type *, const gdb_byte *, -- int, -+ LONGEST, - CORE_ADDR, struct ui_file *, int, - const struct value *, - const struct value_print_options *, -@@ -526,7 +526,7 @@ pascal_object_is_vtbl_member (struct typ - - void - pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr, -- int offset, -+ LONGEST offset, - CORE_ADDR address, struct ui_file *stream, - int recurse, - const struct value *val, -@@ -697,7 +697,7 @@ pascal_object_print_value_fields (struct - - static void - pascal_object_print_value (struct type *type, const gdb_byte *valaddr, -- int offset, -+ LONGEST offset, - CORE_ADDR address, struct ui_file *stream, - int recurse, - const struct value *val, -@@ -720,11 +720,11 @@ pascal_object_print_value (struct type * - - for (i = 0; i < n_baseclasses; i++) - { -- int boffset = 0; -+ LONGEST boffset = 0; - struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i)); - const char *basename = type_name_no_tag (baseclass); - const gdb_byte *base_valaddr = NULL; -- int thisoffset; -+ LONGEST thisoffset; - int skip = 0; - - if (BASETYPE_VIA_VIRTUAL (type, i)) -Index: gdb-7.10.50.20151027/gdb/ppc-linux-nat.c +Index: gdb-7.11.50.20160716/gdb/ppc-linux-nat.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/ppc-linux-nat.c 2015-11-02 21:23:11.221351713 +0100 -+++ gdb-7.10.50.20151027/gdb/ppc-linux-nat.c 2015-11-02 21:23:13.227364912 +0100 -@@ -1449,7 +1449,7 @@ ppc_linux_can_use_hw_breakpoint (struct +--- gdb-7.11.50.20160716.orig/gdb/ppc-linux-nat.c 2016-07-16 14:33:42.099510487 +0200 ++++ gdb-7.11.50.20160716/gdb/ppc-linux-nat.c 2016-07-16 14:33:44.542530148 +0200 +@@ -1449,7 +1449,7 @@ static int ppc_linux_region_ok_for_hw_watchpoint (struct target_ops *self, @@ -2870,11 +2613,11 @@ Index: gdb-7.10.50.20151027/gdb/ppc-linux-nat.c { /* Handle sub-8-byte quantities. */ if (len <= 0) -Index: gdb-7.10.50.20151027/gdb/printcmd.c +Index: gdb-7.11.50.20160716/gdb/printcmd.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/printcmd.c 2015-11-02 21:23:11.221351713 +0100 -+++ gdb-7.10.50.20151027/gdb/printcmd.c 2015-11-02 21:23:13.227364912 +0100 -@@ -274,7 +274,7 @@ print_formatted (struct value *val, int +--- gdb-7.11.50.20160716.orig/gdb/printcmd.c 2016-07-16 14:33:42.099510487 +0200 ++++ gdb-7.11.50.20160716/gdb/printcmd.c 2016-07-16 14:33:44.543530156 +0200 +@@ -279,7 +279,7 @@ struct ui_file *stream) { struct type *type = check_typedef (value_type (val)); @@ -2883,7 +2626,7 @@ Index: gdb-7.10.50.20151027/gdb/printcmd.c if (VALUE_LVAL (val) == lval_memory) next_address = value_address (val) + len; -@@ -352,7 +352,7 @@ print_scalar_formatted (const gdb_byte * +@@ -357,7 +357,7 @@ { struct gdbarch *gdbarch = get_type_arch (type); LONGEST val_long = 0; @@ -2892,11 +2635,11 @@ Index: gdb-7.10.50.20151027/gdb/printcmd.c enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); /* String printing should go through val_print_scalar_formatted. */ -Index: gdb-7.10.50.20151027/gdb/procfs.c +Index: gdb-7.11.50.20160716/gdb/procfs.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/procfs.c 2015-11-02 21:23:11.223351726 +0100 -+++ gdb-7.10.50.20151027/gdb/procfs.c 2015-11-02 21:23:13.228364918 +0100 -@@ -4863,7 +4863,7 @@ procfs_remove_watchpoint (struct target_ +--- gdb-7.11.50.20160716.orig/gdb/procfs.c 2016-07-16 14:33:42.100510495 +0200 ++++ gdb-7.11.50.20160716/gdb/procfs.c 2016-07-16 14:33:44.543530156 +0200 +@@ -4863,7 +4863,7 @@ static int procfs_region_ok_for_hw_watchpoint (struct target_ops *self, @@ -2905,24 +2648,11 @@ Index: gdb-7.10.50.20151027/gdb/procfs.c { /* The man page for proc(4) on Solaris 2.6 and up says that the system can support "thousands" of hardware watchpoints, but gives -Index: gdb-7.10.50.20151027/gdb/python/py-prettyprint.c +Index: gdb-7.11.50.20160716/gdb/regcache.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/python/py-prettyprint.c 2015-11-02 21:23:11.223351726 +0100 -+++ gdb-7.10.50.20151027/gdb/python/py-prettyprint.c 2015-11-02 21:23:13.229364925 +0100 -@@ -703,7 +703,7 @@ print_children (PyObject *printer, const - enum ext_lang_rc - gdbpy_apply_val_pretty_printer (const struct extension_language_defn *extlang, - struct type *type, const gdb_byte *valaddr, -- int embedded_offset, CORE_ADDR address, -+ LONGEST embedded_offset, CORE_ADDR address, - struct ui_file *stream, int recurse, - const struct value *val, - const struct value_print_options *options, -Index: gdb-7.10.50.20151027/gdb/regcache.c -=================================================================== ---- gdb-7.10.50.20151027.orig/gdb/regcache.c 2015-11-02 21:23:11.224351732 +0100 -+++ gdb-7.10.50.20151027/gdb/regcache.c 2015-11-02 21:23:13.229364925 +0100 -@@ -958,7 +958,7 @@ typedef void (regcache_write_ftype) (str +--- gdb-7.11.50.20160716.orig/gdb/regcache.c 2016-07-16 14:33:42.101510503 +0200 ++++ gdb-7.11.50.20160716/gdb/regcache.c 2016-07-16 14:33:44.544530165 +0200 +@@ -967,7 +967,7 @@ static enum register_status regcache_xfer_part (struct regcache *regcache, int regnum, @@ -2931,7 +2661,7 @@ Index: gdb-7.10.50.20151027/gdb/regcache.c enum register_status (*read) (struct regcache *regcache, int regnum, gdb_byte *buf), -@@ -1002,7 +1002,7 @@ regcache_xfer_part (struct regcache *reg +@@ -1011,7 +1011,7 @@ enum register_status regcache_raw_read_part (struct regcache *regcache, int regnum, @@ -2940,7 +2670,7 @@ Index: gdb-7.10.50.20151027/gdb/regcache.c { struct regcache_descr *descr = regcache->descr; -@@ -1013,7 +1013,7 @@ regcache_raw_read_part (struct regcache +@@ -1022,7 +1022,7 @@ void regcache_raw_write_part (struct regcache *regcache, int regnum, @@ -2949,7 +2679,7 @@ Index: gdb-7.10.50.20151027/gdb/regcache.c { struct regcache_descr *descr = regcache->descr; -@@ -1024,7 +1024,7 @@ regcache_raw_write_part (struct regcache +@@ -1033,7 +1033,7 @@ enum register_status regcache_cooked_read_part (struct regcache *regcache, int regnum, @@ -2958,7 +2688,7 @@ Index: gdb-7.10.50.20151027/gdb/regcache.c { struct regcache_descr *descr = regcache->descr; -@@ -1035,7 +1035,7 @@ regcache_cooked_read_part (struct regcac +@@ -1044,7 +1044,7 @@ void regcache_cooked_write_part (struct regcache *regcache, int regnum, @@ -2967,11 +2697,11 @@ Index: gdb-7.10.50.20151027/gdb/regcache.c { struct regcache_descr *descr = regcache->descr; -Index: gdb-7.10.50.20151027/gdb/regcache.h +Index: gdb-7.11.50.20160716/gdb/regcache.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/regcache.h 2015-11-02 21:23:11.224351732 +0100 -+++ gdb-7.10.50.20151027/gdb/regcache.h 2015-11-02 21:23:13.230364931 +0100 -@@ -92,9 +92,9 @@ extern void regcache_raw_write_unsigned +--- gdb-7.11.50.20160716.orig/gdb/regcache.h 2016-07-16 14:33:42.101510503 +0200 ++++ gdb-7.11.50.20160716/gdb/regcache.h 2016-07-16 14:33:44.544530165 +0200 +@@ -80,9 +80,9 @@ extern enum register_status regcache_raw_read_part (struct regcache *regcache, int regnum, @@ -2983,7 +2713,7 @@ Index: gdb-7.10.50.20151027/gdb/regcache.h void regcache_invalidate (struct regcache *regcache, int regnum); -@@ -131,10 +131,11 @@ extern void regcache_cooked_write_unsign +@@ -119,10 +119,11 @@ write style operations. */ enum register_status regcache_cooked_read_part (struct regcache *regcache, @@ -2998,11 +2728,11 @@ Index: gdb-7.10.50.20151027/gdb/regcache.h /* Special routines to read/write the PC. */ -Index: gdb-7.10.50.20151027/gdb/remote.c +Index: gdb-7.11.50.20160716/gdb/remote.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/remote.c 2015-11-02 21:23:11.227351752 +0100 -+++ gdb-7.10.50.20151027/gdb/remote.c 2015-11-02 21:23:13.232364945 +0100 -@@ -9157,7 +9157,7 @@ int remote_hw_breakpoint_limit = -1; +--- gdb-7.11.50.20160716.orig/gdb/remote.c 2016-07-16 14:33:42.104510527 +0200 ++++ gdb-7.11.50.20160716/gdb/remote.c 2016-07-16 14:33:44.545530172 +0200 +@@ -9473,7 +9473,7 @@ static int remote_region_ok_for_hw_watchpoint (struct target_ops *self, @@ -3011,11 +2741,11 @@ Index: gdb-7.10.50.20151027/gdb/remote.c { if (remote_hw_watchpoint_length_limit == 0) return 0; -Index: gdb-7.10.50.20151027/gdb/spu-multiarch.c +Index: gdb-7.11.50.20160716/gdb/spu-multiarch.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/spu-multiarch.c 2015-11-02 21:23:11.228351759 +0100 -+++ gdb-7.10.50.20151027/gdb/spu-multiarch.c 2015-11-02 21:23:13.233364951 +0100 -@@ -127,7 +127,7 @@ spu_thread_architecture (struct target_o +--- gdb-7.11.50.20160716.orig/gdb/spu-multiarch.c 2016-07-16 14:33:42.105510536 +0200 ++++ gdb-7.11.50.20160716/gdb/spu-multiarch.c 2016-07-16 14:33:44.545530172 +0200 +@@ -127,7 +127,7 @@ /* Override the to_region_ok_for_hw_watchpoint routine. */ static int spu_region_ok_for_hw_watchpoint (struct target_ops *self, @@ -3024,11 +2754,11 @@ Index: gdb-7.10.50.20151027/gdb/spu-multiarch.c { struct target_ops *ops_beneath = find_target_beneath (self); -Index: gdb-7.10.50.20151027/gdb/stack.c +Index: gdb-7.11.50.20160716/gdb/stack.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/stack.c 2015-11-02 21:23:11.229351765 +0100 -+++ gdb-7.10.50.20151027/gdb/stack.c 2015-11-02 21:23:13.233364951 +0100 -@@ -176,7 +176,7 @@ print_stack_frame (struct frame_info *fr +--- gdb-7.11.50.20160716.orig/gdb/stack.c 2016-07-16 14:33:42.106510544 +0200 ++++ gdb-7.11.50.20160716/gdb/stack.c 2016-07-16 14:33:44.546530181 +0200 +@@ -176,7 +176,7 @@ argument (not just the first nameless argument). */ static void @@ -3037,7 +2767,7 @@ Index: gdb-7.10.50.20151027/gdb/stack.c int first, struct ui_file *stream) { struct gdbarch *gdbarch = get_frame_arch (frame); -@@ -539,7 +539,7 @@ print_frame_args (struct symbol *func, s +@@ -537,7 +537,7 @@ /* Offset of next stack argument beyond the one we have seen that is at the highest offset, or -1 if we haven't come to a stack argument yet. */ @@ -3046,7 +2776,7 @@ Index: gdb-7.10.50.20151027/gdb/stack.c /* Number of ints of arguments that we have printed so far. */ int args_printed = 0; struct cleanup *old_chain; -@@ -573,8 +573,8 @@ print_frame_args (struct symbol *func, s +@@ -571,8 +571,8 @@ case LOC_ARG: case LOC_REF_ARG: { @@ -3057,7 +2787,7 @@ Index: gdb-7.10.50.20151027/gdb/stack.c /* Compute address of next argument by adding the size of this argument and rounding to an int boundary. */ -@@ -709,7 +709,7 @@ print_frame_args (struct symbol *func, s +@@ -707,7 +707,7 @@ enough about the stack to find them. */ if (num != -1) { @@ -3066,11 +2796,11 @@ Index: gdb-7.10.50.20151027/gdb/stack.c if (highest_offset == -1) start = gdbarch_frame_args_skip (get_frame_arch (frame)); -Index: gdb-7.10.50.20151027/gdb/symmisc.c +Index: gdb-7.11.50.20160716/gdb/symmisc.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/symmisc.c 2015-11-02 21:23:11.229351765 +0100 -+++ gdb-7.10.50.20151027/gdb/symmisc.c 2015-11-02 21:23:13.234364958 +0100 -@@ -534,11 +534,11 @@ print_symbol (void *args) +--- gdb-7.11.50.20160716.orig/gdb/symmisc.c 2016-07-16 14:33:42.107510552 +0200 ++++ gdb-7.11.50.20160716/gdb/symmisc.c 2016-07-16 14:33:44.546530181 +0200 +@@ -538,11 +538,11 @@ case LOC_CONST_BYTES: { @@ -3085,11 +2815,11 @@ Index: gdb-7.10.50.20151027/gdb/symmisc.c for (i = 0; i < TYPE_LENGTH (type); i++) fprintf_filtered (outfile, " %02x", (unsigned) SYMBOL_VALUE_BYTES (symbol)[i]); -Index: gdb-7.10.50.20151027/gdb/target.c +Index: gdb-7.11.50.20160716/gdb/target.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/target.c 2015-11-02 21:23:11.230351772 +0100 -+++ gdb-7.10.50.20151027/gdb/target.c 2015-11-02 21:23:13.234364958 +0100 -@@ -54,7 +54,7 @@ static int default_watchpoint_addr_withi +--- gdb-7.11.50.20160716.orig/gdb/target.c 2016-07-16 14:33:42.108510560 +0200 ++++ gdb-7.11.50.20160716/gdb/target.c 2016-07-16 14:33:44.546530181 +0200 +@@ -56,7 +56,7 @@ CORE_ADDR, CORE_ADDR, int); static int default_region_ok_for_hw_watchpoint (struct target_ops *, @@ -3098,7 +2828,7 @@ Index: gdb-7.10.50.20151027/gdb/target.c static void default_rcmd (struct target_ops *, const char *, struct ui_file *); -@@ -3132,7 +3132,7 @@ target_fileio_read_stralloc (struct infe +@@ -3196,7 +3196,7 @@ static int default_region_ok_for_hw_watchpoint (struct target_ops *self, @@ -3107,11 +2837,11 @@ Index: gdb-7.10.50.20151027/gdb/target.c { return (len <= gdbarch_ptr_bit (target_gdbarch ()) / TARGET_CHAR_BIT); } -Index: gdb-7.10.50.20151027/gdb/target.h +Index: gdb-7.11.50.20160716/gdb/target.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/target.h 2015-11-02 21:23:11.231351779 +0100 -+++ gdb-7.10.50.20151027/gdb/target.h 2015-11-02 21:23:13.235364964 +0100 -@@ -549,7 +549,7 @@ struct target_ops +--- gdb-7.11.50.20160716.orig/gdb/target.h 2016-07-16 14:33:42.109510568 +0200 ++++ gdb-7.11.50.20160716/gdb/target.h 2016-07-16 14:33:44.547530189 +0200 +@@ -551,7 +551,7 @@ /* Documentation of this routine is provided with the corresponding target_* macro. */ int (*to_region_ok_for_hw_watchpoint) (struct target_ops *, @@ -3120,11 +2850,11 @@ Index: gdb-7.10.50.20151027/gdb/target.h TARGET_DEFAULT_FUNC (default_region_ok_for_hw_watchpoint); int (*to_can_accel_watchpoint_condition) (struct target_ops *, -Index: gdb-7.10.50.20151027/gdb/tracepoint.c +Index: gdb-7.11.50.20160716/gdb/tracepoint.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/tracepoint.c 2015-11-02 21:23:11.233351792 +0100 -+++ gdb-7.10.50.20151027/gdb/tracepoint.c 2015-11-02 21:23:13.236364971 +0100 -@@ -930,13 +930,13 @@ add_register (struct collection_list *co +--- gdb-7.11.50.20160716.orig/gdb/tracepoint.c 2016-07-16 14:33:42.112510592 +0200 ++++ gdb-7.11.50.20160716/gdb/tracepoint.c 2016-07-16 14:33:44.547530189 +0200 +@@ -930,13 +930,13 @@ static void add_memrange (struct collection_list *memranges, int type, bfd_signed_vma base, @@ -3140,7 +2870,7 @@ Index: gdb-7.10.50.20151027/gdb/tracepoint.c } /* type: memrange_absolute == memory, other n == basereg */ -@@ -966,7 +966,7 @@ collect_symbol (struct collection_list * +@@ -966,7 +966,7 @@ CORE_ADDR scope, int trace_string) { @@ -3149,7 +2879,7 @@ Index: gdb-7.10.50.20151027/gdb/tracepoint.c unsigned int reg; bfd_signed_vma offset; int treat_as_expr = 0; -@@ -990,8 +990,8 @@ collect_symbol (struct collection_list * +@@ -990,8 +990,8 @@ char tmp[40]; sprintf_vma (tmp, offset); @@ -3160,7 +2890,7 @@ Index: gdb-7.10.50.20151027/gdb/tracepoint.c tmp /* address */); } /* A struct may be a C++ class with static fields, go to general -@@ -1023,8 +1023,8 @@ collect_symbol (struct collection_list * +@@ -1023,8 +1023,8 @@ offset = frame_offset + SYMBOL_VALUE (sym); if (info_verbose) { @@ -3171,7 +2901,7 @@ Index: gdb-7.10.50.20151027/gdb/tracepoint.c printf_vma (offset); printf_filtered (" from frame ptr reg %d\n", reg); } -@@ -1035,8 +1035,8 @@ collect_symbol (struct collection_list * +@@ -1035,8 +1035,8 @@ offset = 0; if (info_verbose) { @@ -3182,7 +2912,7 @@ Index: gdb-7.10.50.20151027/gdb/tracepoint.c printf_vma (offset); printf_filtered (" from reg %d\n", reg); } -@@ -1047,8 +1047,8 @@ collect_symbol (struct collection_list * +@@ -1047,8 +1047,8 @@ offset = frame_offset + SYMBOL_VALUE (sym); if (info_verbose) { @@ -3193,7 +2923,7 @@ Index: gdb-7.10.50.20151027/gdb/tracepoint.c printf_vma (offset); printf_filtered (" from frame ptr reg %d\n", reg); } -@@ -2708,7 +2708,8 @@ scope_info (char *args, int from_tty) +@@ -2703,7 +2703,8 @@ const char *symname; char *save_args = args; struct block_iterator iter; @@ -3203,7 +2933,7 @@ Index: gdb-7.10.50.20151027/gdb/tracepoint.c struct gdbarch *gdbarch; int regno; struct event_location *location; -@@ -2852,8 +2853,11 @@ scope_info (char *args, int from_tty) +@@ -2847,8 +2848,11 @@ } } if (SYMBOL_TYPE (sym)) @@ -3217,24 +2947,11 @@ Index: gdb-7.10.50.20151027/gdb/tracepoint.c } if (BLOCK_FUNCTION (block)) break; -Index: gdb-7.10.50.20151027/gdb/typeprint.c -=================================================================== ---- gdb-7.10.50.20151027.orig/gdb/typeprint.c 2015-11-02 21:23:11.234351798 +0100 -+++ gdb-7.10.50.20151027/gdb/typeprint.c 2015-11-02 21:23:13.236364971 +0100 -@@ -406,7 +406,7 @@ whatis_exp (char *exp, int show) - struct type *real_type = NULL; - struct type *type; - int full = 0; -- int top = -1; -+ LONGEST top = -1; - int using_enc = 0; - struct value_print_options opts; - struct type_print_options flags = default_ptype_flags; -Index: gdb-7.10.50.20151027/gdb/valarith.c +Index: gdb-7.11.50.20160716/gdb/valarith.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/valarith.c 2015-11-02 21:23:11.234351798 +0100 -+++ gdb-7.10.50.20151027/gdb/valarith.c 2015-11-02 21:23:59.822671496 +0100 -@@ -188,12 +188,12 @@ value_subscript (struct value *array, LO +--- gdb-7.11.50.20160716.orig/gdb/valarith.c 2016-07-16 14:33:42.114510608 +0200 ++++ gdb-7.11.50.20160716/gdb/valarith.c 2016-07-16 14:33:44.548530197 +0200 +@@ -188,7 +188,7 @@ to doubles, but no longer does. */ struct value * @@ -3243,14 +2960,7 @@ Index: gdb-7.10.50.20151027/gdb/valarith.c { struct type *array_type = check_typedef (value_type (array)); struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (array_type)); -- unsigned int elt_size = type_length_units (elt_type); -- unsigned int elt_offs; -+ ULONGEST elt_size = type_length_units (elt_type); -+ ULONGEST elt_offs; - LONGEST elt_stride = TYPE_BYTE_STRIDE (TYPE_INDEX_TYPE (array_type)); - struct value *v; - -@@ -678,7 +678,7 @@ value_concat (struct value *arg1, struct +@@ -674,7 +674,7 @@ struct value *inval1; struct value *inval2; struct value *outval = NULL; @@ -3259,7 +2969,7 @@ Index: gdb-7.10.50.20151027/gdb/valarith.c int count, idx; char *ptr; char inchar; -@@ -1531,7 +1531,7 @@ value_binop (struct value *arg1, struct +@@ -1527,7 +1527,7 @@ int value_logical_not (struct value *arg1) { @@ -3268,7 +2978,7 @@ Index: gdb-7.10.50.20151027/gdb/valarith.c const gdb_byte *p; struct type *type1; -@@ -1562,11 +1562,11 @@ value_logical_not (struct value *arg1) +@@ -1558,11 +1558,11 @@ static int value_strcmp (struct value *arg1, struct value *arg2) { @@ -3283,20 +2993,11 @@ Index: gdb-7.10.50.20151027/gdb/valarith.c for (i = 0; i < len; i++) { -Index: gdb-7.10.50.20151027/gdb/valops.c +Index: gdb-7.11.50.20160716/gdb/valops.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/valops.c 2015-11-02 21:23:11.240351838 +0100 -+++ gdb-7.10.50.20151027/gdb/valops.c 2015-11-02 21:23:13.238364984 +0100 -@@ -51,7 +51,7 @@ static struct value *search_struct_field - - static struct value *search_struct_method (const char *, struct value **, - struct value **, -- int, int *, struct type *); -+ LONGEST, int *, struct type *); - - static int find_oload_champ_namespace (struct value **, int, - const char *, const char *, -@@ -79,7 +79,7 @@ oload_classification classify_oload_matc +--- gdb-7.11.50.20160716.orig/gdb/valops.c 2016-07-16 14:33:42.117510632 +0200 ++++ gdb-7.11.50.20160716/gdb/valops.c 2016-07-16 14:33:44.548530197 +0200 +@@ -79,7 +79,7 @@ int, int); static struct value *value_struct_elt_for_reference (struct type *, @@ -3305,19 +3006,7 @@ Index: gdb-7.10.50.20151027/gdb/valops.c const char *, struct type *, int, enum noside); -@@ -96,9 +96,9 @@ static CORE_ADDR allocate_space_in_infer - static struct value *cast_into_complex (struct type *, struct value *); - - static void find_method_list (struct value **, const char *, -- int, struct type *, struct fn_field **, int *, -+ LONGEST, struct type *, struct fn_field **, int *, - VEC (xmethod_worker_ptr) **, -- struct type **, int *); -+ struct type **, LONGEST *); - - void _initialize_valops (void); - -@@ -183,7 +183,7 @@ find_function_in_inferior (const char *n +@@ -183,7 +183,7 @@ space. */ struct value * @@ -3326,17 +3015,7 @@ Index: gdb-7.10.50.20151027/gdb/valops.c { struct objfile *objf; struct value *val = find_function_in_inferior ("malloc", &objf); -@@ -256,7 +256,8 @@ value_cast_structs (struct type *type, s - if (TYPE_NAME (t2) != NULL) - { - /* Try downcasting using the run-time type of the value. */ -- int full, top, using_enc; -+ int full, using_enc; -+ LONGEST top; - struct type *real_type; - - real_type = value_rtti_type (v2, &full, &top, &using_enc); -@@ -396,12 +397,12 @@ value_cast (struct type *type, struct va +@@ -397,12 +397,12 @@ if (code1 == TYPE_CODE_ARRAY) { struct type *element_type = TYPE_TARGET_TYPE (type); @@ -3351,64 +3030,7 @@ Index: gdb-7.10.50.20151027/gdb/valops.c LONGEST low_bound, high_bound, new_length; if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0) -@@ -635,7 +636,7 @@ value_reinterpret_cast (struct type *typ - static int - dynamic_cast_check_1 (struct type *desired_type, - const gdb_byte *valaddr, -- int embedded_offset, -+ LONGEST embedded_offset, - CORE_ADDR address, - struct value *val, - struct type *search_type, -@@ -647,8 +648,8 @@ dynamic_cast_check_1 (struct type *desir - - for (i = 0; i < TYPE_N_BASECLASSES (search_type) && result_count < 2; ++i) - { -- int offset = baseclass_offset (search_type, i, valaddr, embedded_offset, -- address, val); -+ LONGEST offset = baseclass_offset (search_type, i, valaddr, -+ embedded_offset, address, val); - - if (class_types_same_p (desired_type, TYPE_BASECLASS (search_type, i))) - { -@@ -682,7 +683,7 @@ dynamic_cast_check_1 (struct type *desir - static int - dynamic_cast_check_2 (struct type *desired_type, - const gdb_byte *valaddr, -- int embedded_offset, -+ LONGEST embedded_offset, - CORE_ADDR address, - struct value *val, - struct type *search_type, -@@ -692,7 +693,7 @@ dynamic_cast_check_2 (struct type *desir - - for (i = 0; i < TYPE_N_BASECLASSES (search_type) && result_count < 2; ++i) - { -- int offset; -+ LONGEST offset; - - if (! BASETYPE_VIA_PUBLIC (search_type, i)) - continue; -@@ -723,7 +724,8 @@ dynamic_cast_check_2 (struct type *desir - struct value * - value_dynamic_cast (struct type *type, struct value *arg) - { -- int full, top, using_enc; -+ int full, using_enc; -+ LONGEST top; - struct type *resolved_type = check_typedef (type); - struct type *arg_type = check_typedef (value_type (arg)); - struct type *class_type, *rtti_type; -@@ -954,7 +956,7 @@ value_at_lazy (struct type *type, CORE_A - } - - void --read_value_memory (struct value *val, int embedded_offset, -+read_value_memory (struct value *val, LONGEST embedded_offset, - int stack, CORE_ADDR memaddr, - gdb_byte *buffer, size_t length) - { -@@ -1057,7 +1059,7 @@ value_assign (struct value *toval, struc +@@ -1063,7 +1063,7 @@ { const gdb_byte *dest_buffer; CORE_ADDR changed_addr; @@ -3417,134 +3039,7 @@ Index: gdb-7.10.50.20151027/gdb/valops.c gdb_byte buffer[sizeof (LONGEST)]; if (value_bitsize (toval)) -@@ -1126,7 +1128,7 @@ value_assign (struct value *toval, struc - if (value_bitsize (toval)) - { - struct value *parent = value_parent (toval); -- int offset = value_offset (parent) + value_offset (toval); -+ LONGEST offset = value_offset (parent) + value_offset (toval); - int changed_len; - gdb_byte buffer[sizeof (LONGEST)]; - int optim, unavail; -@@ -1590,7 +1592,7 @@ value_array (int lowbound, int highbound - { - int nelem; - int idx; -- unsigned int typelength; -+ ULONGEST typelength; - struct value *val; - struct type *arraytype; - -@@ -1766,7 +1768,7 @@ typecmp (int staticp, int varargs, int n - - static void - update_search_result (struct value **result_ptr, struct value *v, -- int *last_boffset, int boffset, -+ LONGEST *last_boffset, LONGEST boffset, - const char *name, struct type *type) - { - if (v != NULL) -@@ -1790,10 +1792,10 @@ update_search_result (struct value **res - lookup is ambiguous. */ - - static void --do_search_struct_field (const char *name, struct value *arg1, int offset, -+do_search_struct_field (const char *name, struct value *arg1, LONGEST offset, - struct type *type, int looking_for_baseclass, - struct value **result_ptr, -- int *last_boffset, -+ LONGEST *last_boffset, - struct type *outermost_type) - { - int i; -@@ -1840,7 +1842,7 @@ do_search_struct_field (const char *name - . */ - - struct value *v = NULL; -- int new_offset = offset; -+ LONGEST new_offset = offset; - - /* This is pretty gross. In G++, the offset in an - anonymous union is relative to the beginning of the -@@ -1879,7 +1881,7 @@ do_search_struct_field (const char *name - && (strcmp_iw (name, - TYPE_BASECLASS_NAME (type, - i)) == 0)); -- int boffset = value_embedded_offset (arg1) + offset; -+ LONGEST boffset = value_embedded_offset (arg1) + offset; - - if (BASETYPE_VIA_VIRTUAL (type, i)) - { -@@ -1955,7 +1957,7 @@ search_struct_field (const char *name, s - struct type *type, int looking_for_baseclass) - { - struct value *result = NULL; -- int boffset = 0; -+ LONGEST boffset = 0; - - do_search_struct_field (name, arg1, 0, type, looking_for_baseclass, - &result, &boffset, type); -@@ -1972,7 +1974,7 @@ search_struct_field (const char *name, s - - static struct value * - search_struct_method (const char *name, struct value **arg1p, -- struct value **args, int offset, -+ struct value **args, LONGEST offset, - int *static_memfuncp, struct type *type) - { - int i; -@@ -2036,8 +2038,8 @@ search_struct_method (const char *name, - - for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--) - { -- int base_offset; -- int this_offset; -+ LONGEST base_offset; -+ LONGEST this_offset; - - if (BASETYPE_VIA_VIRTUAL (type, i)) - { -@@ -2272,10 +2274,10 @@ value_struct_elt_bitpos (struct value ** - - static void - find_method_list (struct value **argp, const char *method, -- int offset, struct type *type, -+ LONGEST offset, struct type *type, - struct fn_field **fn_list, int *num_fns, - VEC (xmethod_worker_ptr) **xm_worker_vec, -- struct type **basetype, int *boffset) -+ struct type **basetype, LONGEST *boffset) - { - int i; - struct fn_field *f = NULL; -@@ -2332,7 +2334,7 @@ find_method_list (struct value **argp, c - extension methods. */ - for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--) - { -- int base_offset; -+ LONGEST base_offset; - - if (BASETYPE_VIA_VIRTUAL (type, i)) - { -@@ -2375,7 +2377,7 @@ value_find_oload_method_list (struct val - int offset, struct fn_field **fn_list, - int *num_fns, - VEC (xmethod_worker_ptr) **xm_worker_vec, -- struct type **basetype, int *boffset) -+ struct type **basetype, LONGEST *boffset) - { - struct type *t; - -@@ -2486,7 +2488,7 @@ find_overload_match (struct value **args - /* Number of overloaded instances being considered. */ - int num_fns = 0; - struct type *basetype = NULL; -- int boffset; -+ LONGEST boffset; - - struct cleanup *all_cleanups = make_cleanup (null_cleanup, NULL); - -@@ -3300,7 +3302,7 @@ compare_parameters (struct type *t1, str +@@ -3328,7 +3328,7 @@ the form "DOMAIN::NAME". */ static struct value * @@ -3553,7 +3048,7 @@ Index: gdb-7.10.50.20151027/gdb/valops.c struct type *curtype, const char *name, struct type *intype, int want_address, -@@ -3334,7 +3336,7 @@ value_struct_elt_for_reference (struct t +@@ -3362,7 +3362,7 @@ if (want_address) return value_from_longest (lookup_memberptr_type (TYPE_FIELD_TYPE (t, i), domain), @@ -3562,7 +3057,7 @@ Index: gdb-7.10.50.20151027/gdb/valops.c else if (noside != EVAL_NORMAL) return allocate_value (TYPE_FIELD_TYPE (t, i)); else -@@ -3502,7 +3504,7 @@ value_struct_elt_for_reference (struct t +@@ -3530,7 +3530,7 @@ for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--) { struct value *v; @@ -3571,16 +3066,7 @@ Index: gdb-7.10.50.20151027/gdb/valops.c if (BASETYPE_VIA_VIRTUAL (t, i)) base_offset = 0; -@@ -3583,7 +3585,7 @@ value_maybe_namespace_elt (const struct - - struct type * - value_rtti_indirect_type (struct value *v, int *full, -- int *top, int *using_enc) -+ LONGEST *top, int *using_enc) - { - struct value *target = NULL; - struct type *type, *real_type, *target_type; -@@ -3651,12 +3653,12 @@ value_rtti_indirect_type (struct value * +@@ -3679,7 +3679,7 @@ struct value * value_full_object (struct value *argp, struct type *rtype, @@ -3589,26 +3075,11 @@ Index: gdb-7.10.50.20151027/gdb/valops.c int xusing_enc) { struct type *real_type; - int full = 0; -- int top = -1; -+ LONGEST top = -1; - int using_enc = 0; - struct value *new_val; - -Index: gdb-7.10.50.20151027/gdb/valprint.c +Index: gdb-7.11.50.20160716/gdb/valprint.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/valprint.c 2015-11-02 21:23:11.242351851 +0100 -+++ gdb-7.10.50.20151027/gdb/valprint.c 2015-11-02 21:23:13.239364991 +0100 -@@ -299,7 +299,7 @@ val_print_scalar_type_p (struct type *ty - int - valprint_check_validity (struct ui_file *stream, - struct type *type, -- int embedded_offset, -+ LONGEST embedded_offset, - const struct value *val) - { - type = check_typedef (type); -@@ -834,7 +834,7 @@ generic_val_print_complex (struct type * +--- gdb-7.11.50.20160716.orig/gdb/valprint.c 2016-07-16 14:33:42.118510640 +0200 ++++ gdb-7.11.50.20160716/gdb/valprint.c 2016-07-16 14:33:44.549530205 +0200 +@@ -907,7 +907,7 @@ void generic_val_print (struct type *type, const gdb_byte *valaddr, @@ -3617,25 +3088,7 @@ Index: gdb-7.10.50.20151027/gdb/valprint.c struct ui_file *stream, int recurse, const struct value *original_value, const struct value_print_options *options, -@@ -969,7 +969,7 @@ generic_val_print (struct type *type, co - RECURSE. */ - - void --val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, -+val_print (struct type *type, const gdb_byte *valaddr, LONGEST embedded_offset, - CORE_ADDR address, struct ui_file *stream, int recurse, - const struct value *val, - const struct value_print_options *options, -@@ -1221,7 +1221,7 @@ val_print_type_code_flags (struct type * - - void - val_print_scalar_formatted (struct type *type, -- const gdb_byte *valaddr, int embedded_offset, -+ const gdb_byte *valaddr, LONGEST embedded_offset, - const struct value *val, - const struct value_print_options *options, - int size, -@@ -1766,7 +1766,7 @@ print_decimal_chars (struct ui_file *str +@@ -1842,7 +1842,7 @@ void print_hex_chars (struct ui_file *stream, const gdb_byte *valaddr, @@ -3644,13 +3097,7 @@ Index: gdb-7.10.50.20151027/gdb/valprint.c { const gdb_byte *p; -@@ -1883,22 +1883,22 @@ maybe_print_array_index (struct type *in - - void - val_print_array_elements (struct type *type, -- const gdb_byte *valaddr, int embedded_offset, -+ const gdb_byte *valaddr, LONGEST embedded_offset, - CORE_ADDR address, struct ui_file *stream, +@@ -1964,17 +1964,17 @@ int recurse, const struct value *val, const struct value_print_options *options, @@ -3673,7 +3120,7 @@ Index: gdb-7.10.50.20151027/gdb/valprint.c LONGEST low_bound, high_bound; LONGEST low_pos, high_pos; -@@ -1988,7 +1988,7 @@ val_print_array_elements (struct type *t +@@ -2064,7 +2064,7 @@ address, stream, recurse + 1, val, options, current_language); annotate_elt_rep (reps); @@ -3682,7 +3129,7 @@ Index: gdb-7.10.50.20151027/gdb/valprint.c annotate_elt_rep_end (); i = rep1 - 1; -@@ -2644,7 +2644,7 @@ print_converted_chars_to_obstack (struct +@@ -2720,7 +2720,7 @@ void generic_printstr (struct ui_file *stream, struct type *type, @@ -3691,16 +3138,11 @@ Index: gdb-7.10.50.20151027/gdb/valprint.c const char *encoding, int force_ellipses, int quote_char, int c_style_terminator, const struct value_print_options *options) -Index: gdb-7.10.50.20151027/gdb/valprint.h +Index: gdb-7.11.50.20160716/gdb/valprint.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/valprint.h 2015-11-02 21:23:11.242351851 +0100 -+++ gdb-7.10.50.20151027/gdb/valprint.h 2015-11-02 21:23:13.239364991 +0100 -@@ -115,11 +115,11 @@ extern void maybe_print_array_index (str - struct ui_file *stream, - const struct value_print_options *); - --extern void val_print_array_elements (struct type *, const gdb_byte *, int, -+extern void val_print_array_elements (struct type *, const gdb_byte *, LONGEST, +--- gdb-7.11.50.20160716.orig/gdb/valprint.h 2016-07-16 14:33:42.118510640 +0200 ++++ gdb-7.11.50.20160716/gdb/valprint.h 2016-07-16 14:33:44.549530205 +0200 +@@ -119,7 +119,7 @@ CORE_ADDR, struct ui_file *, int, const struct value *, const struct value_print_options *, @@ -3709,16 +3151,7 @@ Index: gdb-7.10.50.20151027/gdb/valprint.h extern void val_print_type_code_int (struct type *, const gdb_byte *, struct ui_file *); -@@ -129,7 +129,7 @@ extern void val_print_type_code_flags (s - struct ui_file *stream); - - extern void val_print_scalar_formatted (struct type *, -- const gdb_byte *, int, -+ const gdb_byte *, LONGEST, - const struct value *, - const struct value_print_options *, - int, -@@ -145,7 +145,7 @@ extern void print_decimal_chars (struct +@@ -141,7 +141,7 @@ unsigned int, enum bfd_endian); extern void print_hex_chars (struct ui_file *, const gdb_byte *, @@ -3727,7 +3160,7 @@ Index: gdb-7.10.50.20151027/gdb/valprint.h extern void print_char_chars (struct ui_file *, struct type *, const gdb_byte *, unsigned int, enum bfd_endian); -@@ -194,7 +194,7 @@ struct generic_val_print_decorations +@@ -194,7 +194,7 @@ extern void generic_val_print (struct type *type, const gdb_byte *valaddr, @@ -3736,7 +3169,7 @@ Index: gdb-7.10.50.20151027/gdb/valprint.h struct ui_file *stream, int recurse, const struct value *original_value, const struct value_print_options *options, -@@ -204,7 +204,7 @@ extern void generic_emit_char (int c, st +@@ -204,7 +204,7 @@ int quoter, const char *encoding); extern void generic_printstr (struct ui_file *stream, struct type *type, @@ -3745,83 +3178,11 @@ Index: gdb-7.10.50.20151027/gdb/valprint.h const char *encoding, int force_ellipses, int quote_char, int c_style_terminator, const struct value_print_options *options); -Index: gdb-7.10.50.20151027/gdb/value.c +Index: gdb-7.11.50.20160716/gdb/value.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/value.c 2015-11-02 21:23:11.248351890 +0100 -+++ gdb-7.10.50.20151027/gdb/value.c 2015-11-02 21:23:13.241365004 +0100 -@@ -66,10 +66,10 @@ struct internal_function - struct range - { - /* Lowest offset in the range. */ -- int offset; -+ LONGEST offset; - - /* Length of the range. */ -- int length; -+ LONGEST length; - }; - - typedef struct range range_s; -@@ -80,8 +80,8 @@ DEF_VEC_O(range_s); - [offset2, offset2+len2) overlap. */ - - static int --ranges_overlap (int offset1, int len1, -- int offset2, int len2) -+ranges_overlap (LONGEST offset1, LONGEST len1, -+ LONGEST offset2, LONGEST len2) - { - ULONGEST h, l; - -@@ -105,7 +105,7 @@ range_lessthan (const range_s *r1, const - OFFSET+LENGTH). */ - - static int --ranges_contain (VEC(range_s) *ranges, int offset, int length) -+ranges_contain (VEC(range_s) *ranges, LONGEST offset, LONGEST length) - { - range_s what; - int i; -@@ -240,7 +240,7 @@ struct value - the address. If lval == lval_register, this is a further offset from - location.address within the registers structure. Note also the member - embedded_offset below. */ -- int offset; -+ LONGEST offset; - - /* Only used for bitfields; number of bits contained in them. */ - int bitsize; -@@ -310,8 +310,8 @@ struct value - `type', and `embedded_offset' is zero, so everything works - normally. */ - struct type *enclosing_type; -- int embedded_offset; -- int pointed_to_offset; -+ LONGEST embedded_offset; -+ LONGEST pointed_to_offset; - - /* Values are stored in a chain, so that they can be deleted easily - over calls to the inferior. Values assigned to internal -@@ -350,7 +350,7 @@ get_value_arch (const struct value *valu - } - - int --value_bits_available (const struct value *value, int offset, int length) -+value_bits_available (const struct value *value, LONGEST offset, LONGEST length) - { - gdb_assert (!value->lazy); - -@@ -358,7 +358,8 @@ value_bits_available (const struct value - } - - int --value_bytes_available (const struct value *value, int offset, int length) -+value_bytes_available (const struct value *value, LONGEST offset, -+ LONGEST length) - { - return value_bits_available (value, - offset * TARGET_CHAR_BIT, -@@ -366,7 +367,8 @@ value_bytes_available (const struct valu +--- gdb-7.11.50.20160716.orig/gdb/value.c 2016-07-16 14:33:42.119510648 +0200 ++++ gdb-7.11.50.20160716/gdb/value.c 2016-07-16 14:33:44.549530205 +0200 +@@ -366,7 +366,8 @@ } int @@ -3831,36 +3192,7 @@ Index: gdb-7.10.50.20151027/gdb/value.c { gdb_assert (!value->lazy); -@@ -428,7 +430,8 @@ value_entirely_optimized_out (struct val - OFFSET bits, and extending for the next LENGTH bits. */ - - static void --insert_into_bit_range_vector (VEC(range_s) **vectorp, int offset, int length) -+insert_into_bit_range_vector (VEC(range_s) **vectorp, LONGEST offset, -+ LONGEST length) - { - range_s newr; - int i; -@@ -599,7 +602,8 @@ mark_value_bits_unavailable (struct valu - } - - void --mark_value_bytes_unavailable (struct value *value, int offset, int length) -+mark_value_bytes_unavailable (struct value *value, LONGEST offset, -+ LONGEST length) - { - mark_value_bits_unavailable (value, - offset * TARGET_CHAR_BIT, -@@ -613,7 +617,7 @@ mark_value_bytes_unavailable (struct val - - static int - find_first_range_overlap (VEC(range_s) *ranges, int pos, -- int offset, int length) -+ LONGEST offset, LONGEST length) - { - range_s *r; - int i; -@@ -809,9 +813,9 @@ find_first_range_overlap_and_match (stru +@@ -812,9 +813,9 @@ Return true if the available bits match. */ static int @@ -3873,59 +3205,7 @@ Index: gdb-7.10.50.20151027/gdb/value.c { /* Each array element corresponds to a ranges source (unavailable, optimized out). '1' is for VAL1, '2' for VAL2. */ -@@ -871,9 +875,9 @@ value_contents_bits_eq (const struct val - } - - int --value_contents_eq (const struct value *val1, int offset1, -- const struct value *val2, int offset2, -- int length) -+value_contents_eq (const struct value *val1, LONGEST offset1, -+ const struct value *val2, LONGEST offset2, -+ LONGEST length) - { - return value_contents_bits_eq (val1, offset1 * TARGET_CHAR_BIT, - val2, offset2 * TARGET_CHAR_BIT, -@@ -1037,13 +1041,13 @@ deprecated_set_value_type (struct value - value->type = type; - } - --int -+LONGEST - value_offset (const struct value *value) - { - return value->offset; - } - void --set_value_offset (struct value *value, int offset) -+set_value_offset (struct value *value, LONGEST offset) - { - value->offset = offset; - } -@@ -1257,8 +1261,9 @@ value_ranges_copy_adjusted (struct value - DST_OFFSET+LENGTH) range are wholly available. */ - - void --value_contents_copy_raw (struct value *dst, int dst_offset, -- struct value *src, int src_offset, int length) -+value_contents_copy_raw (struct value *dst, ssize_t dst_offset, -+ struct value *src, ssize_t src_offset, -+ ssize_t length) - { - range_s *r; - int src_bit_offset, dst_bit_offset, bit_length; -@@ -1305,8 +1310,8 @@ value_contents_copy_raw (struct value *d - DST_OFFSET+LENGTH) range are wholly available. */ - - void --value_contents_copy (struct value *dst, int dst_offset, -- struct value *src, int src_offset, int length) -+value_contents_copy (struct value *dst, ssize_t dst_offset, -+ struct value *src, ssize_t src_offset, ssize_t length) - { - if (src->lazy) - value_fetch_lazy (src); -@@ -1370,7 +1375,8 @@ value_optimized_out (struct value *value +@@ -1456,7 +1457,8 @@ the following LENGTH bytes. */ void @@ -3935,199 +3215,20 @@ Index: gdb-7.10.50.20151027/gdb/value.c { mark_value_bits_optimized_out (value, offset * TARGET_CHAR_BIT, -@@ -1380,14 +1386,15 @@ mark_value_bytes_optimized_out (struct v - /* See value.h. */ - - void --mark_value_bits_optimized_out (struct value *value, int offset, int length) -+mark_value_bits_optimized_out (struct value *value, LONGEST offset, -+ LONGEST length) - { - insert_into_bit_range_vector (&value->optimized_out, offset, length); - } - - int - value_bits_synthetic_pointer (const struct value *value, -- int offset, int length) -+ LONGEST offset, LONGEST length) - { - if (value->lval != lval_computed - || !value->location.computed.funcs->check_synthetic_pointer) -@@ -1397,26 +1404,26 @@ value_bits_synthetic_pointer (const stru - length); - } - --int -+LONGEST - value_embedded_offset (struct value *value) - { - return value->embedded_offset; - } - - void --set_value_embedded_offset (struct value *value, int val) -+set_value_embedded_offset (struct value *value, LONGEST val) - { - value->embedded_offset = val; - } - --int -+LONGEST - value_pointed_to_offset (struct value *value) - { - return value->pointed_to_offset; - } - - void --set_value_pointed_to_offset (struct value *value, int val) -+set_value_pointed_to_offset (struct value *value, LONGEST val) - { - value->pointed_to_offset = val; - } -@@ -2295,7 +2302,7 @@ get_internalvar_function (struct interna - } - - void --set_internalvar_component (struct internalvar *var, int offset, int bitpos, -+set_internalvar_component (struct internalvar *var, LONGEST offset, int bitpos, - int bitsize, struct value *newval) - { - gdb_byte *addr; -@@ -3020,7 +3027,7 @@ set_value_enclosing_type (struct value * - FIELDNO says which field. */ - - struct value * --value_primitive_field (struct value *arg1, int offset, -+value_primitive_field (struct value *arg1, LONGEST offset, - int fieldno, struct type *arg_type) - { - struct value *v; -@@ -3072,7 +3079,7 @@ value_primitive_field (struct value *arg - /* This field is actually a base subobject, so preserve the - entire object's contents for later references to virtual - bases, etc. */ -- int boffset; -+ LONGEST boffset; - - /* Lazy register values with offsets are not supported. */ - if (VALUE_LVAL (arg1) == lval_register && value_lazy (arg1)) -@@ -3159,7 +3166,7 @@ value_field (struct value *arg1, int fie - struct value * - value_fn_field (struct value **arg1p, struct fn_field *f, - int j, struct type *type, -- int offset) -+ LONGEST offset) - { - struct value *v; - struct type *ftype = TYPE_FN_FIELD_TYPE (f, j); -@@ -3229,14 +3236,14 @@ value_fn_field (struct value **arg1p, st - - static LONGEST - unpack_bits_as_long (struct type *field_type, const gdb_byte *valaddr, -- int bitpos, int bitsize) -+ LONGEST bitpos, int bitsize) - { - enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (field_type)); - ULONGEST val; - ULONGEST valmask; - int lsbcount; - int bytes_read; -- int read_offset; -+ LONGEST read_offset; - - /* Read the minimum number of bytes required; there may not be - enough bytes to read an entire ULONGEST. */ -@@ -3285,7 +3292,7 @@ unpack_bits_as_long (struct type *field_ - - int - unpack_value_field_as_long (struct type *type, const gdb_byte *valaddr, -- int embedded_offset, int fieldno, -+ LONGEST embedded_offset, int fieldno, - const struct value *val, LONGEST *result) - { - int bitpos = TYPE_FIELD_BITPOS (type, fieldno); -@@ -3329,7 +3336,7 @@ unpack_field_as_long (struct type *type, - void - unpack_value_bitfield (struct value *dest_val, - int bitpos, int bitsize, -- const gdb_byte *valaddr, int embedded_offset, -+ const gdb_byte *valaddr, LONGEST embedded_offset, - const struct value *val) - { - enum bfd_endian byte_order; -@@ -3367,7 +3374,7 @@ unpack_value_bitfield (struct value *des - struct value * - value_field_bitfield (struct type *type, int fieldno, - const gdb_byte *valaddr, -- int embedded_offset, const struct value *val) -+ LONGEST embedded_offset, const struct value *val) - { - int bitpos = TYPE_FIELD_BITPOS (type, fieldno); - int bitsize = TYPE_FIELD_BITSIZE (type, fieldno); -@@ -3388,12 +3395,12 @@ value_field_bitfield (struct type *type, - - void - modify_field (struct type *type, gdb_byte *addr, -- LONGEST fieldval, int bitpos, int bitsize) -+ LONGEST fieldval, LONGEST bitpos, int bitsize) - { - enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); - ULONGEST oword; - ULONGEST mask = (ULONGEST) -1 >> (8 * sizeof (ULONGEST) - bitsize); -- int bytesize; -+ LONGEST bytesize; - - /* Normalize BITPOS. */ - addr += bitpos / 8; -Index: gdb-7.10.50.20151027/gdb/value.h +Index: gdb-7.11.50.20160716/gdb/value.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/value.h 2015-11-02 21:23:11.250351904 +0100 -+++ gdb-7.10.50.20151027/gdb/value.h 2015-11-02 21:23:13.241365004 +0100 -@@ -135,8 +135,8 @@ extern void set_value_parent (struct val - within the registers structure. Note also the member - embedded_offset below. */ - --extern int value_offset (const struct value *); --extern void set_value_offset (struct value *, int offset); -+extern LONGEST value_offset (const struct value *); -+extern void set_value_offset (struct value *, LONGEST offset); - - /* The comment from "struct value" reads: ``Is it modifiable? Only - relevant if lval != not_lval.''. Shouldn't the value instead be -@@ -205,10 +205,10 @@ extern struct type *value_actual_type (s - int resolve_simple_types, - int *real_type_found); - --extern int value_pointed_to_offset (struct value *value); --extern void set_value_pointed_to_offset (struct value *value, int val); --extern int value_embedded_offset (struct value *value); --extern void set_value_embedded_offset (struct value *value, int val); -+extern LONGEST value_pointed_to_offset (struct value *value); -+extern void set_value_pointed_to_offset (struct value *value, LONGEST val); -+extern LONGEST value_embedded_offset (struct value *value); -+extern void set_value_embedded_offset (struct value *value, LONGEST val); - - /* For lval_computed values, this structure holds functions used to - retrieve and set the value (or portions of the value). -@@ -246,7 +246,7 @@ struct lval_funcs +--- gdb-7.11.50.20160716.orig/gdb/value.h 2016-07-16 14:33:42.120510656 +0200 ++++ gdb-7.11.50.20160716/gdb/value.h 2016-07-16 14:33:44.550530213 +0200 +@@ -246,7 +246,7 @@ /* If non-NULL, this is used to determine whether the indicated bits of VALUE are a synthetic pointer. */ int (*check_synthetic_pointer) (const struct value *value, -- int offset, int length); +- LONGEST offset, int length); + LONGEST offset, LONGEST length); /* Return a duplicate of VALUE's closure, for use in a new value. This may simply return the same closure, if VALUE's is -@@ -283,7 +283,7 @@ extern struct value *allocate_computed_v - Otherwise, return 1. */ - - extern int valprint_check_validity (struct ui_file *stream, struct type *type, -- int embedded_offset, -+ LONGEST embedded_offset, - const struct value *val); - - extern struct value *allocate_optimized_out_value (struct type *type); -@@ -377,7 +377,8 @@ extern int value_optimized_out (struct v +@@ -377,7 +377,8 @@ otherwise. */ extern int value_bits_any_optimized_out (const struct value *value, @@ -4137,7 +3238,7 @@ Index: gdb-7.10.50.20151027/gdb/value.h /* Like value_optimized_out, but return true iff the whole value is optimized out. */ -@@ -387,13 +388,13 @@ extern int value_entirely_optimized_out +@@ -387,7 +388,7 @@ LENGTH bytes as optimized out. */ extern void mark_value_bytes_optimized_out (struct value *value, @@ -4146,124 +3247,12 @@ Index: gdb-7.10.50.20151027/gdb/value.h /* Mark VALUE's content bits starting at OFFSET and extending for LENGTH bits as optimized out. */ - - extern void mark_value_bits_optimized_out (struct value *value, -- int offset, int length); -+ LONGEST offset, LONGEST length); - - /* Set or return field indicating whether a variable is initialized or - not, based on debugging information supplied by the compiler. -@@ -476,7 +477,7 @@ extern struct value *coerce_array (struc - extending for LENGTH bits are a synthetic pointer. */ - - extern int value_bits_synthetic_pointer (const struct value *value, -- int offset, int length); -+ LONGEST offset, LONGEST length); - - /* Given a value, determine whether the contents bytes starting at - OFFSET and extending for LENGTH bytes are available. This returns -@@ -484,7 +485,7 @@ extern int value_bits_synthetic_pointer - byte is unavailable. */ - - extern int value_bytes_available (const struct value *value, -- int offset, int length); -+ LONGEST offset, LONGEST length); - - /* Given a value, determine whether the contents bits starting at - OFFSET and extending for LENGTH bits are available. This returns -@@ -492,7 +493,7 @@ extern int value_bytes_available (const - bit is unavailable. */ - - extern int value_bits_available (const struct value *value, -- int offset, int length); -+ LONGEST offset, LONGEST length); - - /* Like value_bytes_available, but return false if any byte in the - whole object is unavailable. */ -@@ -506,7 +507,7 @@ extern int value_entirely_unavailable (s - LENGTH bytes as unavailable. */ - - extern void mark_value_bytes_unavailable (struct value *value, -- int offset, int length); -+ LONGEST offset, LONGEST length); - - /* Mark VALUE's content bits starting at OFFSET and extending for - LENGTH bits as unavailable. */ -@@ -567,9 +568,9 @@ extern void mark_value_bits_unavailable - after the inferior is gone, it works with const values. Therefore, - this routine must not be called with lazy values. */ - --extern int value_contents_eq (const struct value *val1, int offset1, -- const struct value *val2, int offset2, -- int length); -+extern int value_contents_eq (const struct value *val1, LONGEST offset1, -+ const struct value *val2, LONGEST offset2, -+ LONGEST length); - - /* Read LENGTH addressable memory units starting at MEMADDR into BUFFER, - which is (or will be copied to) VAL's contents buffer offset by -@@ -578,7 +579,7 @@ extern int value_contents_eq (const stru - memory is likewise unavailable. STACK indicates whether the memory - is known to be stack memory. */ - --extern void read_value_memory (struct value *val, int embedded_offset, -+extern void read_value_memory (struct value *val, LONGEST embedded_offset, - int stack, CORE_ADDR memaddr, - gdb_byte *buffer, size_t length); - -@@ -614,17 +615,18 @@ extern LONGEST unpack_field_as_long (str - const gdb_byte *valaddr, - int fieldno); - extern int unpack_value_field_as_long (struct type *type, const gdb_byte *valaddr, -- int embedded_offset, int fieldno, -+ LONGEST embedded_offset, int fieldno, - const struct value *val, LONGEST *result); - - extern void unpack_value_bitfield (struct value *dest_val, - int bitpos, int bitsize, -- const gdb_byte *valaddr, int embedded_offset, -+ const gdb_byte *valaddr, -+ LONGEST embedded_offset, - const struct value *val); - - extern struct value *value_field_bitfield (struct type *type, int fieldno, - const gdb_byte *valaddr, -- int embedded_offset, -+ LONGEST embedded_offset, - const struct value *val); - - extern void pack_long (gdb_byte *buf, struct type *type, LONGEST num); -@@ -683,12 +685,12 @@ extern struct value *default_read_var_va - - extern struct value *allocate_value (struct type *type); - extern struct value *allocate_value_lazy (struct type *type); --extern void value_contents_copy (struct value *dst, int dst_offset, -- struct value *src, int src_offset, -- int length); --extern void value_contents_copy_raw (struct value *dst, int dst_offset, -- struct value *src, int src_offset, -- int length); -+extern void value_contents_copy (struct value *dst, ssize_t dst_offset, -+ struct value *src, ssize_t src_offset, -+ ssize_t length); -+extern void value_contents_copy_raw (struct value *dst, ssize_t dst_offset, -+ struct value *src, ssize_t src_offset, -+ ssize_t length); - - extern struct value *allocate_repeat_value (struct type *type, int count); - -@@ -766,16 +768,16 @@ extern int find_overload_match (struct v - - extern struct value *value_field (struct value *arg1, int fieldno); - --extern struct value *value_primitive_field (struct value *arg1, int offset, -+extern struct value *value_primitive_field (struct value *arg1, LONGEST offset, +@@ -771,12 +772,11 @@ int fieldno, struct type *arg_type); - --extern struct type *value_rtti_indirect_type (struct value *, int *, int *, -+extern struct type *value_rtti_indirect_type (struct value *, int *, LONGEST *, +- + extern struct type *value_rtti_indirect_type (struct value *, int *, LONGEST *, int *); extern struct value *value_full_object (struct value *, struct type *, int, @@ -4272,44 +3261,7 @@ Index: gdb-7.10.50.20151027/gdb/value.h extern struct value *value_cast_pointers (struct type *, struct value *, int); -@@ -870,7 +872,7 @@ extern void set_internalvar_string (stru - extern void clear_internalvar (struct internalvar *var); - - extern void set_internalvar_component (struct internalvar *var, -- int offset, -+ LONGEST offset, - int bitpos, int bitsize, - struct value *newvalue); - -@@ -951,7 +953,7 @@ extern struct value *value_x_unop (struc - enum noside noside); - - extern struct value *value_fn_field (struct value **arg1p, struct fn_field *f, -- int j, struct type *type, int offset); -+ int j, struct type *type, LONGEST offset); - - extern int binop_types_user_defined_p (enum exp_opcode op, - struct type *type1, -@@ -979,7 +981,8 @@ extern void release_value_or_incref (str - extern int record_latest_value (struct value *val); - - extern void modify_field (struct type *type, gdb_byte *addr, -- LONGEST fieldval, int bitpos, int bitsize); -+ LONGEST fieldval, LONGEST bitpos, -+ int bitsize); - - extern void type_print (struct type *type, const char *varstring, - struct ui_file *stream, int show); -@@ -1009,7 +1012,7 @@ extern void value_print_array_elements ( - extern struct value *value_release_to_mark (struct value *mark); - - extern void val_print (struct type *type, const gdb_byte *valaddr, -- int embedded_offset, CORE_ADDR address, -+ LONGEST embedded_offset, CORE_ADDR address, - struct ui_file *stream, int recurse, - const struct value *val, - const struct value_print_options *options, -@@ -1062,10 +1065,11 @@ extern struct value *value_literal_compl +@@ -1065,10 +1065,11 @@ extern struct value *find_function_in_inferior (const char *, struct objfile **); @@ -4323,11 +3275,11 @@ Index: gdb-7.10.50.20151027/gdb/value.h /* User function handler. */ -Index: gdb-7.10.50.20151027/gdb/s390-linux-nat.c +Index: gdb-7.11.50.20160716/gdb/s390-linux-nat.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/s390-linux-nat.c 2015-11-02 21:23:11.250351904 +0100 -+++ gdb-7.10.50.20151027/gdb/s390-linux-nat.c 2015-11-02 21:23:13.242365010 +0100 -@@ -612,7 +612,7 @@ s390_can_use_hw_breakpoint (struct targe +--- gdb-7.11.50.20160716.orig/gdb/s390-linux-nat.c 2016-07-16 14:33:42.120510656 +0200 ++++ gdb-7.11.50.20160716/gdb/s390-linux-nat.c 2016-07-16 14:33:44.550530213 +0200 +@@ -612,7 +612,7 @@ static int s390_region_ok_for_hw_watchpoint (struct target_ops *self, @@ -4336,37 +3288,11 @@ Index: gdb-7.10.50.20151027/gdb/s390-linux-nat.c { return 1; } -Index: gdb-7.10.50.20151027/gdb/extension-priv.h -=================================================================== ---- gdb-7.10.50.20151027.orig/gdb/extension-priv.h 2015-11-02 21:23:11.250351904 +0100 -+++ gdb-7.10.50.20151027/gdb/extension-priv.h 2015-11-02 21:23:13.242365010 +0100 -@@ -181,7 +181,7 @@ struct extension_language_ops - enum ext_lang_rc (*apply_val_pretty_printer) - (const struct extension_language_defn *, - struct type *type, const gdb_byte *valaddr, -- int embedded_offset, CORE_ADDR address, -+ LONGEST embedded_offset, CORE_ADDR address, - struct ui_file *stream, int recurse, - const struct value *val, const struct value_print_options *options, - const struct language_defn *language); -Index: gdb-7.10.50.20151027/gdb/python/python-internal.h +Index: gdb-7.11.50.20160716/gdb/target-delegates.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/python/python-internal.h 2015-11-02 21:23:11.250351904 +0100 -+++ gdb-7.10.50.20151027/gdb/python/python-internal.h 2015-11-02 21:23:13.242365010 +0100 -@@ -316,7 +316,7 @@ extern int gdbpy_auto_load_enabled (cons - extern enum ext_lang_rc gdbpy_apply_val_pretty_printer - (const struct extension_language_defn *, - struct type *type, const gdb_byte *valaddr, -- int embedded_offset, CORE_ADDR address, -+ LONGEST embedded_offset, CORE_ADDR address, - struct ui_file *stream, int recurse, - const struct value *val, - const struct value_print_options *options, -Index: gdb-7.10.50.20151027/gdb/target-delegates.c -=================================================================== ---- gdb-7.10.50.20151027.orig/gdb/target-delegates.c 2015-11-02 21:23:11.252351917 +0100 -+++ gdb-7.10.50.20151027/gdb/target-delegates.c 2015-11-02 21:23:13.243365017 +0100 -@@ -736,14 +736,14 @@ debug_watchpoint_addr_within_range (stru +--- gdb-7.11.50.20160716.orig/gdb/target-delegates.c 2016-07-16 14:33:42.121510664 +0200 ++++ gdb-7.11.50.20160716/gdb/target-delegates.c 2016-07-16 14:33:44.550530213 +0200 +@@ -736,14 +736,14 @@ } static int @@ -4383,7 +3309,7 @@ Index: gdb-7.10.50.20151027/gdb/target-delegates.c { int result; fprintf_unfiltered (gdb_stdlog, "-> %s->to_region_ok_for_hw_watchpoint (...)\n", debug_target.to_shortname); -@@ -753,7 +753,7 @@ debug_region_ok_for_hw_watchpoint (struc +@@ -753,7 +753,7 @@ fputs_unfiltered (", ", gdb_stdlog); target_debug_print_CORE_ADDR (arg1); fputs_unfiltered (", ", gdb_stdlog); @@ -4392,11 +3318,11 @@ Index: gdb-7.10.50.20151027/gdb/target-delegates.c fputs_unfiltered (") = ", gdb_stdlog); target_debug_print_int (result); fputs_unfiltered ("\n", gdb_stdlog); -Index: gdb-7.10.50.20151027/gdb/aarch64-linux-nat.c +Index: gdb-7.11.50.20160716/gdb/aarch64-linux-nat.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/aarch64-linux-nat.c 2015-11-02 21:23:11.252351917 +0100 -+++ gdb-7.10.50.20151027/gdb/aarch64-linux-nat.c 2015-11-02 21:23:13.243365017 +0100 -@@ -736,7 +736,7 @@ aarch64_linux_remove_watchpoint (struct +--- gdb-7.11.50.20160716.orig/gdb/aarch64-linux-nat.c 2016-07-16 14:33:42.122510672 +0200 ++++ gdb-7.11.50.20160716/gdb/aarch64-linux-nat.c 2016-07-16 14:33:44.551530221 +0200 +@@ -736,7 +736,7 @@ static int aarch64_linux_region_ok_for_hw_watchpoint (struct target_ops *self, @@ -4405,11 +3331,11 @@ Index: gdb-7.10.50.20151027/gdb/aarch64-linux-nat.c { return aarch64_linux_region_ok_for_watchpoint (addr, len); } -Index: gdb-7.10.50.20151027/gdb/nat/x86-dregs.c +Index: gdb-7.11.50.20160716/gdb/nat/x86-dregs.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/nat/x86-dregs.c 2015-11-02 21:23:11.252351917 +0100 -+++ gdb-7.10.50.20151027/gdb/nat/x86-dregs.c 2015-11-02 21:23:13.244365024 +0100 -@@ -384,7 +384,7 @@ x86_remove_aligned_watchpoint (struct x8 +--- gdb-7.11.50.20160716.orig/gdb/nat/x86-dregs.c 2016-07-16 14:33:42.122510672 +0200 ++++ gdb-7.11.50.20160716/gdb/nat/x86-dregs.c 2016-07-16 14:33:44.551530221 +0200 +@@ -384,7 +384,7 @@ static int x86_handle_nonaligned_watchpoint (struct x86_debug_reg_state *state, @@ -4418,7 +3344,7 @@ Index: gdb-7.10.50.20151027/gdb/nat/x86-dregs.c enum target_hw_bp_type type) { int retval = 0; -@@ -552,7 +552,7 @@ x86_dr_remove_watchpoint (struct x86_deb +@@ -552,7 +552,7 @@ int x86_dr_region_ok_for_watchpoint (struct x86_debug_reg_state *state, @@ -4427,11 +3353,11 @@ Index: gdb-7.10.50.20151027/gdb/nat/x86-dregs.c { int nregs; -Index: gdb-7.10.50.20151027/gdb/compile/compile-c-support.c +Index: gdb-7.11.50.20160716/gdb/compile/compile-c-support.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/compile/compile-c-support.c 2015-11-02 21:23:11.253351923 +0100 -+++ gdb-7.10.50.20151027/gdb/compile/compile-c-support.c 2015-11-02 21:23:13.244365024 +0100 -@@ -299,11 +299,11 @@ generate_register_struct (struct ui_file +--- gdb-7.11.50.20160716.orig/gdb/compile/compile-c-support.c 2016-07-16 14:33:42.122510672 +0200 ++++ gdb-7.11.50.20160716/gdb/compile/compile-c-support.c 2016-07-16 14:33:44.551530221 +0200 +@@ -299,11 +299,11 @@ default: fprintf_unfiltered (stream, @@ -4445,11 +3371,11 @@ Index: gdb-7.10.50.20151027/gdb/compile/compile-c-support.c } fputs_unfiltered (";\n", stream); -Index: gdb-7.10.50.20151027/gdb/nat/x86-dregs.h +Index: gdb-7.11.50.20160716/gdb/nat/x86-dregs.h =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/nat/x86-dregs.h 2015-11-02 21:23:11.253351923 +0100 -+++ gdb-7.10.50.20151027/gdb/nat/x86-dregs.h 2015-11-02 21:23:13.244365024 +0100 -@@ -116,7 +116,7 @@ extern int x86_dr_remove_watchpoint (str +--- gdb-7.11.50.20160716.orig/gdb/nat/x86-dregs.h 2016-07-16 14:33:42.122510672 +0200 ++++ gdb-7.11.50.20160716/gdb/nat/x86-dregs.h 2016-07-16 14:33:44.551530221 +0200 +@@ -116,7 +116,7 @@ /* Return non-zero if we can watch a memory region that starts at address ADDR and whose length is LEN bytes. */ extern int x86_dr_region_ok_for_watchpoint (struct x86_debug_reg_state *state, @@ -4458,11 +3384,11 @@ Index: gdb-7.10.50.20151027/gdb/nat/x86-dregs.h /* If the inferior has some break/watchpoint that triggered, set the address associated with that break/watchpoint and return true. -Index: gdb-7.10.50.20151027/gdb/x86-nat.c +Index: gdb-7.11.50.20160716/gdb/x86-nat.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/x86-nat.c 2015-11-02 21:23:11.253351923 +0100 -+++ gdb-7.10.50.20151027/gdb/x86-nat.c 2015-11-02 21:23:13.244365024 +0100 -@@ -174,7 +174,7 @@ x86_remove_watchpoint (struct target_ops +--- gdb-7.11.50.20160716.orig/gdb/x86-nat.c 2016-07-16 14:33:42.123510680 +0200 ++++ gdb-7.11.50.20160716/gdb/x86-nat.c 2016-07-16 14:33:44.551530221 +0200 +@@ -174,7 +174,7 @@ static int x86_region_ok_for_watchpoint (struct target_ops *self, @@ -4471,29 +3397,25 @@ Index: gdb-7.10.50.20151027/gdb/x86-nat.c { struct x86_debug_reg_state *state = x86_debug_reg_state (ptid_get_pid (inferior_ptid)); -Index: gdb-7.10.50.20151027/gdb/guile/guile-internal.h -=================================================================== ---- gdb-7.10.50.20151027.orig/gdb/guile/guile-internal.h 2015-11-02 21:23:11.253351923 +0100 -+++ gdb-7.10.50.20151027/gdb/guile/guile-internal.h 2015-11-02 21:23:13.244365024 +0100 -@@ -606,7 +606,7 @@ extern void gdbscm_preserve_values - extern enum ext_lang_rc gdbscm_apply_val_pretty_printer - (const struct extension_language_defn *, - struct type *type, const gdb_byte *valaddr, -- int embedded_offset, CORE_ADDR address, -+ LONGEST embedded_offset, CORE_ADDR address, - struct ui_file *stream, int recurse, - const struct value *val, - const struct value_print_options *options, -Index: gdb-7.10.50.20151027/gdb/guile/scm-pretty-print.c +Index: gdb-7.11.50.20160716/gdb/rust-lang.c =================================================================== ---- gdb-7.10.50.20151027.orig/gdb/guile/scm-pretty-print.c 2015-11-02 21:23:11.254351930 +0100 -+++ gdb-7.10.50.20151027/gdb/guile/scm-pretty-print.c 2015-11-02 21:23:13.245365030 +0100 -@@ -958,7 +958,7 @@ ppscm_print_children (SCM printer, enum - enum ext_lang_rc - gdbscm_apply_val_pretty_printer (const struct extension_language_defn *extlang, - struct type *type, const gdb_byte *valaddr, -- int embedded_offset, CORE_ADDR address, -+ LONGEST embedded_offset, CORE_ADDR address, - struct ui_file *stream, int recurse, - const struct value *val, - const struct value_print_options *options, +--- gdb-7.11.50.20160716.orig/gdb/rust-lang.c 2016-07-16 14:33:42.123510680 +0200 ++++ gdb-7.11.50.20160716/gdb/rust-lang.c 2016-07-16 14:33:44.551530221 +0200 +@@ -410,7 +410,7 @@ + + static void + rust_printstr (struct ui_file *stream, struct type *type, +- const gdb_byte *string, unsigned int length, ++ const gdb_byte *string, ULONGEST length, + const char *user_encoding, int force_ellipses, + const struct value_print_options *options) + { +@@ -456,7 +456,7 @@ + /* la_val_print implementation for Rust. */ + + static void +-rust_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, ++rust_val_print (struct type *type, const gdb_byte *valaddr, LONGEST embedded_offset, + CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, + const struct value_print_options *options) diff --git a/gdb-rhbz795424-bitpos-23of25.patch b/gdb-rhbz795424-bitpos-23of25.patch index 1f6d237..85760db 100644 --- a/gdb-rhbz795424-bitpos-23of25.patch +++ b/gdb-rhbz795424-bitpos-23of25.patch @@ -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)) diff --git a/gdb-rhbz795424-bitpos-25of25.patch b/gdb-rhbz795424-bitpos-25of25.patch index 20db915..ef5e048 100644 --- a/gdb-rhbz795424-bitpos-25of25.patch +++ b/gdb-rhbz795424-bitpos-25of25.patch @@ -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.50.20160630/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.50.20160630.orig/gdb/f-lang.h 2016-07-16 10:56:11.682762722 +0200 ++++ gdb-7.11.50.20160630/gdb/f-lang.h 2016-07-16 10:56:15.554793704 +0200 +@@ -49,9 +49,9 @@ struct symbol *contents[1]; }; @@ -63,38 +63,38 @@ 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.50.20160630/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.50.20160630.orig/gdb/f-typeprint.c 2016-07-16 10:56:11.682762722 +0200 ++++ gdb-7.11.50.20160630/gdb/f-typeprint.c 2016-07-16 10:56:43.795019660 +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 - - lower_bound = f77_get_lowerbound (type); - if (lower_bound != 1) /* Not the default. */ -- fprintf_filtered (stream, "%d:", lower_bound); -+ fprintf_filtered (stream, "%s:", plongest (lower_bound)); +@@ -194,7 +194,7 @@ + { + lower_bound = f77_get_lowerbound (type); + if (lower_bound != 1) /* Not the default. */ +- fprintf_filtered (stream, "%d:", lower_bound); ++ fprintf_filtered (stream, "%s:", plongest (lower_bound)); - /* 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 - else - { - upper_bound = f77_get_upperbound (type); -- fprintf_filtered (stream, "%d", upper_bound); -+ fprintf_filtered (stream, "%s", plongest (upper_bound)); - } + /* Make sure that, if we have an assumed size array, we + print out a warning and print the upperbound as '*'. */ +@@ -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.50.20160630/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.50.20160630.orig/gdb/f-valprint.c 2016-07-16 10:56:11.682762722 +0200 ++++ gdb-7.11.50.20160630/gdb/f-valprint.c 2016-07-16 10:56:15.554793704 +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); } diff --git a/gdb-rhbz795424-bitpos-lazyvalue.patch b/gdb-rhbz795424-bitpos-lazyvalue.patch index 31978ec..8025e2d 100644 --- a/gdb-rhbz795424-bitpos-lazyvalue.patch +++ b/gdb-rhbz795424-bitpos-lazyvalue.patch @@ -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'^/_% diff --git a/gdb-testsuite-py-unwind-m32.patch b/gdb-testsuite-py-unwind-m32.patch new file mode 100644 index 0000000..71a4a74 --- /dev/null +++ b/gdb-testsuite-py-unwind-m32.patch @@ -0,0 +1,54 @@ +http://sourceware.org/ml/gdb-patches/2016-07/msg00180.html +Subject: [testsuite patch] Skip py-unwind.exp on x86_64 -m32 + + +--vkogqOf2sHV7VnPd +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline + +Hi, + +(gdb) source /home/jkratoch/redhat/gdb-clean/gdb/testsuite/outputs/gdb.python/py-unwind/py-unwind.py^M +Python script imported^M +Python Exception Bad register: ^M +(gdb) FAIL: gdb.python/py-unwind.exp: import python scripts + +class TestUnwinder(Unwinder): + AMD64_RBP = 6 + AMD64_RSP = 7 + AMD64_RIP = 16 + +This was already discussed here: + Re: [testsuite patch] Fix gdb.btrace/tailcall-only.exp errors on x86_64-m32 + https://sourceware.org/ml/gdb-patches/2016-04/msg00222.html + Message-ID: <20160411195537.GA22299@host1.jankratochvil.net> +but no GDB maintainer gave an answer how to run testsuite in cross-arch mode. + + +Jan + +--vkogqOf2sHV7VnPd +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline; filename=1 + +gdb/testsuite/ChangeLog +2016-07-17 Jan Kratochvil + + * gdb.python/py-unwind.exp: Test also ![is_lp64_target]. + +diff --git a/gdb/testsuite/gdb.python/py-unwind.exp b/gdb/testsuite/gdb.python/py-unwind.exp +index 5172a03..e31a472 100644 +--- a/gdb/testsuite/gdb.python/py-unwind.exp ++++ b/gdb/testsuite/gdb.python/py-unwind.exp +@@ -28,7 +28,7 @@ if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } { + if { [skip_python_tests] } { continue } + + # This test runs on a specific platform. +-if { ! [istarget x86_64-*]} { continue } ++if { ![istarget x86_64-*-* ] || ![is_lp64_target] } { continue } + + # The following tests require execution. + + +--vkogqOf2sHV7VnPd-- + diff --git a/gdb-testsuite-selftest-cxx.patch b/gdb-testsuite-selftest-cxx.patch new file mode 100644 index 0000000..4ab3f3a --- /dev/null +++ b/gdb-testsuite-selftest-cxx.patch @@ -0,0 +1,66 @@ +http://sourceware.org/ml/gdb-patches/2016-07/msg00179.html +Subject: [testsuite patch] Fix gdb.gdb/selftest.exp for C++-O2-g-built GDB + + +--ZGiS0Q5IWpPtfppv +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline + +Hi, + +tested on Fedora 24 x86_64 after: + ./configure; make +That is: CFLAGS='-g -O2' CXXFLAGS='-g -O2' + +OK for check-in? + + +Jan + +--ZGiS0Q5IWpPtfppv +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline; filename=1 + +gdb/testsuite/ChangeLog +2016-07-16 Jan Kratochvil + + * gdb.gdb/selftest.exp (do_steps_and_nexts): Add "next over TRY" and + "step into captured_main (args)". + (test_with_self): Add "captured_main (args);" case. + +diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest.exp +index af0026c..2cdd5c1 100644 +--- a/gdb/testsuite/gdb.gdb/selftest.exp ++++ b/gdb/testsuite/gdb.gdb/selftest.exp +@@ -116,6 +116,14 @@ proc do_steps_and_nexts {} { + set description "next over lim_at_start initialization" + set command "next" + } ++ -re ".*TRY.*$gdb_prompt $" { ++ set description "next over TRY" ++ set command "next" ++ } ++ -re ".*captured_main \\(args\\);.*$gdb_prompt $" { ++ set description "step into captured_main (args)" ++ set command "step" ++ } + -re ".*count . 0x3.*$gdb_prompt $" { + set description "next over conditional stack alignment code 1" + set command "next" +@@ -330,6 +338,13 @@ proc test_with_self { executable } { + -re "Starting program.*Breakpoint \[0-9\]+,.*captured_main .data.*$gdb_prompt $" { + xfail "$description (line numbers scrambled?)" + } ++ -re "captured_main \\(args\\);\r\n$gdb_prompt $" { ++ gdb_test_multiple "step" "$description" { ++ -re "captured_main .data.* at .*main.c:.*$gdb_prompt $" { ++ pass "$description" ++ } ++ } ++ } + -re "vfork: No more processes.*$gdb_prompt $" { + fail "$description (out of virtual memory)" + set timeout $oldtimeout + +--ZGiS0Q5IWpPtfppv-- + diff --git a/gdb-vla-intel-04of23-fix.patch b/gdb-vla-intel-04of23-fix.patch deleted file mode 100644 index 3b8d77a..0000000 --- a/gdb-vla-intel-04of23-fix.patch +++ /dev/null @@ -1,42 +0,0 @@ -Re: [PATCH 04/23] vla: make dynamic fortran arrays functional. -https://sourceware.org/ml/gdb-patches/2014-06/msg00570.html - -Index: gdb-7.10.50.20151027/gdb/valarith.c -=================================================================== ---- gdb-7.10.50.20151027.orig/gdb/valarith.c 2015-11-03 20:41:48.543504999 +0100 -+++ gdb-7.10.50.20151027/gdb/valarith.c 2015-11-03 20:46:36.995238888 +0100 -@@ -193,10 +193,17 @@ value_subscripted_rvalue (struct value * - struct type *array_type = check_typedef (value_type (array)); - struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (array_type)); - unsigned int elt_size = type_length_units (elt_type); -- unsigned int elt_offs = longest_to_int (index - lowerbound); -+ unsigned int elt_offs; - LONGEST elt_stride = TYPE_BYTE_STRIDE (TYPE_INDEX_TYPE (array_type)); - struct value *v; - -+ if (TYPE_NOT_ASSOCIATED (array_type)) -+ error (_("no such vector element (vector not associated)")); -+ if (TYPE_NOT_ALLOCATED (array_type)) -+ error (_("no such vector element (vector not allocated)")); -+ -+ elt_offs = longest_to_int (index - lowerbound); -+ - if (elt_stride > 0) - elt_offs *= elt_stride; - else if (elt_stride < 0) -@@ -210,14 +217,7 @@ value_subscripted_rvalue (struct value * - - if (index < lowerbound || (!TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (array_type) - && elt_offs >= type_length_units (array_type))) -- { -- if (type_not_associated (array_type)) -- error (_("no such vector element (vector not associated)")); -- else if (type_not_allocated (array_type)) -- error (_("no such vector element (vector not allocated)")); -- else -- error (_("no such vector element")); -- } -+ error (_("no such vector element")); - - if (VALUE_LVAL (array) == lval_memory && value_lazy (array)) - v = allocate_value_lazy (elt_type); diff --git a/gdb-vla-intel-1of7.patch b/gdb-vla-intel-1of7.patch new file mode 100644 index 0000000..b572922 --- /dev/null +++ b/gdb-vla-intel-1of7.patch @@ -0,0 +1,180 @@ +From 26e156d62211ca8458faa326f21940e9fa18c8fe Mon Sep 17 00:00:00 2001 +From: Bernhard Heckel +Date: Tue, 12 Jul 2016 08:19:34 +0200 +Subject: [PATCH 1/7] Fortran: Testsuite, fix differences in type naming. + +Continued on 0c13f7e559afe5f973a59311b0e401296c48d96c +(fortran: Testsuite, fix different type naming across compilers). + +2016-06-08 Bernhard Heckel + +gdb/Testsuite/Changelog: + * gdb.fortran/vla-value.exp: Use type names defined in libfortran. + * gdb.mi/mi-var-child-f.exp: Likewise. + * gdb.mi/mi-vla-fortran.exp: Likewise. + +Change-Id: I7ee94587a992add27fec77c7726f9a69c8fdf373 +--- + gdb/testsuite/gdb.fortran/vla-value.exp | 12 ++++++++---- + gdb/testsuite/gdb.mi/mi-var-child-f.exp | 7 +++---- + gdb/testsuite/gdb.mi/mi-vla-fortran.exp | 18 +++++++++++------- + 3 files changed, 22 insertions(+), 15 deletions(-) + +diff --git a/gdb/testsuite/gdb.fortran/vla-value.exp b/gdb/testsuite/gdb.fortran/vla-value.exp +index 0945181..275f738 100644 +--- a/gdb/testsuite/gdb.fortran/vla-value.exp ++++ b/gdb/testsuite/gdb.fortran/vla-value.exp +@@ -14,6 +14,7 @@ + # along with this program. If not, see . + + standard_testfile "vla.f90" ++load_lib "fortran.exp" + + if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \ + {debug f90 quiet}] } { +@@ -25,12 +26,15 @@ if ![runto_main] { + return -1 + } + ++# Depending on the compiler being used, the type names can be printed differently. ++set real [fortran_real4] ++ + # Try to access values in non allocated VLA + gdb_breakpoint [gdb_get_line_number "vla1-init"] + gdb_continue_to_breakpoint "vla1-init" + gdb_test "print vla1" " = " "print non-allocated vla1" + gdb_test "print &vla1" \ +- " = \\\(PTR TO -> \\\( real\\\(kind=4\\\) \\\(\\\)\\\)\\\) $hex" \ ++ " = \\\(PTR TO -> \\\( $real \\\(\\\)\\\)\\\) $hex" \ + "print non-allocated &vla1" + gdb_test "print vla1(1,1,1)" "no such vector element \\\(vector not allocated\\\)" \ + "print member in non-allocated vla1 (1)" +@@ -51,7 +55,7 @@ with_timeout_factor 15 { + "step over value assignment of vla1" + } + gdb_test "print &vla1" \ +- " = \\\(PTR TO -> \\\( real\\\(kind=4\\\) \\\(10,10,10\\\)\\\)\\\) $hex" \ ++ " = \\\(PTR TO -> \\\( $real \\\(10,10,10\\\)\\\)\\\) $hex" \ + "print allocated &vla1" + gdb_test "print vla1(3, 6, 9)" " = 1311" "print allocated vla1(3,6,9)" + gdb_test "print vla1(1, 3, 8)" " = 1311" "print allocated vla1(1,3,8)" +@@ -71,7 +75,7 @@ gdb_test "print vla1(9, 9, 9)" " = 999" \ + # Try to access values in undefined pointer to VLA (dangling) + gdb_test "print pvla" " = " "print undefined pvla" + gdb_test "print &pvla" \ +- " = \\\(PTR TO -> \\\( real\\\(kind=4\\\) \\\(\\\)\\\)\\\) $hex" \ ++ " = \\\(PTR TO -> \\\( $real \\\(\\\)\\\)\\\) $hex" \ + "print non-associated &pvla" + gdb_test "print pvla(1, 3, 8)" "no such vector element \\\(vector not associated\\\)" \ + "print undefined pvla(1,3,8)" +@@ -80,7 +84,7 @@ gdb_test "print pvla(1, 3, 8)" "no such vector element \\\(vector not associated + gdb_breakpoint [gdb_get_line_number "pvla-associated"] + gdb_continue_to_breakpoint "pvla-associated" + gdb_test "print &pvla" \ +- " = \\\(PTR TO -> \\\( real\\\(kind=4\\\) \\\(10,10,10\\\)\\\)\\\) $hex" \ ++ " = \\\(PTR TO -> \\\( $real \\\(10,10,10\\\)\\\)\\\) $hex" \ + "print associated &pvla" + gdb_test "print pvla(3, 6, 9)" " = 42" "print associated pvla(3,6,9)" + gdb_test "print pvla(1, 3, 8)" " = 1001" "print associated pvla(1,3,8)" +diff --git a/gdb/testsuite/gdb.mi/mi-var-child-f.exp b/gdb/testsuite/gdb.mi/mi-var-child-f.exp +index f3ed7c2..bc44c6b 100644 +--- a/gdb/testsuite/gdb.mi/mi-var-child-f.exp ++++ b/gdb/testsuite/gdb.mi/mi-var-child-f.exp +@@ -17,6 +17,7 @@ + + load_lib mi-support.exp + set MIFLAGS "-i=mi" ++load_lib "fortran.exp" + + if { [skip_fortran_tests] } { return -1 } + +@@ -40,10 +41,8 @@ mi_runto MAIN__ + mi_create_varobj "array" "array" "create local variable array" + + +-# Depending on the compiler version being used, the name of the 4-byte integer +-# and real types can be printed differently. For instance, gfortran-4.1 uses +-# "int4" whereas gfortran-4.3 uses "integer(kind=4)". +-set int4 "(int4|integer\\(kind=4\\))" ++# Depending on the compiler being used, the type names can be printed differently. ++set int4 [fortran_int4] + + set children [list [list "array.-1" "-1" 2 "$int4 \\(2\\)"] \ + [list "array.0" "0" 2 "$int4 \\(2\\)"] \ +diff --git a/gdb/testsuite/gdb.mi/mi-vla-fortran.exp b/gdb/testsuite/gdb.mi/mi-vla-fortran.exp +index 333b71a..1779ec0 100644 +--- a/gdb/testsuite/gdb.mi/mi-vla-fortran.exp ++++ b/gdb/testsuite/gdb.mi/mi-vla-fortran.exp +@@ -18,6 +18,7 @@ + + load_lib mi-support.exp + set MIFLAGS "-i=mi" ++load_lib "fortran.exp" + + gdb_exit + if [mi_gdb_start] { +@@ -32,6 +33,9 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable \ + return -1 + } + ++# Depending on the compiler being used, the type names can be printed differently. ++set real [fortran_real4] ++ + mi_delete_breakpoints + mi_gdb_reinitialize_dir $srcdir/$subdir + mi_gdb_load ${binfile} +@@ -58,7 +62,7 @@ mi_gdb_test "503-var-evaluate-expression vla1_not_allocated" \ + "503\\^done,value=\"\\\[0\\\]\"" \ + "eval variable vla1_not_allocated" + mi_list_array_varobj_children_with_index "vla1_not_allocated" "0" "1" \ +- "real\\\(kind=4\\\)" "get children of vla1_not_allocated" ++ "$real" "get children of vla1_not_allocated" + + + +@@ -71,10 +75,10 @@ mi_expect_stop "breakpoint-hit" "vla" "" ".*vla.f90" "$bp_lineno" \ + mi_gdb_test "510-data-evaluate-expression vla1" \ + "510\\^done,value=\"\\(.*\\)\"" "evaluate allocated vla" + +-mi_create_varobj_checked vla1_allocated vla1 "real\\\(kind=4\\\) \\\(5\\\)" \ ++mi_create_varobj_checked vla1_allocated vla1 "$real \\\(5\\\)" \ + "create local variable vla1_allocated" + mi_gdb_test "511-var-info-type vla1_allocated" \ +- "511\\^done,type=\"real\\\(kind=4\\\) \\\(5\\\)\"" \ ++ "511\\^done,type=\"$real \\\(5\\\)\"" \ + "info type variable vla1_allocated" + mi_gdb_test "512-var-show-format vla1_allocated" \ + "512\\^done,format=\"natural\"" \ +@@ -83,7 +87,7 @@ mi_gdb_test "513-var-evaluate-expression vla1_allocated" \ + "513\\^done,value=\"\\\[5\\\]\"" \ + "eval variable vla1_allocated" + mi_list_array_varobj_children_with_index "vla1_allocated" "5" "1" \ +- "real\\\(kind=4\\\)" "get children of vla1_allocated" ++ "$real" "get children of vla1_allocated" + + + set bp_lineno [gdb_get_line_number "vla1-filled"] +@@ -148,7 +152,7 @@ gdb_expect { + "583\\^done,value=\"\\\[0\\\]\"" \ + "eval variable pvla2_not_associated" + mi_list_array_varobj_children_with_index "pvla2_not_associated" "0" "1" \ +- "real\\\(kind=4\\\)" "get children of pvla2_not_associated" ++ "$real" "get children of pvla2_not_associated" + } + -re "580\\^error,msg=\"value contents too large \\(\[0-9\]+ bytes\\).*${mi_gdb_prompt}$" { + # Undefined behaviour in gfortran. +@@ -173,9 +177,9 @@ mi_gdb_test "590-data-evaluate-expression pvla2" \ + "evaluate associated vla" + + mi_create_varobj_checked pvla2_associated pvla2 \ +- "real\\\(kind=4\\\) \\\(5,2\\\)" "create local variable pvla2_associated" ++ "$real \\\(5,2\\\)" "create local variable pvla2_associated" + mi_gdb_test "591-var-info-type pvla2_associated" \ +- "591\\^done,type=\"real\\\(kind=4\\\) \\\(5,2\\\)\"" \ ++ "591\\^done,type=\"$real \\\(5,2\\\)\"" \ + "info type variable pvla2_associated" + mi_gdb_test "592-var-show-format pvla2_associated" \ + "592\\^done,format=\"natural\"" \ +-- +2.7.4 + diff --git a/gdb-vla-intel-2of7.patch b/gdb-vla-intel-2of7.patch new file mode 100644 index 0000000..61a177a --- /dev/null +++ b/gdb-vla-intel-2of7.patch @@ -0,0 +1,75 @@ +From a879b2501e61ee3d3efadbdb6b33212b57d3a2e1 Mon Sep 17 00:00:00 2001 +From: Bernhard Heckel +Date: Tue, 12 Jul 2016 08:19:34 +0200 +Subject: [PATCH 2/7] Fortran: Resolve dynamic properties of pointer types. + +In Fortran a pointer may have a dynamic associated property. + +2016-07-08 Bernhard Heckel + +gdb/Changelog: + * gdbtypes.c (resolve_dynamic_types_internal): Resolve pointer types. + (resolve_dynamic_pointer): New. + +Change-Id: Ie4b9d6397cfa089ee2e0db02beb18415a751c1c0 +--- + gdb/gdbtypes.c | 29 ++++++++++++++++++++++++++++- + 1 file changed, 28 insertions(+), 1 deletion(-) + +diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c +index ec5c17a..b53e649 100644 +--- a/gdb/gdbtypes.c ++++ b/gdb/gdbtypes.c +@@ -1806,7 +1806,8 @@ is_dynamic_type_internal (struct type *type, int top_level) + type = check_typedef (type); + + /* We only want to recognize references at the outermost level. */ +- if (top_level && TYPE_CODE (type) == TYPE_CODE_REF) ++ if (top_level && ++ (TYPE_CODE (type) == TYPE_CODE_REF || TYPE_CODE (type) == TYPE_CODE_PTR)) + type = check_typedef (TYPE_TARGET_TYPE (type)); + + /* Types that have a dynamic TYPE_DATA_LOCATION are considered +@@ -2105,6 +2106,28 @@ resolve_dynamic_struct (struct type *type, + return resolved_type; + } + ++/* Worker for pointer types. */ ++ ++static struct type * ++resolve_dynamic_pointer (struct type *type, ++ struct property_addr_info *addr_stack) ++{ ++ struct dynamic_prop *prop; ++ CORE_ADDR value; ++ ++ type = copy_type (type); ++ ++ /* Resolve associated property. */ ++ prop = TYPE_ASSOCIATED_PROP (type); ++ if (prop != NULL && dwarf2_evaluate_property (prop, NULL, addr_stack, &value)) ++ { ++ TYPE_DYN_PROP_ADDR (prop) = value; ++ TYPE_DYN_PROP_KIND (prop) = PROP_CONST; ++ } ++ ++ return type; ++} ++ + /* Worker for resolved_dynamic_type. */ + + static struct type * +@@ -2153,6 +2176,10 @@ resolve_dynamic_type_internal (struct type *type, + break; + } + ++ case TYPE_CODE_PTR: ++ resolved_type = resolve_dynamic_pointer (type, addr_stack); ++ break; ++ + case TYPE_CODE_ARRAY: + resolved_type = resolve_dynamic_array (type, addr_stack); + break; +-- +2.7.4 + diff --git a/gdb-vla-intel-3of7.patch b/gdb-vla-intel-3of7.patch new file mode 100644 index 0000000..8095404 --- /dev/null +++ b/gdb-vla-intel-3of7.patch @@ -0,0 +1,113 @@ +From d2fd5fea2c06052c53d99bfa25fdaed9cf5dd217 Mon Sep 17 00:00:00 2001 +From: Bernhard Heckel +Date: Tue, 12 Jul 2016 08:19:34 +0200 +Subject: [PATCH 3/7] Typeprint: Resolve any dynamic target type of a pointer. + +Before continuing with language specific type printing +we have to resolve the target type of a pointer +as we might wanna print more details of the target +like the dimension of an array. We have to resolve it here +as we don't have any address information later on. + +2016-07-08 Bernhard Heckel + +gdb/Changelog: + * typeprint.c (whatis_exp): Resolve dynamic target type + of pointers. + +gdb/Testsuite/Changelog: + * gdb.cp/vla-cxx.cc: Added pointer to dynamic type. + * gdb.cp/vla-cxx.exp: Test pointer to dynamic type. + +Change-Id: Idff0d6dd0eab3125b45d470a12b5e66b392e42c3 +--- + gdb/testsuite/gdb.cp/vla-cxx.cc | 9 +++++++++ + gdb/testsuite/gdb.cp/vla-cxx.exp | 5 +++++ + gdb/typeprint.c | 19 +++++++++++++++++++ + 3 files changed, 33 insertions(+) + +diff --git a/gdb/testsuite/gdb.cp/vla-cxx.cc b/gdb/testsuite/gdb.cp/vla-cxx.cc +index a1fd510..5f8f8ab 100644 +--- a/gdb/testsuite/gdb.cp/vla-cxx.cc ++++ b/gdb/testsuite/gdb.cp/vla-cxx.cc +@@ -15,6 +15,10 @@ + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + ++extern "C" { ++#include ++} ++ + struct container; + + struct element +@@ -40,11 +44,16 @@ int main(int argc, char **argv) + typedef typeof (vla) &vlareftypedef; + vlareftypedef vlaref2 (vla); + container c; ++ typeof (vla) *ptr = NULL; ++ ++ // Before pointer assignment ++ ptr = &vla; + + for (int i = 0; i < z; ++i) + vla[i] = 5 + 2 * i; + + // vlas_filled + vla[0] = 2 * vla[0]; ++ + return vla[2]; + } +diff --git a/gdb/testsuite/gdb.cp/vla-cxx.exp b/gdb/testsuite/gdb.cp/vla-cxx.exp +index f6224dc..babdfb7 100644 +--- a/gdb/testsuite/gdb.cp/vla-cxx.exp ++++ b/gdb/testsuite/gdb.cp/vla-cxx.exp +@@ -23,6 +23,10 @@ if ![runto_main] { + return -1 + } + ++gdb_breakpoint [gdb_get_line_number "Before pointer assignment"] ++gdb_continue_to_breakpoint "Before pointer assignment" ++gdb_test "ptype ptr" "int \\(\\*\\)\\\[variable length\\\]" "ptype ptr, Before pointer assignment" ++ + gdb_breakpoint [gdb_get_line_number "vlas_filled"] + gdb_continue_to_breakpoint "vlas_filled" + +@@ -33,3 +37,4 @@ gdb_test "print vlaref" " = \\(int \\(&\\)\\\[3\\\]\\) @$hex: \\{5, 7, 9\\}" + # bug being tested, it's better not to depend on the exact spelling. + gdb_test "print vlaref2" " = \\(.*\\) @$hex: \\{5, 7, 9\\}" + gdb_test "print c" " = \\{e = \\{c = @$hex\\}\\}" ++gdb_test "ptype ptr" "int \\(\\*\\)\\\[3\\\]" +diff --git a/gdb/typeprint.c b/gdb/typeprint.c +index e77513e..e3d84c7 100644 +--- a/gdb/typeprint.c ++++ b/gdb/typeprint.c +@@ -485,6 +485,25 @@ whatis_exp (char *exp, int show) + printf_filtered (" */\n"); + } + ++ /* Resolve any dynamic target type, as we might print ++ additional information about the target. ++ For example, in Fortran and C we are printing the dimension of the ++ dynamic array the pointer is pointing to. */ ++ if (TYPE_CODE (type) == TYPE_CODE_PTR ++ && is_dynamic_type (type) == 1) ++ { ++ CORE_ADDR addr; ++ if (NULL != TYPE_DATA_LOCATION (TYPE_TARGET_TYPE(type))) ++ addr = value_address (val); ++ else ++ addr = value_as_address (val); ++ ++ if (addr != 0 ++ && type_not_associated (type) == 0) ++ TYPE_TARGET_TYPE (type) = resolve_dynamic_type (TYPE_TARGET_TYPE (type), ++ NULL, addr); ++ } ++ + LA_PRINT_TYPE (type, "", gdb_stdout, show, 0, &flags); + printf_filtered ("\n"); + +-- +2.7.4 + diff --git a/gdb-vla-intel-4of7.patch b/gdb-vla-intel-4of7.patch new file mode 100644 index 0000000..62dca35 --- /dev/null +++ b/gdb-vla-intel-4of7.patch @@ -0,0 +1,508 @@ +From f63782d25ebd593c4c4669d4c394a2706f15e660 Mon Sep 17 00:00:00 2001 +From: Bernhard Heckel +Date: Tue, 12 Jul 2016 08:19:34 +0200 +Subject: [PATCH 4/7] Fortran: Typeprint, fix dangling types. + +Show the type of not-allocated and/or not-associated types +as this is known. For array types and pointer to array types +we are going to print the number of ranks. + +2016-06-30 Bernhard Heckel + +gdb/ChangeLog: + * f-typeprint.c (f_print_type): Don't bypass dangling types. + (f_type_print_varspec_suffix): Add print_rank parameter. + (f_type_print_varspec_suffix): Print ranks of array types + in case they dangling. + (f_type_print_base): Add print_rank parameter. + +gdb/Testsuite/ChangeLog: + * gdb.fortran/pointers.f90: New. + * gdb.fortran/print_type.exp: New. + * gdb.fortran/vla-ptype.exp: Adapt expected results. + * gdb.fortran/vla-type.exp: Likewise. + * gdb.fortran/vla-value.exp: Likewise. + * gdb.mi/mi-vla-fortran.exp: Likewise. + +Change-Id: Ib55f28b4092cf88e34918449a2ebb6e5daafe512 +--- + gdb/f-typeprint.c | 95 +++++++++++++++-------------- + gdb/testsuite/gdb.fortran/pointers.f90 | 80 +++++++++++++++++++++++++ + gdb/testsuite/gdb.fortran/print_type.exp | 100 +++++++++++++++++++++++++++++++ + gdb/testsuite/gdb.fortran/vla-ptype.exp | 12 ++-- + gdb/testsuite/gdb.fortran/vla-type.exp | 7 ++- + gdb/testsuite/gdb.fortran/vla-value.exp | 4 +- + gdb/testsuite/gdb.mi/mi-vla-fortran.exp | 9 +-- + 7 files changed, 248 insertions(+), 59 deletions(-) + create mode 100644 gdb/testsuite/gdb.fortran/pointers.f90 + create mode 100755 gdb/testsuite/gdb.fortran/print_type.exp + +Index: gdb-7.11.50.20160630/gdb/f-typeprint.c +=================================================================== +--- gdb-7.11.50.20160630.orig/gdb/f-typeprint.c 2016-07-16 10:54:48.749099150 +0200 ++++ gdb-7.11.50.20160630/gdb/f-typeprint.c 2016-07-16 10:55:59.763667355 +0200 +@@ -37,7 +37,7 @@ + #endif + + static void f_type_print_varspec_suffix (struct type *, struct ui_file *, int, +- int, int, int); ++ int, int, int, int); + + void f_type_print_varspec_prefix (struct type *, struct ui_file *, + int, int); +@@ -54,18 +54,6 @@ + enum type_code code; + int demangled_args; + +- if (type_not_associated (type)) +- { +- val_print_not_associated (stream); +- return; +- } +- +- if (type_not_allocated (type)) +- { +- val_print_not_allocated (stream); +- return; +- } +- + f_type_print_base (type, stream, show, level); + code = TYPE_CODE (type); + if ((varstring != NULL && *varstring != '\0') +@@ -87,7 +75,7 @@ + so don't print an additional pair of ()'s. */ + + demangled_args = varstring[strlen (varstring) - 1] == ')'; +- f_type_print_varspec_suffix (type, stream, show, 0, demangled_args, 0); ++ f_type_print_varspec_suffix (type, stream, show, 0, demangled_args, 0, 0); + } + } + +@@ -157,7 +145,7 @@ + static void + f_type_print_varspec_suffix (struct type *type, struct ui_file *stream, + 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; + +@@ -181,34 +169,50 @@ + fprintf_filtered (stream, "("); + + if (type_not_associated (type)) +- val_print_not_associated (stream); ++ print_rank_only = 1; + else if (type_not_allocated (type)) +- val_print_not_allocated (stream); ++ print_rank_only = 1; ++ else if ((TYPE_ASSOCIATED_PROP (type) ++ && PROP_CONST != TYPE_DYN_PROP_KIND (TYPE_ASSOCIATED_PROP (type))) ++ || (TYPE_ALLOCATED_PROP (type) ++ && PROP_CONST != TYPE_DYN_PROP_KIND (TYPE_ALLOCATED_PROP (type))) ++ || (TYPE_DATA_LOCATION (type) ++ && PROP_CONST != TYPE_DYN_PROP_KIND (TYPE_DATA_LOCATION (type)))) ++ /* This case exist when we ptype a typename which has the ++ dynamic properties but cannot be resolved as there is ++ no object. */ ++ print_rank_only = 1; ++ ++ if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY) ++ f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, ++ 0, 0, arrayprint_recurse_level, ++ print_rank_only); ++ ++ if (print_rank_only == 1) ++ fprintf_filtered (stream, ":"); + else +- { +- if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY) +- f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, +- 0, 0, arrayprint_recurse_level); +- +- lower_bound = f77_get_lowerbound (type); +- if (lower_bound != 1) /* Not the default. */ +- fprintf_filtered (stream, "%d:", lower_bound); +- +- /* Make sure that, if we have an assumed size array, we +- print out a warning and print the upperbound as '*'. */ +- +- if (TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type)) +- fprintf_filtered (stream, "*"); +- else +- { +- upper_bound = f77_get_upperbound (type); +- fprintf_filtered (stream, "%d", upper_bound); +- } +- +- if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_ARRAY) +- f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, +- 0, 0, arrayprint_recurse_level); +- } ++ { ++ lower_bound = f77_get_lowerbound (type); ++ if (lower_bound != 1) /* Not the default. */ ++ fprintf_filtered (stream, "%d:", lower_bound); ++ ++ /* Make sure that, if we have an assumed size array, we ++ print out a warning and print the upperbound as '*'. */ ++ ++ if (TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type)) ++ fprintf_filtered (stream, "*"); ++ else ++ { ++ upper_bound = f77_get_upperbound (type); ++ fprintf_filtered (stream, "%d", upper_bound); ++ } ++ } ++ ++ if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_ARRAY) ++ f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, ++ 0, 0, arrayprint_recurse_level, ++ print_rank_only); ++ + if (arrayprint_recurse_level == 1) + fprintf_filtered (stream, ")"); + else +@@ -219,13 +223,14 @@ + case TYPE_CODE_PTR: + case TYPE_CODE_REF: + f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 1, 0, +- arrayprint_recurse_level); ++ arrayprint_recurse_level, 0); + fprintf_filtered (stream, ")"); + break; + + case TYPE_CODE_FUNC: + f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, +- passed_a_ptr, 0, arrayprint_recurse_level); ++ passed_a_ptr, 0, arrayprint_recurse_level, ++ 0); + if (passed_a_ptr) + fprintf_filtered (stream, ")"); + +@@ -376,7 +381,7 @@ + fputs_filtered (" :: ", stream); + fputs_filtered (TYPE_FIELD_NAME (type, index), stream); + f_type_print_varspec_suffix (TYPE_FIELD_TYPE (type, index), +- stream, show - 1, 0, 0, 0); ++ stream, show - 1, 0, 0, 0, 0); + fputs_filtered ("\n", stream); + } + fprintfi_filtered (level, stream, "End Type "); +Index: gdb-7.11.50.20160630/gdb/testsuite/gdb.fortran/pointers.f90 +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-7.11.50.20160630/gdb/testsuite/gdb.fortran/pointers.f90 2016-07-16 10:55:42.079525860 +0200 +@@ -0,0 +1,80 @@ ++! 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 . ++ ++program pointers ++ ++ type :: two ++ integer, allocatable :: ivla1 (:) ++ integer, allocatable :: ivla2 (:, :) ++ end type two ++ ++ logical, target :: logv ++ complex, target :: comv ++ character, target :: charv ++ character (len=3), target :: chara ++ integer, target :: intv ++ integer, target, dimension (10,2) :: inta ++ real, target :: realv ++ type(two), target :: twov ++ ++ logical, pointer :: logp ++ complex, pointer :: comp ++ character, pointer:: charp ++ character (len=3), pointer:: charap ++ integer, pointer :: intp ++ integer, pointer, dimension (:,:) :: intap ++ real, pointer :: realp ++ type(two), pointer :: twop ++ ++ nullify (logp) ++ nullify (comp) ++ nullify (charp) ++ nullify (charap) ++ nullify (intp) ++ nullify (intap) ++ nullify (realp) ++ nullify (twop) ++ ++ logp => logv ! Before pointer assignment ++ comp => comv ++ charp => charv ++ charap => chara ++ intp => intv ++ intap => inta ++ realp => realv ++ twop => twov ++ ++ logv = associated(logp) ! Before value assignment ++ comv = cmplx(1,2) ++ charv = "a" ++ chara = "abc" ++ intv = 10 ++ inta(:,:) = 1 ++ inta(3,1) = 3 ++ realv = 3.14 ++ ++ allocate (twov%ivla1(3)) ++ allocate (twov%ivla2(2,2)) ++ twov%ivla1(1) = 11 ++ twov%ivla1(2) = 12 ++ twov%ivla1(3) = 13 ++ twov%ivla2(1,1) = 211 ++ twov%ivla2(2,1) = 221 ++ twov%ivla2(1,2) = 212 ++ twov%ivla2(2,2) = 222 ++ ++ intv = intv + 1 ! After value assignment ++ ++end program pointers +Index: gdb-7.11.50.20160630/gdb/testsuite/gdb.fortran/print_type.exp +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-7.11.50.20160630/gdb/testsuite/gdb.fortran/print_type.exp 2016-07-16 10:55:42.079525860 +0200 +@@ -0,0 +1,100 @@ ++# 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 . ++ ++standard_testfile "pointers.f90" ++load_lib fortran.exp ++ ++if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \ ++ {debug f90 quiet}] } { ++ return -1 ++} ++ ++ ++if ![runto_main] { ++ untested "could not run to main" ++ return -1 ++} ++ ++# Depending on the compiler being used, the type names can be printed differently. ++set logical [fortran_logical4] ++set real [fortran_real4] ++set int [fortran_int4] ++set complex [fortran_complex4] ++ ++gdb_breakpoint [gdb_get_line_number "Before pointer assignment"] ++gdb_continue_to_breakpoint "Before pointer assignment" ++gdb_test "ptype logp" "type = PTR TO -> \\( $logical \\)" "ptype logp, not associated" ++gdb_test "ptype comp" "type = PTR TO -> \\( $complex \\)" "ptype comp, not associated" ++gdb_test "ptype charp" "type = PTR TO -> \\( character\\*1 \\)" "ptype charp, not associated" ++gdb_test "ptype charap" "type = PTR TO -> \\( character\\*3 \\)" "ptype charap, not associated" ++gdb_test "ptype intp" "type = PTR TO -> \\( $int \\)" "ptype intp, not associated" ++set test "ptype intap, not associated" ++gdb_test_multiple "ptype intap" $test { ++ -re "type = PTR TO -> \\( $int \\(:,:\\)\\)\r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re "type = $int \\(:,:\\)\r\n$gdb_prompt $" { ++ pass $test ++ } ++} ++gdb_test "ptype realp" "type = PTR TO -> \\( $real \\)" "ptype realp, not associated" ++gdb_test "ptype twop" \ ++ [multi_line "type = PTR TO -> \\( Type two" \ ++ " $int :: ivla1\\(:\\)" \ ++ " $int :: ivla2\\(:,:\\)" \ ++ "End Type two \\)"] \ ++ "ptype twop, not associated" ++gdb_test "ptype two" \ ++ [multi_line "type = Type two" \ ++ " $int :: ivla1\\(:\\)" \ ++ " $int :: ivla2\\(:,:\\)" \ ++ "End Type two"] ++ ++ ++gdb_breakpoint [gdb_get_line_number "Before value assignment"] ++gdb_continue_to_breakpoint "Before value assignment" ++gdb_test "ptype twop" \ ++ [multi_line "type = PTR TO -> \\( Type two" \ ++ " $int :: ivla1\\(:\\)" \ ++ " $int :: ivla2\\(:,:\\)" \ ++ "End Type two \\)"] ++ ++ ++gdb_breakpoint [gdb_get_line_number "After value assignment"] ++gdb_continue_to_breakpoint "After value assignment" ++gdb_test "ptype logv" "type = $logical" ++gdb_test "ptype comv" "type = $complex" ++gdb_test "ptype charv" "type = character\\*1" ++gdb_test "ptype chara" "type = character\\*3" ++gdb_test "ptype intv" "type = $int" ++gdb_test "ptype inta" "type = $int \\(10,2\\)" ++gdb_test "ptype realv" "type = $real" ++ ++ ++gdb_test "ptype logp" "type = PTR TO -> \\( $logical \\)" ++gdb_test "ptype comp" "type = PTR TO -> \\( $complex \\)" ++gdb_test "ptype charp" "type = PTR TO -> \\( character\\*1 \\)" ++gdb_test "ptype charap" "type = PTR TO -> \\( character\\*3 \\)" ++gdb_test "ptype intp" "type = PTR TO -> \\( $int \\)" ++set test "ptype intap" ++gdb_test_multiple $test $test { ++ -re "type = $int \\(10,2\\)\r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re "type = PTR TO -> \\( $int \\(10,2\\)\\)\r\n$gdb_prompt $" { ++ pass $test ++ } ++} ++gdb_test "ptype realp" "type = PTR TO -> \\( $real \\)" +Index: gdb-7.11.50.20160630/gdb/testsuite/gdb.fortran/vla-ptype.exp +=================================================================== +--- gdb-7.11.50.20160630.orig/gdb/testsuite/gdb.fortran/vla-ptype.exp 2016-07-16 10:54:48.749099150 +0200 ++++ gdb-7.11.50.20160630/gdb/testsuite/gdb.fortran/vla-ptype.exp 2016-07-16 10:55:42.079525860 +0200 +@@ -32,9 +32,9 @@ + # Check the ptype of various VLA states and pointer to VLA's. + gdb_breakpoint [gdb_get_line_number "vla1-init"] + gdb_continue_to_breakpoint "vla1-init" +-gdb_test "ptype vla1" "type = " "ptype vla1 not initialized" +-gdb_test "ptype vla2" "type = " "ptype vla2 not initialized" +-gdb_test "ptype pvla" "type = " "ptype pvla not initialized" ++gdb_test "ptype vla1" "type = $real \\(:,:,:\\)" "ptype vla1 not initialized" ++gdb_test "ptype vla2" "type = $real \\(:,:,:\\)" "ptype vla2 not initialized" ++gdb_test "ptype pvla" "type = $real \\(:,:,:\\)" "ptype pvla not initialized" + gdb_test "ptype vla1(3, 6, 9)" "no such vector element \\\(vector not allocated\\\)" \ + "ptype vla1(3, 6, 9) not initialized" + gdb_test "ptype vla2(5, 45, 20)" \ +@@ -81,20 +81,20 @@ + + gdb_breakpoint [gdb_get_line_number "pvla-deassociated"] + gdb_continue_to_breakpoint "pvla-deassociated" +-gdb_test "ptype pvla" "type = " "ptype pvla deassociated" ++gdb_test "ptype pvla" "type = $real \\(:,:,:\\)" "ptype pvla deassociated" + gdb_test "ptype pvla(5, 45, 20)" \ + "no such vector element \\\(vector not associated\\\)" \ + "ptype pvla(5, 45, 20) not associated" + + gdb_breakpoint [gdb_get_line_number "vla1-deallocated"] + gdb_continue_to_breakpoint "vla1-deallocated" +-gdb_test "ptype vla1" "type = " "ptype vla1 not allocated" ++gdb_test "ptype vla1" "type = $real \\(:,:,:\\)" "ptype vla1 not allocated" + gdb_test "ptype vla1(3, 6, 9)" "no such vector element \\\(vector not allocated\\\)" \ + "ptype vla1(3, 6, 9) not allocated" + + gdb_breakpoint [gdb_get_line_number "vla2-deallocated"] + gdb_continue_to_breakpoint "vla2-deallocated" +-gdb_test "ptype vla2" "type = " "ptype vla2 not allocated" ++gdb_test "ptype vla2" "type = $real \\(:,:,:\\)" "ptype vla2 not allocated" + gdb_test "ptype vla2(5, 45, 20)" \ + "no such vector element \\\(vector not allocated\\\)" \ + "ptype vla2(5, 45, 20) not allocated" +Index: gdb-7.11.50.20160630/gdb/testsuite/gdb.fortran/vla-type.exp +=================================================================== +--- gdb-7.11.50.20160630.orig/gdb/testsuite/gdb.fortran/vla-type.exp 2016-07-16 10:54:48.749099150 +0200 ++++ gdb-7.11.50.20160630/gdb/testsuite/gdb.fortran/vla-type.exp 2016-07-16 10:55:42.080525868 +0200 +@@ -132,7 +132,10 @@ + "End Type one" ] + + # Check allocation status of dynamic array and it's dynamic members +-gdb_test "ptype fivedynarr" "type = " ++gdb_test "ptype fivedynarr" \ ++ [multi_line "type = Type five" \ ++ " Type one :: tone" \ ++ "End Type five \\(:\\)" ] + gdb_test "next" "" + gdb_test "ptype fivedynarr(2)" \ + [multi_line "type = Type five" \ +@@ -141,7 +144,7 @@ + "ptype fivedynarr(2), tone is not allocated" + gdb_test "ptype fivedynarr(2)%tone" \ + [multi_line "type = Type one" \ +- " $int :: ivla\\(\\)" \ ++ " $int :: ivla\\(:,:,:\\)" \ + "End Type one" ] \ + "ptype fivedynarr(2)%tone, not allocated" + +Index: gdb-7.11.50.20160630/gdb/testsuite/gdb.fortran/vla-value.exp +=================================================================== +--- gdb-7.11.50.20160630.orig/gdb/testsuite/gdb.fortran/vla-value.exp 2016-07-16 10:54:48.749099150 +0200 ++++ gdb-7.11.50.20160630/gdb/testsuite/gdb.fortran/vla-value.exp 2016-07-16 10:55:42.080525868 +0200 +@@ -34,7 +34,7 @@ + gdb_continue_to_breakpoint "vla1-init" + gdb_test "print vla1" " = " "print non-allocated vla1" + gdb_test "print &vla1" \ +- " = \\\(PTR TO -> \\\( $real \\\(\\\)\\\)\\\) $hex" \ ++ " = \\\(PTR TO -> \\\( $real \\\(:,:,:\\\)\\\)\\\) $hex" \ + "print non-allocated &vla1" + gdb_test "print vla1(1,1,1)" "no such vector element \\\(vector not allocated\\\)" \ + "print member in non-allocated vla1 (1)" +@@ -75,7 +75,7 @@ + # Try to access values in undefined pointer to VLA (dangling) + gdb_test "print pvla" " = " "print undefined pvla" + gdb_test "print &pvla" \ +- " = \\\(PTR TO -> \\\( $real \\\(\\\)\\\)\\\) $hex" \ ++ " = \\\(PTR TO -> \\\( $real \\\(:,:,:\\\)\\\)\\\) $hex" \ + "print non-associated &pvla" + gdb_test "print pvla(1, 3, 8)" "no such vector element \\\(vector not associated\\\)" \ + "print undefined pvla(1,3,8)" +Index: gdb-7.11.50.20160630/gdb/testsuite/gdb.mi/mi-vla-fortran.exp +=================================================================== +--- gdb-7.11.50.20160630.orig/gdb/testsuite/gdb.mi/mi-vla-fortran.exp 2016-07-16 10:54:48.749099150 +0200 ++++ gdb-7.11.50.20160630/gdb/testsuite/gdb.mi/mi-vla-fortran.exp 2016-07-16 10:55:42.080525868 +0200 +@@ -17,6 +17,7 @@ + # Array (VLA). + + load_lib mi-support.exp ++load_lib fortran.exp + set MIFLAGS "-i=mi" + load_lib "fortran.exp" + +@@ -50,10 +51,10 @@ + mi_gdb_test "500-data-evaluate-expression vla1" \ + "500\\^done,value=\"\"" "evaluate not allocated vla" + +-mi_create_varobj_checked vla1_not_allocated vla1 "" \ ++mi_create_varobj_checked vla1_not_allocated vla1 "$real \\(:\\)" \ + "create local variable vla1_not_allocated" + mi_gdb_test "501-var-info-type vla1_not_allocated" \ +- "501\\^done,type=\"\"" \ ++ "501\\^done,type=\"$real \\(:\\)\"" \ + "info type variable vla1_not_allocated" + mi_gdb_test "502-var-show-format vla1_not_allocated" \ + "502\\^done,format=\"natural\"" \ +@@ -140,10 +141,10 @@ + -re "580\\^done,value=\"\".*${mi_gdb_prompt}$" { + pass $test + +- mi_create_varobj_checked pvla2_not_associated pvla2 "" \ ++ mi_create_varobj_checked pvla2_not_associated pvla2 "$real \\(:,:\\)" \ + "create local variable pvla2_not_associated" + mi_gdb_test "581-var-info-type pvla2_not_associated" \ +- "581\\^done,type=\"\"" \ ++ "581\\^done,type=\"$real \\(:,:\\)\"" \ + "info type variable pvla2_not_associated" + mi_gdb_test "582-var-show-format pvla2_not_associated" \ + "582\\^done,format=\"natural\"" \ diff --git a/gdb-vla-intel-5of7.patch b/gdb-vla-intel-5of7.patch new file mode 100644 index 0000000..ca49b3c --- /dev/null +++ b/gdb-vla-intel-5of7.patch @@ -0,0 +1,349 @@ +From b6e668ccd356ea3e75d30f20314334b1203c22de Mon Sep 17 00:00:00 2001 +From: Bernhard Heckel +Date: Tue, 12 Jul 2016 08:19:34 +0200 +Subject: [PATCH 5/7] Resolve dynamic target types of pointers. + +When dereferencing pointers to dynamic target types, +resolve the target type. + +2016-06-30 Bernhard Heckel + +gdb/Changelog: + * NEWS: Added entry. + * c-valprint.c (c_print_val): Resolve dynamic target types. + * valops.c (value_ind): Resolve dynamic target types. + * valprint.c (check_printable): Don't shortcut not associated + pointers. + +gdb/Testsuite/Changelog: + * pointers.f90: Added pointer to dynamic types. + * gdb.fortran/pointers.exp: New. + +Change-Id: I998d4da4a5ba4899b8cb2115576f44efa741e698 +--- + gdb/NEWS | 2 + + gdb/c-valprint.c | 22 ++++++ + gdb/testsuite/gdb.cp/vla-cxx.exp | 4 ++ + gdb/testsuite/gdb.fortran/pointers.exp | 123 +++++++++++++++++++++++++++++++++ + gdb/testsuite/gdb.fortran/pointers.f90 | 17 +++++ + gdb/valops.c | 16 ++++- + gdb/valprint.c | 6 -- + 7 files changed, 182 insertions(+), 8 deletions(-) + create mode 100644 gdb/testsuite/gdb.fortran/pointers.exp + +diff --git a/gdb/NEWS b/gdb/NEWS +index 3823f20..37e4ca7 100644 +--- a/gdb/NEWS ++++ b/gdb/NEWS +@@ -3,6 +3,8 @@ + + *** Changes since GDB 7.11 + ++* Fortran: Support pointers to dynamic types. ++ + * GDB now supports a negative repeat count in the 'x' command to examine + memory backward from the given address. For example: + +diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c +index 2cb418d..120163f 100644 +--- a/gdb/c-valprint.c ++++ b/gdb/c-valprint.c +@@ -645,6 +645,28 @@ c_value_print (struct value *val, struct ui_file *stream, + else + { + /* normal case */ ++ if (TYPE_CODE (type) == TYPE_CODE_PTR ++ && 1 == is_dynamic_type (type)) ++ { ++ CORE_ADDR addr; ++ if (NULL != TYPE_DATA_LOCATION (TYPE_TARGET_TYPE (type))) ++ addr = value_address (val); ++ else ++ addr = value_as_address (val); ++ ++ /* We resolve the target-type only when the ++ pointer is associated. */ ++ if ((addr != 0) ++ && (0 == type_not_associated (type))) ++ TYPE_TARGET_TYPE (type) = ++ resolve_dynamic_type (TYPE_TARGET_TYPE (type), ++ NULL, addr); ++ } ++ else ++ { ++ /* Do nothing. References are already resolved from the beginning, ++ only pointers are resolved when we actual need the target. */ ++ } + fprintf_filtered (stream, "("); + type_print (value_type (val), "", stream, -1); + fprintf_filtered (stream, ") "); +diff --git a/gdb/testsuite/gdb.cp/vla-cxx.exp b/gdb/testsuite/gdb.cp/vla-cxx.exp +index babdfb7..543d9eb 100644 +--- a/gdb/testsuite/gdb.cp/vla-cxx.exp ++++ b/gdb/testsuite/gdb.cp/vla-cxx.exp +@@ -26,6 +26,8 @@ if ![runto_main] { + gdb_breakpoint [gdb_get_line_number "Before pointer assignment"] + gdb_continue_to_breakpoint "Before pointer assignment" + gdb_test "ptype ptr" "int \\(\\*\\)\\\[variable length\\\]" "ptype ptr, Before pointer assignment" ++gdb_test "print ptr" "\\(int \\(\\*\\)\\\[variable length\\\]\\) 0x0" "print ptr, Before pointer assignment" ++gdb_test "print *ptr" "Cannot access memory at address 0x0" "print *ptr, Before pointer assignment" + + gdb_breakpoint [gdb_get_line_number "vlas_filled"] + gdb_continue_to_breakpoint "vlas_filled" +@@ -38,3 +40,5 @@ gdb_test "print vlaref" " = \\(int \\(&\\)\\\[3\\\]\\) @$hex: \\{5, 7, 9\\}" + gdb_test "print vlaref2" " = \\(.*\\) @$hex: \\{5, 7, 9\\}" + gdb_test "print c" " = \\{e = \\{c = @$hex\\}\\}" + gdb_test "ptype ptr" "int \\(\\*\\)\\\[3\\\]" ++gdb_test "print ptr" "\\(int \\(\\*\\)\\\[3\\\]\\) $hex" ++gdb_test "print *ptr" " = \\{5, 7, 9\\}" +diff --git a/gdb/testsuite/gdb.fortran/pointers.exp b/gdb/testsuite/gdb.fortran/pointers.exp +new file mode 100644 +index 0000000..c19d7e0 +--- /dev/null ++++ b/gdb/testsuite/gdb.fortran/pointers.exp +@@ -0,0 +1,123 @@ ++# 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 . ++ ++standard_testfile "pointers.f90" ++load_lib fortran.exp ++ ++if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \ ++ {debug f90 quiet}] } { ++ return -1 ++} ++ ++if ![runto_main] { ++ untested "could not run to main" ++ return -1 ++} ++ ++# Depending on the compiler being used, the type names can be printed differently. ++set logical [fortran_logical4] ++set real [fortran_real4] ++set int [fortran_int4] ++set complex [fortran_complex4] ++ ++ ++gdb_breakpoint [gdb_get_line_number "Before pointer assignment"] ++gdb_continue_to_breakpoint "Before pointer assignment" ++gdb_test "print logp" "= \\(PTR TO -> \\( $logical \\)\\) 0x0" "print logp, not associated" ++gdb_test "print *logp" "Cannot access memory at address 0x0" "print *logp, not associated" ++gdb_test "print comp" "= \\(PTR TO -> \\( $complex \\)\\) 0x0" "print comp, not associated" ++gdb_test "print *comp" "Cannot access memory at address 0x0" "print *comp, not associated" ++gdb_test "print charp" "= \\(PTR TO -> \\( character\\*1 \\)\\) 0x0" "print charp, not associated" ++gdb_test "print *charp" "Cannot access memory at address 0x0" "print *charp, not associated" ++gdb_test "print charap" "= \\(PTR TO -> \\( character\\*3 \\)\\) 0x0" "print charap, not associated" ++gdb_test "print *charap" "Cannot access memory at address 0x0" "print *charap, not associated" ++gdb_test "print intp" "= \\(PTR TO -> \\( $int \\)\\) 0x0" "print intp, not associated" ++gdb_test "print *intp" "Cannot access memory at address 0x0" "print *intp, not associated" ++set test "print intap, not associated" ++gdb_test_multiple "print intap" $test { ++ -re " = \\(PTR TO -> \\( $int \\(:,:\\)\\)\\) \r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re " = \r\n$gdb_prompt $" { ++ pass $test ++ } ++} ++gdb_test "print realp" "= \\(PTR TO -> \\( $real \\)\\) 0x0" "print realp, not associated" ++gdb_test "print *realp" "Cannot access memory at address 0x0" "print *realp, not associated" ++gdb_test "print \$my_var = intp" "= \\(PTR TO -> \\( $int \\)\\) 0x0" ++ ++ ++gdb_breakpoint [gdb_get_line_number "Before value assignment"] ++gdb_continue_to_breakpoint "Before value assignment" ++gdb_test "print *(twop)%ivla2" "= " ++ ++ ++gdb_breakpoint [gdb_get_line_number "After value assignment"] ++gdb_continue_to_breakpoint "After value assignment" ++gdb_test "print logp" "= \\(PTR TO -> \\( $logical \\)\\) $hex\( <.*>\)?" ++gdb_test "print *logp" "= \\.TRUE\\." ++gdb_test "print comp" "= \\(PTR TO -> \\( $complex \\)\\) $hex\( <.*>\)?" ++gdb_test "print *comp" "= \\(1,2\\)" ++gdb_test "print charp" "= \\(PTR TO -> \\( character\\*1 \\)\\) $hex\( <.*>\)?" ++gdb_test "print *charp" "= 'a'" ++gdb_test "print charap" "= \\(PTR TO -> \\( character\\*3 \\)\\) $hex\( <.*>\)?" ++gdb_test "print *charap" "= 'abc'" ++gdb_test "print intp" "= \\(PTR TO -> \\( $int \\)\\) $hex\( <.*>\)?" ++gdb_test "print *intp" "= 10" ++set test_name "print intap, associated" ++gdb_test_multiple "print intap" $test_name { ++ -re "= \\(\\( 1, 1, 3(, 1){7}\\) \\( 1(, 1){9}\\) \\)\r\n$gdb_prompt $" { ++ pass $test_name ++ } ++ -re "= \\(PTR TO -> \\( $int \\(10,2\\)\\)\\) $hex\( <.*>\)?\r\n$gdb_prompt $" { ++ gdb_test "print *intap" "= \\(\\( 1, 1, 3(, 1){7}\\) \\( 1(, 1){9}\\) \\)" ++ pass $test_name ++ } ++} ++set test_name "print intvlap, associated" ++gdb_test_multiple "print intvlap" $test_name { ++ -re "= \\(2, 2, 2, 4(, 2){6}\\)\r\n$gdb_prompt $" { ++ pass $test_name ++ } ++ -re "= \\(PTR TO -> \\( $int \\(10\\)\\)\\) $hex\( <.*>\)?\r\n$gdb_prompt $" { ++ gdb_test "print *intvlap" "= \\(2, 2, 2, 4(, 2){6}\\)" ++ pass $test_name ++ } ++} ++gdb_test "print realp" "= \\(PTR TO -> \\( $real \\)\\) $hex\( <.*>\)?" ++gdb_test "print *realp" "= 3\\.14000\\d+" ++gdb_test "print arrayOfPtr(2)%p" "= \\(PTR TO -> \\( Type two \\)\\) $hex\( <.*>\)?" ++gdb_test "print *(arrayOfPtr(2)%p)" "= \\( ivla1 = \\(11, 12, 13\\), ivla2 = \\(\\( 211, 221\\) \\( 212, 222\\) \\) \\)" ++set test_name "print arrayOfPtr(3)%p" ++gdb_test_multiple $test_name $test_name { ++ -re "= \\(PTR TO -> \\( Type two \\)\\) \r\n$gdb_prompt $" { ++ pass $test_name ++ } ++ -re "= \\(PTR TO -> \\( Type two \\)\\) 0x0\r\n$gdb_prompt $" { ++ pass $test_name ++ } ++} ++set test_name "print *(arrayOfPtr(3)%p), associated" ++gdb_test_multiple "print *(arrayOfPtr(3)%p)" $test_name { ++ -re "Cannot access memory at address 0x0\r\n$gdb_prompt $" { ++ pass $test_name ++ } ++ -re "Attempt to take contents of a not associated pointer.\r\n$gdb_prompt $" { ++ pass $test_name ++ } ++} ++gdb_test "print *((integer*) &inta + 2)" "= 3" "print temporary pointer, array" ++gdb_test "print *((integer*) &intvla + 3)" "= 4" "print temporary pointer, allocated vla" ++gdb_test "print \$pc" "= \\(PTR TO -> \\( void \\(\\)\\(\\)\\)\\) $hex " "Print program counter" +diff --git a/gdb/testsuite/gdb.fortran/pointers.f90 b/gdb/testsuite/gdb.fortran/pointers.f90 +index 9ebbaa9..000193c 100644 +--- a/gdb/testsuite/gdb.fortran/pointers.f90 ++++ b/gdb/testsuite/gdb.fortran/pointers.f90 +@@ -20,14 +20,20 @@ program pointers + integer, allocatable :: ivla2 (:, :) + end type two + ++ type :: twoPtr ++ type (two), pointer :: p ++ end type twoPtr ++ + logical, target :: logv + complex, target :: comv + character, target :: charv + character (len=3), target :: chara + integer, target :: intv + integer, target, dimension (10,2) :: inta ++ integer, target, allocatable, dimension (:) :: intvla + real, target :: realv + type(two), target :: twov ++ type(twoPtr) :: arrayOfPtr (3) + + logical, pointer :: logp + complex, pointer :: comp +@@ -35,6 +41,7 @@ program pointers + character (len=3), pointer:: charap + integer, pointer :: intp + integer, pointer, dimension (:,:) :: intap ++ integer, pointer, dimension (:) :: intvlap + real, pointer :: realp + type(two), pointer :: twop + +@@ -44,8 +51,12 @@ program pointers + nullify (charap) + nullify (intp) + nullify (intap) ++ nullify (intvlap) + nullify (realp) + nullify (twop) ++ nullify (arrayOfPtr(1)%p) ++ nullify (arrayOfPtr(2)%p) ++ nullify (arrayOfPtr(3)%p) + + logp => logv ! Before pointer assignment + comp => comv +@@ -53,8 +64,10 @@ program pointers + charap => chara + intp => intv + intap => inta ++ intvlap => intvla + realp => realv + twop => twov ++ arrayOfPtr(2)%p => twov + + logv = associated(logp) ! Before value assignment + comv = cmplx(1,2) +@@ -63,6 +76,10 @@ program pointers + intv = 10 + inta(:,:) = 1 + inta(3,1) = 3 ++ allocate (intvla(10)) ++ intvla(:) = 2 ++ intvla(4) = 4 ++ intvlap => intvla + realv = 3.14 + + allocate (twov%ivla1(3)) +diff --git a/gdb/valops.c b/gdb/valops.c +index 40392e8..6f38560 100644 +--- a/gdb/valops.c ++++ b/gdb/valops.c +@@ -1562,6 +1562,19 @@ value_ind (struct value *arg1) + if (TYPE_CODE (base_type) == TYPE_CODE_PTR) + { + struct type *enc_type; ++ CORE_ADDR addr; ++ ++ if (type_not_associated (base_type)) ++ error (_("Attempt to take contents of a not associated pointer.")); ++ ++ if (NULL != TYPE_DATA_LOCATION (TYPE_TARGET_TYPE (base_type))) ++ addr = value_address (arg1); ++ else ++ addr = value_as_address (arg1); ++ ++ if (addr != 0) ++ TYPE_TARGET_TYPE (base_type) = ++ resolve_dynamic_type (TYPE_TARGET_TYPE (base_type), NULL, addr); + + /* We may be pointing to something embedded in a larger object. + Get the real type of the enclosing object. */ +@@ -1577,8 +1590,7 @@ value_ind (struct value *arg1) + else + /* Retrieve the enclosing object pointed to. */ + arg2 = value_at_lazy (enc_type, +- (value_as_address (arg1) +- - value_pointed_to_offset (arg1))); ++ (addr - value_pointed_to_offset (arg1))); + + enc_type = value_type (arg2); + return readjust_indirect_value_type (arg2, enc_type, base_type, arg1); +diff --git a/gdb/valprint.c b/gdb/valprint.c +index 6896da2..f592278 100644 +--- a/gdb/valprint.c ++++ b/gdb/valprint.c +@@ -1141,12 +1141,6 @@ value_check_printable (struct value *val, struct ui_file *stream, + return 0; + } + +- if (type_not_associated (value_type (val))) +- { +- val_print_not_associated (stream); +- return 0; +- } +- + if (type_not_allocated (value_type (val))) + { + val_print_not_allocated (stream); +-- +2.7.4 + diff --git a/gdb-vla-intel-6of7.patch b/gdb-vla-intel-6of7.patch new file mode 100644 index 0000000..45968e9 --- /dev/null +++ b/gdb-vla-intel-6of7.patch @@ -0,0 +1,102 @@ +From 8665344c14b9ae8b2e0c37ba06d6881a546d1a37 Mon Sep 17 00:00:00 2001 +From: Bernhard Heckel +Date: Tue, 12 Jul 2016 08:19:34 +0200 +Subject: [PATCH 6/7] Fortran: Testsuite, add cyclic pointers. + +2016-05-25 Bernhard Heckel + +gdb/testsuite/Changelog: + * pointers.f90: Add cylic pointers. + * pointers.exp: Add print of cyclic pointers. + +Change-Id: Ic3b6187c5980fd6c37e2e94787f8321e5b7f2d75 +--- + gdb/testsuite/gdb.fortran/pointers.exp | 20 ++++++++++++++++++++ + gdb/testsuite/gdb.fortran/pointers.f90 | 12 ++++++++++++ + 2 files changed, 32 insertions(+) + +diff --git a/gdb/testsuite/gdb.fortran/pointers.exp b/gdb/testsuite/gdb.fortran/pointers.exp +index c19d7e0..67cf999 100644 +--- a/gdb/testsuite/gdb.fortran/pointers.exp ++++ b/gdb/testsuite/gdb.fortran/pointers.exp +@@ -57,6 +57,24 @@ gdb_test_multiple "print intap" $test { + gdb_test "print realp" "= \\(PTR TO -> \\( $real \\)\\) 0x0" "print realp, not associated" + gdb_test "print *realp" "Cannot access memory at address 0x0" "print *realp, not associated" + gdb_test "print \$my_var = intp" "= \\(PTR TO -> \\( $int \\)\\) 0x0" ++set test "print cyclicp1, not associated" ++gdb_test_multiple "print cyclicp1" $test { ++ -re "= \\( i = -?\\d+, p = 0x0 \\)\r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re "= \\( i = -?\\d+, p = \\)\r\n$gdb_prompt $" { ++ pass $test ++ } ++} ++set test "print cyclicp1%p, not associated" ++gdb_test_multiple "print cyclicp1%p" $test { ++ -re "= \\(PTR TO -> \\( Type typewithpointer \\)\\) 0x0\r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re "= \\(PTR TO -> \\( Type typewithpointer \\)\\) \r\n$gdb_prompt $" { ++ pass $test ++ } ++} + + + gdb_breakpoint [gdb_get_line_number "Before value assignment"] +@@ -118,6 +136,8 @@ gdb_test_multiple "print *(arrayOfPtr(3)%p)" $test_name { + pass $test_name + } + } ++gdb_test "print cyclicp1" "= \\( i = 1, p = $hex\( <.*>\)? \\)" ++gdb_test "print cyclicp1%p" "= \\(PTR TO -> \\( Type typewithpointer \\)\\) $hex\( <.*>\)?" + gdb_test "print *((integer*) &inta + 2)" "= 3" "print temporary pointer, array" + gdb_test "print *((integer*) &intvla + 3)" "= 4" "print temporary pointer, allocated vla" + gdb_test "print \$pc" "= \\(PTR TO -> \\( void \\(\\)\\(\\)\\)\\) $hex " "Print program counter" +diff --git a/gdb/testsuite/gdb.fortran/pointers.f90 b/gdb/testsuite/gdb.fortran/pointers.f90 +index 000193c..6240c87 100644 +--- a/gdb/testsuite/gdb.fortran/pointers.f90 ++++ b/gdb/testsuite/gdb.fortran/pointers.f90 +@@ -20,6 +20,11 @@ program pointers + integer, allocatable :: ivla2 (:, :) + end type two + ++ type :: typeWithPointer ++ integer i ++ type(typeWithPointer), pointer:: p ++ end type typeWithPointer ++ + type :: twoPtr + type (two), pointer :: p + end type twoPtr +@@ -34,6 +39,7 @@ program pointers + real, target :: realv + type(two), target :: twov + type(twoPtr) :: arrayOfPtr (3) ++ type(typeWithPointer), target:: cyclicp1,cyclicp2 + + logical, pointer :: logp + complex, pointer :: comp +@@ -57,6 +63,8 @@ program pointers + nullify (arrayOfPtr(1)%p) + nullify (arrayOfPtr(2)%p) + nullify (arrayOfPtr(3)%p) ++ nullify (cyclicp1%p) ++ nullify (cyclicp2%p) + + logp => logv ! Before pointer assignment + comp => comv +@@ -68,6 +76,10 @@ program pointers + realp => realv + twop => twov + arrayOfPtr(2)%p => twov ++ cyclicp1%i = 1 ++ cyclicp1%p => cyclicp2 ++ cyclicp2%i = 2 ++ cyclicp2%p => cyclicp1 + + logv = associated(logp) ! Before value assignment + comv = cmplx(1,2) +-- +2.7.4 + diff --git a/gdb-vla-intel-7of7.patch b/gdb-vla-intel-7of7.patch new file mode 100644 index 0000000..726c341 --- /dev/null +++ b/gdb-vla-intel-7of7.patch @@ -0,0 +1,518 @@ +From 1e5bd9aec9ee02c2f771e4dc997570c82d74b3b8 Mon Sep 17 00:00:00 2001 +From: Bernhard Heckel +Date: Tue, 12 Jul 2016 08:19:34 +0200 +Subject: [PATCH 7/7] fort_dyn_array: Fortran dynamic string support + +This patch changes the semantic of the Dwarf string length +attribute to reflect the standard as well as enables +correct string length calculation of dynamic strings. Add +tests for varous dynamic string evaluations. + +Old: +(gdb) p my_dyn_string +Cannot access memory at address 0x605fc0 + +New: +(gdb) p *my_dyn_string +$1 = 'foo' + +gdb/Changlog: + * dwarf2read.c (read_tag_string_type): changed + semantic of DW_AT_string_length to be able to + handle Dwarf blocks as well. Support for + DW_AT_byte_length added to get correct length + if specified in combination with + DW_AT_string_length. + (attr_to_dynamic_prop): added + functionality to add Dwarf operators to baton + data attribute. Added post values to baton + as required by the string evaluation case. + (read_subrange_type): Adapt caller. + (set_die_type): Adapt caller. + (add_post_values_to_baton): New function. + * gdbtypes.c (resolve_dynamic_type): Add + conditions to support string types. + (resolve_dynamic_array): Add conditions for dynamic + strings and create a new string type. + (is_dynamic_type): Follow pointer if a string type + was detected, as Fortran strings are represented + as pointers to strings internally. + +gdb/testsuite/Changelog: + * vla-strings.f90: New file. + * vla-strings.exp: New file. + +Change-Id: I7d7f47c7a4900a7fdb51102032455b53d60e60d7 +--- + gdb/dwarf2read.c | 158 +++++++++++++++++++++++++----- + gdb/gdbtypes.c | 15 ++- + gdb/testsuite/gdb.fortran/vla-strings.exp | 103 +++++++++++++++++++ + gdb/testsuite/gdb.fortran/vla-strings.f90 | 39 ++++++++ + 4 files changed, 285 insertions(+), 30 deletions(-) + create mode 100644 gdb/testsuite/gdb.fortran/vla-strings.exp + create mode 100644 gdb/testsuite/gdb.fortran/vla-strings.f90 + +diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c +index 6658a38..678da8f 100644 +--- a/gdb/dwarf2read.c ++++ b/gdb/dwarf2read.c +@@ -1764,7 +1764,8 @@ static void read_signatured_type (struct signatured_type *); + + static int attr_to_dynamic_prop (const struct attribute *attr, + struct die_info *die, struct dwarf2_cu *cu, +- struct dynamic_prop *prop); ++ struct dynamic_prop *prop, const gdb_byte *additional_data, ++ int additional_data_size); + + /* memory allocation interface */ + +@@ -11437,7 +11438,7 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu) + { + newobj->static_link + = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop); +- attr_to_dynamic_prop (attr, die, cu, newobj->static_link); ++ attr_to_dynamic_prop (attr, die, cu, newobj->static_link, NULL, 0); + } + + cu->list_in_scope = &local_symbols; +@@ -14495,29 +14496,94 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu) + struct gdbarch *gdbarch = get_objfile_arch (objfile); + struct type *type, *range_type, *index_type, *char_type; + struct attribute *attr; +- unsigned int length; ++ unsigned int length = UINT_MAX; ++ ++ index_type = objfile_type (objfile)->builtin_int; ++ range_type = create_static_range_type (NULL, index_type, 1, length); + ++ /* If DW_AT_string_length is defined, the length is stored in memory. */ + attr = dwarf2_attr (die, DW_AT_string_length, cu); + if (attr) + { +- length = DW_UNSND (attr); ++ if (attr_form_is_block (attr)) ++ { ++ struct attribute *byte_size, *bit_size; ++ struct dynamic_prop high; ++ ++ byte_size = dwarf2_attr (die, DW_AT_byte_size, cu); ++ bit_size = dwarf2_attr (die, DW_AT_bit_size, cu); ++ ++ /* DW_AT_byte_size should never occur in combination with ++ DW_AT_bit_size. */ ++ if (byte_size != NULL && bit_size != NULL) ++ complaint (&symfile_complaints, ++ _("DW_AT_byte_size AND " ++ "DW_AT_bit_size found together at the same time.")); ++ ++ /* If DW_AT_string_length AND DW_AT_byte_size exist together, ++ DW_AT_byte_size describes the number of bytes that should be read ++ from the length memory location. */ ++ if (byte_size != NULL) ++ { ++ /* Build new dwarf2_locexpr_baton structure with additions to the ++ data attribute, to reflect DWARF specialities to get address ++ sizes. */ ++ const gdb_byte append_ops[] = ++ { ++ /* DW_OP_deref_size: size of an address on the target machine ++ (bytes), where the size will be specified by the next ++ operand. */ ++ DW_OP_deref_size, ++ /* Operand for DW_OP_deref_size. */ ++ DW_UNSND(byte_size) }; ++ ++ if (!attr_to_dynamic_prop (attr, die, cu, &high, append_ops, ++ ARRAY_SIZE(append_ops))) ++ complaint (&symfile_complaints, ++ _("Could not parse DW_AT_byte_size")); ++ } ++ else if (bit_size != NULL) ++ complaint (&symfile_complaints, ++ _("DW_AT_string_length AND " ++ "DW_AT_bit_size found but not supported yet.")); ++ /* If DW_AT_string_length WITHOUT DW_AT_byte_size exist, the default ++ is the address size of the target machine. */ ++ else ++ { ++ const gdb_byte append_ops[] = ++ { DW_OP_deref }; ++ ++ if (!attr_to_dynamic_prop (attr, die, cu, &high, append_ops, ++ ARRAY_SIZE(append_ops))) ++ complaint (&symfile_complaints, ++ _("Could not parse DW_AT_string_length")); ++ } ++ ++ TYPE_RANGE_DATA (range_type)->high = high; ++ } ++ else ++ { ++ TYPE_HIGH_BOUND (range_type) = DW_UNSND(attr); ++ TYPE_HIGH_BOUND_KIND (range_type) = PROP_CONST; ++ } + } + else + { +- /* Check for the DW_AT_byte_size attribute. */ ++ /* Check for the DW_AT_byte_size attribute, which represents the length ++ in this case. */ + attr = dwarf2_attr (die, DW_AT_byte_size, cu); + if (attr) +- { +- length = DW_UNSND (attr); +- } ++ { ++ TYPE_HIGH_BOUND (range_type) = DW_UNSND(attr); ++ TYPE_HIGH_BOUND_KIND (range_type) = PROP_CONST; ++ } + else +- { +- length = 1; +- } ++ { ++ TYPE_HIGH_BOUND (range_type) = 1; ++ TYPE_HIGH_BOUND_KIND (range_type) = PROP_CONST; ++ } + } + +- index_type = objfile_type (objfile)->builtin_int; +- range_type = create_static_range_type (NULL, index_type, 1, length); + char_type = language_string_char_type (cu->language_defn, gdbarch); + type = create_string_type (NULL, char_type, range_type); + +@@ -14847,7 +14913,8 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu) + + static int + attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die, +- struct dwarf2_cu *cu, struct dynamic_prop *prop) ++ struct dwarf2_cu *cu, struct dynamic_prop *prop, ++ const gdb_byte *additional_data, int additional_data_size) + { + struct dwarf2_property_baton *baton; + struct obstack *obstack = &cu->objfile->objfile_obstack; +@@ -14857,14 +14924,33 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die, + + if (attr_form_is_block (attr)) + { +- baton = XOBNEW (obstack, struct dwarf2_property_baton); ++ baton = XOBNEW(obstack, struct dwarf2_property_baton); + baton->referenced_type = NULL; + baton->locexpr.per_cu = cu->per_cu; +- baton->locexpr.size = DW_BLOCK (attr)->size; +- baton->locexpr.data = DW_BLOCK (attr)->data; ++ ++ if (additional_data != NULL && additional_data_size > 0) ++ { ++ gdb_byte *data; ++ ++ data = (gdb_byte *) obstack_alloc( ++ &cu->objfile->objfile_obstack, ++ DW_BLOCK (attr)->size + additional_data_size); ++ memcpy (data, DW_BLOCK (attr)->data, DW_BLOCK (attr)->size); ++ memcpy (data + DW_BLOCK (attr)->size, additional_data, ++ additional_data_size); ++ ++ baton->locexpr.data = data; ++ baton->locexpr.size = DW_BLOCK (attr)->size + additional_data_size; ++ } ++ else ++ { ++ baton->locexpr.data = DW_BLOCK (attr)->data; ++ baton->locexpr.size = DW_BLOCK (attr)->size; ++ } ++ + prop->data.baton = baton; + prop->kind = PROP_LOCEXPR; +- gdb_assert (prop->data.baton != NULL); ++ gdb_assert(prop->data.baton != NULL); + } + else if (attr_form_is_ref (attr)) + { +@@ -14897,8 +14983,28 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die, + baton = XOBNEW (obstack, struct dwarf2_property_baton); + baton->referenced_type = die_type (target_die, target_cu); + baton->locexpr.per_cu = cu->per_cu; +- baton->locexpr.size = DW_BLOCK (target_attr)->size; +- baton->locexpr.data = DW_BLOCK (target_attr)->data; ++ ++ if (additional_data != NULL && additional_data_size > 0) ++ { ++ gdb_byte *data; ++ ++ data = (gdb_byte *) obstack_alloc (&cu->objfile->objfile_obstack, ++ DW_BLOCK (target_attr)->size + additional_data_size); ++ memcpy (data, DW_BLOCK (target_attr)->data, ++ DW_BLOCK (target_attr)->size); ++ memcpy (data + DW_BLOCK (target_attr)->size, ++ additional_data, additional_data_size); ++ ++ baton->locexpr.data = data; ++ baton->locexpr.size = (DW_BLOCK (target_attr)->size ++ + additional_data_size); ++ } ++ else ++ { ++ baton->locexpr.data = DW_BLOCK (target_attr)->data; ++ baton->locexpr.size = DW_BLOCK (target_attr)->size; ++ } ++ + prop->data.baton = baton; + prop->kind = PROP_LOCEXPR; + gdb_assert (prop->data.baton != NULL); +@@ -15008,17 +15114,17 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu) + + attr = dwarf2_attr (die, DW_AT_lower_bound, cu); + if (attr) +- attr_to_dynamic_prop (attr, die, cu, &low); ++ attr_to_dynamic_prop (attr, die, cu, &low, NULL, 0); + else if (!low_default_is_valid) + complaint (&symfile_complaints, _("Missing DW_AT_lower_bound " + "- DIE at 0x%x [in module %s]"), + die->offset.sect_off, objfile_name (cu->objfile)); + + attr = dwarf2_attr (die, DW_AT_upper_bound, cu); +- if (!attr_to_dynamic_prop (attr, die, cu, &high)) ++ if (!attr_to_dynamic_prop (attr, die, cu, &high, NULL, 0)) + { + attr = dwarf2_attr (die, DW_AT_count, cu); +- if (attr_to_dynamic_prop (attr, die, cu, &high)) ++ if (attr_to_dynamic_prop (attr, die, cu, &high, NULL, 0)) + { + /* If bounds are constant do the final calculation here. */ + if (low.kind == PROP_CONST && high.kind == PROP_CONST) +@@ -22389,7 +22495,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu) + attr = dwarf2_attr (die, DW_AT_allocated, cu); + if (attr_form_is_block (attr)) + { +- if (attr_to_dynamic_prop (attr, die, cu, &prop)) ++ if (attr_to_dynamic_prop (attr, die, cu, &prop, NULL, 0)) + add_dyn_prop (DYN_PROP_ALLOCATED, prop, type, objfile); + } + else if (attr != NULL) +@@ -22404,7 +22510,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu) + attr = dwarf2_attr (die, DW_AT_associated, cu); + if (attr_form_is_block (attr)) + { +- if (attr_to_dynamic_prop (attr, die, cu, &prop)) ++ if (attr_to_dynamic_prop (attr, die, cu, &prop, NULL, 0)) + add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type, objfile); + } + else if (attr != NULL) +@@ -22417,7 +22523,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu) + + /* Read DW_AT_data_location and set in type. */ + attr = dwarf2_attr (die, DW_AT_data_location, cu); +- if (attr_to_dynamic_prop (attr, die, cu, &prop)) ++ if (attr_to_dynamic_prop (attr, die, cu, &prop, NULL, 0)) + add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile); + + if (dwarf2_per_objfile->die_type_hash == NULL) +diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c +index b53e649..0aa9113 100644 +--- a/gdb/gdbtypes.c ++++ b/gdb/gdbtypes.c +@@ -1841,6 +1841,7 @@ is_dynamic_type_internal (struct type *type, int top_level) + } + + case TYPE_CODE_ARRAY: ++ case TYPE_CODE_STRING: + { + gdb_assert (TYPE_NFIELDS (type) == 1); + +@@ -1945,7 +1946,8 @@ resolve_dynamic_array (struct type *type, + struct type *ary_dim; + struct dynamic_prop *prop; + +- gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY); ++ gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY ++ || TYPE_CODE (type) == TYPE_CODE_STRING); + + type = copy_type (type); + +@@ -1970,13 +1972,17 @@ resolve_dynamic_array (struct type *type, + + ary_dim = check_typedef (TYPE_TARGET_TYPE (elt_type)); + +- if (ary_dim != NULL && TYPE_CODE (ary_dim) == TYPE_CODE_ARRAY) ++ if (ary_dim != NULL && (TYPE_CODE (ary_dim) == TYPE_CODE_ARRAY ++ || TYPE_CODE (ary_dim) == TYPE_CODE_STRING)) + elt_type = resolve_dynamic_array (ary_dim, addr_stack); + else + elt_type = TYPE_TARGET_TYPE (type); + +- return create_array_type_with_stride (type, elt_type, range_type, +- TYPE_FIELD_BITSIZE (type, 0)); ++ if (TYPE_CODE (type) == TYPE_CODE_STRING) ++ return create_string_type (type, elt_type, range_type); ++ else ++ return create_array_type_with_stride (type, elt_type, range_type, ++ TYPE_FIELD_BITSIZE (type, 0)); + } + + /* Resolve dynamic bounds of members of the union TYPE to static +@@ -2181,6 +2187,7 @@ resolve_dynamic_type_internal (struct type *type, + break; + + case TYPE_CODE_ARRAY: ++ case TYPE_CODE_STRING: + resolved_type = resolve_dynamic_array (type, addr_stack); + break; + +diff --git a/gdb/testsuite/gdb.fortran/vla-strings.exp b/gdb/testsuite/gdb.fortran/vla-strings.exp +new file mode 100644 +index 0000000..484fdcb +--- /dev/null ++++ b/gdb/testsuite/gdb.fortran/vla-strings.exp +@@ -0,0 +1,103 @@ ++# 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 . ++ ++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] { ++ untested "could not run to main" ++ return -1 ++} ++ ++gdb_breakpoint [gdb_get_line_number "var_char-allocated-1"] ++gdb_continue_to_breakpoint "var_char-allocated-1" ++set test "whatis var_char first time" ++gdb_test_multiple "whatis var_char" $test { ++ -re "type = PTR TO -> \\( character\\*10 \\)\r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re "type = character\\*10\r\n$gdb_prompt $" { ++ pass $test ++ } ++} ++set test "ptype var_char first time" ++gdb_test_multiple "ptype var_char" $test { ++ -re "type = PTR TO -> \\( character\\*10 \\)\r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re "type = character\\*10\r\n$gdb_prompt $" { ++ pass $test ++ } ++} ++ ++ ++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" ++set test "print var_char, var_char-filled-1" ++gdb_test_multiple "print var_char" $test { ++ -re "= \\(PTR TO -> \\( character\\*3 \\)\\) $hex\r\n$gdb_prompt $" { ++ gdb_test "print *var_char" "= 'foo'" "print *var_char, var_char-filled-1" ++ pass $test ++ } ++ -re "= 'foo'\r\n$gdb_prompt $" { ++ pass $test ++ } ++} ++set test "ptype var_char, var_char-filled-1" ++gdb_test_multiple "ptype var_char" $test { ++ -re "type = PTR TO -> \\( character\\*3 \\)\r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re "type = character\\*3\r\n$gdb_prompt $" { ++ pass $test ++ } ++} ++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" ++set test "print var_char, var_char-filled-2" ++gdb_test_multiple "print var_char" $test { ++ -re "= \\(PTR TO -> \\( character\\*6 \\)\\) $hex\r\n$gdb_prompt $" { ++ gdb_test "print *var_char" "= 'foobar'" "print *var_char, var_char-filled-2" ++ pass $test ++ } ++ -re "= 'foobar'\r\n$gdb_prompt $" { ++ pass $test ++ } ++} ++set test "ptype var_char, var_char-filled-2" ++gdb_test_multiple "ptype var_char" $test { ++ -re "type = PTR TO -> \\( character\\*6 \\)\r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re "type = character\\*6\r\n$gdb_prompt $" { ++ pass $test ++ } ++} +diff --git a/gdb/testsuite/gdb.fortran/vla-strings.f90 b/gdb/testsuite/gdb.fortran/vla-strings.f90 +new file mode 100644 +index 0000000..3c22735 +--- /dev/null ++++ b/gdb/testsuite/gdb.fortran/vla-strings.f90 +@@ -0,0 +1,39 @@ ++! 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 . ++ ++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 +-- +2.7.4 + diff --git a/gdb-vla-intel-logical-not.patch b/gdb-vla-intel-logical-not.patch deleted file mode 100644 index 0c51c84..0000000 --- a/gdb-vla-intel-logical-not.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ./gdb/value.c-orig 2015-02-11 15:17:58.413241779 +0100 -+++ ./gdb/value.c 2015-02-11 15:19:42.068716949 +0100 -@@ -3074,7 +3074,7 @@ value_primitive_field (struct value *arg - } - - if (!TYPE_DATA_LOCATION (type) -- || !TYPE_DATA_LOCATION_KIND (type) == PROP_CONST) -+ || TYPE_DATA_LOCATION_KIND (type) != PROP_CONST) - v->offset = (value_offset (arg1) + offset - + value_embedded_offset (arg1)); - } diff --git a/gdb-vla-intel-stringbt-fix.patch b/gdb-vla-intel-stringbt-fix.patch index f6197f2..3214de2 100644 --- a/gdb-vla-intel-stringbt-fix.patch +++ b/gdb-vla-intel-stringbt-fix.patch @@ -31,26 +31,6 @@ Jan Content-Type: text/plain; charset=us-ascii Content-Disposition: inline; filename="vlastringonly.patch" -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 - } - - 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; - 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 diff --git a/gdb-vla-intel-tests.patch b/gdb-vla-intel-tests.patch new file mode 100644 index 0000000..fc8ab5b --- /dev/null +++ b/gdb-vla-intel-tests.patch @@ -0,0 +1,377 @@ +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 . ++ ++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 :: 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-stride.exp +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-stride.exp 2016-01-08 19:15:44.984637686 +0100 +@@ -0,0 +1,44 @@ ++# 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 . ++ ++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 ++} ++ ++gdb_breakpoint [gdb_get_line_number "re-reverse-elements"] ++gdb_continue_to_breakpoint "re-reverse-elements" ++gdb_test "print pvla" " = \\\(1, 2, 3, 4, 5, 6, 7, 8, 9, 10\\\)" \ ++ "print re-reverse-elements" ++gdb_test "print pvla(1)" " = 1" "print first re-reverse-element" ++gdb_test "print pvla(10)" " = 10" "print last re-reverse-element" ++ ++gdb_breakpoint [gdb_get_line_number "odd-elements"] ++gdb_continue_to_breakpoint "odd-elements" ++gdb_test "print pvla" " = \\\(1, 3, 5, 7, 9\\\)" "print odd-elements" ++gdb_test "print pvla(1)" " = 1" "print first odd-element" ++gdb_test "print pvla(5)" " = 9" "print last odd-element" ++ ++gdb_breakpoint [gdb_get_line_number "single-element"] ++gdb_continue_to_breakpoint "single-element" ++gdb_test "print pvla" " = \\\(5\\\)" "print single-element" ++gdb_test "print pvla(1)" " = 5" "print one single-element" +Index: gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-stride.f90 +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-stride.f90 2016-01-08 19:15:44.984637686 +0100 +@@ -0,0 +1,30 @@ ++! 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_stride ++ integer, target, allocatable :: vla (:) ++ integer, pointer :: pvla (:) ++ ++ allocate(vla(10)) ++ vla = (/ (I, I = 1,10) /) ++ ++ pvla => vla(10:1:-1) ++ pvla => pvla(10:1:-1) ++ pvla => vla(1:10:2) ! re-reverse-elements ++ pvla => vla(5:4:-2) ! odd-elements ++ ++ pvla => null() ! single-element ++end program vla_stride +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 . ++ ++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 diff --git a/gdb-vla-intel.patch b/gdb-vla-intel.patch deleted file mode 100644 index edf6b23..0000000 --- a/gdb-vla-intel.patch +++ /dev/null @@ -1,1480 +0,0 @@ -[PATCH 00/23] Fortran dynamic array support -https://sourceware.org/ml/gdb-patches/2014-06/msg00108.html -https://github.com/intel-gdb/vla/tree/vla-fortran - -GIT snapshot: -commit 511bff520372ffc10fa2ff569c176bdf1e6e475d - - -Index: gdb-7.10.50.20160106/gdb/c-valprint.c -=================================================================== ---- gdb-7.10.50.20160106.orig/gdb/c-valprint.c 2016-01-08 19:15:35.065582359 +0100 -+++ gdb-7.10.50.20160106/gdb/c-valprint.c 2016-01-08 19:15:44.974637630 +0100 -@@ -642,7 +642,16 @@ - { - /* normal case */ - fprintf_filtered (stream, "("); -- type_print (value_type (val), "", stream, -1); -+ if (is_dynamic_type (TYPE_TARGET_TYPE (type))) -+ { -+ struct value *v; -+ -+ v = value_ind (val); -+ v = value_addr (v); -+ type_print (value_type (v), "", stream, -1); -+ } -+ else -+ type_print (value_type (val), "", stream, -1); - fprintf_filtered (stream, ") "); - } - } -Index: gdb-7.10.50.20160106/gdb/dwarf2loc.h -=================================================================== ---- gdb-7.10.50.20160106.orig/gdb/dwarf2loc.h 2016-01-08 19:15:35.066582365 +0100 -+++ gdb-7.10.50.20160106/gdb/dwarf2loc.h 2016-01-08 19:15:44.974637630 +0100 -@@ -138,6 +138,11 @@ - struct property_addr_info *addr_stack, - CORE_ADDR *value); - -+/* Checks if a dwarf location definition is valid. -+ Returns 1 if valid; 0 otherwise. */ -+ -+extern int dwarf2_address_data_valid (const struct type *type); -+ - /* A helper for the compiler interface that compiles a single dynamic - property to C code. - -Index: gdb-7.10.50.20160106/gdb/dwarf2read.c -=================================================================== ---- gdb-7.10.50.20160106.orig/gdb/dwarf2read.c 2016-01-08 19:15:35.078582432 +0100 -+++ gdb-7.10.50.20160106/gdb/dwarf2read.c 2016-01-08 19:15:44.980637663 +0100 -@@ -1745,7 +1745,9 @@ - - static int attr_to_dynamic_prop (const struct attribute *attr, - struct die_info *die, struct dwarf2_cu *cu, -- struct dynamic_prop *prop); -+ struct dynamic_prop *prop, -+ const gdb_byte *additional_data, -+ int additional_data_size); - - /* memory allocation interface */ - -@@ -11420,7 +11422,7 @@ - { - newobj->static_link - = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop); -- attr_to_dynamic_prop (attr, die, cu, newobj->static_link); -+ attr_to_dynamic_prop (attr, die, cu, newobj->static_link, NULL, 0); - } - - cu->list_in_scope = &local_symbols; -@@ -14471,29 +14473,92 @@ - struct gdbarch *gdbarch = get_objfile_arch (objfile); - struct type *type, *range_type, *index_type, *char_type; - struct attribute *attr; -- unsigned int length; -+ unsigned int length = UINT_MAX; - -+ index_type = objfile_type (objfile)->builtin_int; -+ range_type = create_static_range_type (NULL, index_type, 1, length); -+ -+ /* If DW_AT_string_length is defined, the length is stored at some location -+ * in memory. */ - attr = dwarf2_attr (die, DW_AT_string_length, cu); - if (attr) - { -- length = DW_UNSND (attr); -+ if (attr_form_is_block (attr)) -+ { -+ struct attribute *byte_size, *bit_size; -+ struct dynamic_prop high; -+ -+ byte_size = dwarf2_attr (die, DW_AT_byte_size, cu); -+ bit_size = dwarf2_attr (die, DW_AT_bit_size, cu); -+ -+ /* DW_AT_byte_size should never occur together in combination with -+ DW_AT_string_length. */ -+ if ((byte_size == NULL && bit_size != NULL) || -+ (byte_size != NULL && bit_size == NULL)) -+ complaint (&symfile_complaints, _("DW_AT_byte_size AND " -+ "DW_AT_bit_size found together at the same time.")); -+ -+ /* If DW_AT_string_length AND DW_AT_byte_size exist together, it -+ describes the number of bytes that should be read from the length -+ memory location. */ -+ if (byte_size != NULL && bit_size == NULL) -+ { -+ /* Build new dwarf2_locexpr_baton structure with additions to the -+ data attribute, to reflect DWARF specialities to get address -+ sizes. */ -+ const gdb_byte append_ops[] = { -+ /* DW_OP_deref_size: size of an address on the target machine -+ (bytes), where the size will be specified by the next -+ operand. */ -+ DW_OP_deref_size, -+ /* Operand for DW_OP_deref_size. */ -+ DW_UNSND (byte_size) }; -+ -+ if (!attr_to_dynamic_prop (attr, die, cu, &high, -+ append_ops, ARRAY_SIZE (append_ops))) -+ complaint (&symfile_complaints, -+ _("Could not parse DW_AT_byte_size")); -+ } -+ else if (bit_size != NULL && byte_size == NULL) -+ complaint (&symfile_complaints, _("DW_AT_string_length AND " -+ "DW_AT_bit_size found but not supported yet.")); -+ /* If DW_AT_string_length WITHOUT DW_AT_byte_size exist, the default -+ is the address size of the target machine. */ -+ else -+ { -+ const gdb_byte append_ops[] = { DW_OP_deref }; -+ -+ if (!attr_to_dynamic_prop (attr, die, cu, &high, append_ops, -+ ARRAY_SIZE (append_ops))) -+ complaint (&symfile_complaints, -+ _("Could not parse DW_AT_string_length")); -+ } -+ -+ TYPE_RANGE_DATA (range_type)->high = high; -+ } -+ else -+ { -+ TYPE_HIGH_BOUND (range_type) = DW_UNSND (attr); -+ TYPE_HIGH_BOUND_KIND (range_type) = PROP_CONST; -+ } - } - else - { -- /* Check for the DW_AT_byte_size attribute. */ -+ /* Check for the DW_AT_byte_size attribute, which represents the length -+ in this case. */ - attr = dwarf2_attr (die, DW_AT_byte_size, cu); - if (attr) - { -- length = DW_UNSND (attr); -+ TYPE_HIGH_BOUND (range_type) = DW_UNSND (attr); -+ TYPE_HIGH_BOUND_KIND (range_type) = PROP_CONST; - } - else - { -- length = 1; -+ TYPE_HIGH_BOUND (range_type) = 1; -+ TYPE_HIGH_BOUND_KIND (range_type) = PROP_CONST; - } - } - -- index_type = objfile_type (objfile)->builtin_int; -- range_type = create_static_range_type (NULL, index_type, 1, length); - char_type = language_string_char_type (cu->language_defn, gdbarch); - type = create_string_type (NULL, char_type, range_type); - -@@ -14816,13 +14881,15 @@ - return set_die_type (die, type, cu); - } - -+ - /* Parse dwarf attribute if it's a block, reference or constant and put the - resulting value of the attribute into struct bound_prop. - Returns 1 if ATTR could be resolved into PROP, 0 otherwise. */ - - static int - attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die, -- struct dwarf2_cu *cu, struct dynamic_prop *prop) -+ struct dwarf2_cu *cu, struct dynamic_prop *prop, -+ const gdb_byte *additional_data, int additional_data_size) - { - struct dwarf2_property_baton *baton; - struct obstack *obstack = &cu->objfile->objfile_obstack; -@@ -14835,8 +14902,25 @@ - baton = XOBNEW (obstack, struct dwarf2_property_baton); - baton->referenced_type = NULL; - baton->locexpr.per_cu = cu->per_cu; -- baton->locexpr.size = DW_BLOCK (attr)->size; -- baton->locexpr.data = DW_BLOCK (attr)->data; -+ -+ if (additional_data != NULL && additional_data_size > 0) -+ { -+ gdb_byte *data; -+ -+ data = obstack_alloc (&cu->objfile->objfile_obstack, -+ DW_BLOCK (attr)->size + additional_data_size); -+ memcpy (data, DW_BLOCK (attr)->data, DW_BLOCK (attr)->size); -+ memcpy (data + DW_BLOCK (attr)->size, -+ additional_data, additional_data_size); -+ -+ baton->locexpr.data = data; -+ baton->locexpr.size = DW_BLOCK (attr)->size + additional_data_size; -+ } -+ else -+ { -+ baton->locexpr.data = DW_BLOCK (attr)->data; -+ baton->locexpr.size = DW_BLOCK (attr)->size; -+ } - prop->data.baton = baton; - prop->kind = PROP_LOCEXPR; - gdb_assert (prop->data.baton != NULL); -@@ -14872,8 +14956,28 @@ - baton = XOBNEW (obstack, struct dwarf2_property_baton); - baton->referenced_type = die_type (target_die, target_cu); - baton->locexpr.per_cu = cu->per_cu; -- baton->locexpr.size = DW_BLOCK (target_attr)->size; -- baton->locexpr.data = DW_BLOCK (target_attr)->data; -+ -+ if (additional_data != NULL && additional_data_size > 0) -+ { -+ gdb_byte *data; -+ -+ data = obstack_alloc (&cu->objfile->objfile_obstack, -+ DW_BLOCK (target_attr)->size + additional_data_size); -+ memcpy (data, DW_BLOCK (target_attr)->data, -+ DW_BLOCK (target_attr)->size); -+ memcpy (data + DW_BLOCK (target_attr)->size, -+ additional_data, additional_data_size); -+ -+ baton->locexpr.data = data; -+ baton->locexpr.size = (DW_BLOCK (target_attr)->size -+ + additional_data_size); -+ } -+ else -+ { -+ baton->locexpr.data = DW_BLOCK (target_attr)->data; -+ baton->locexpr.size = DW_BLOCK (target_attr)->size; -+ } -+ - prop->data.baton = baton; - prop->kind = PROP_LOCEXPR; - gdb_assert (prop->data.baton != NULL); -@@ -14927,7 +15031,7 @@ - struct type *base_type, *orig_base_type; - struct type *range_type; - struct attribute *attr; -- struct dynamic_prop low, high; -+ struct dynamic_prop low, high, stride; - int low_default_is_valid; - int high_bound_is_count = 0; - const char *name; -@@ -14947,7 +15051,9 @@ - - low.kind = PROP_CONST; - high.kind = PROP_CONST; -+ stride.kind = PROP_CONST; - high.data.const_val = 0; -+ stride.data.const_val = 0; - - /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow - omitting DW_AT_lower_bound. */ -@@ -14980,19 +15086,26 @@ - break; - } - -+ attr = dwarf2_attr (die, DW_AT_byte_stride, cu); -+ if (attr) -+ if (!attr_to_dynamic_prop (attr, die, cu, &stride, NULL, 0)) -+ complaint (&symfile_complaints, _("Missing DW_AT_byte_stride " -+ "- DIE at 0x%x [in module %s]"), -+ die->offset.sect_off, objfile_name (cu->objfile)); -+ - attr = dwarf2_attr (die, DW_AT_lower_bound, cu); - if (attr) -- attr_to_dynamic_prop (attr, die, cu, &low); -+ attr_to_dynamic_prop (attr, die, cu, &low, NULL, 0); - else if (!low_default_is_valid) - complaint (&symfile_complaints, _("Missing DW_AT_lower_bound " - "- DIE at 0x%x [in module %s]"), - die->offset.sect_off, objfile_name (cu->objfile)); - - attr = dwarf2_attr (die, DW_AT_upper_bound, cu); -- if (!attr_to_dynamic_prop (attr, die, cu, &high)) -+ if (!attr_to_dynamic_prop (attr, die, cu, &high, NULL, 0)) - { - attr = dwarf2_attr (die, DW_AT_count, cu); -- if (attr_to_dynamic_prop (attr, die, cu, &high)) -+ if (attr_to_dynamic_prop (attr, die, cu, &high, NULL, 0)) - { - /* If bounds are constant do the final calculation here. */ - if (low.kind == PROP_CONST && high.kind == PROP_CONST) -@@ -15056,7 +15169,7 @@ - && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask)) - high.data.const_val |= negative_mask; - -- range_type = create_range_type (NULL, orig_base_type, &low, &high); -+ range_type = create_range_type (NULL, orig_base_type, &low, &high, &stride); - - if (high_bound_is_count) - TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1; -@@ -22360,7 +22473,7 @@ - attr = dwarf2_attr (die, DW_AT_allocated, cu); - if (attr_form_is_block (attr)) - { -- if (attr_to_dynamic_prop (attr, die, cu, &prop)) -+ if (attr_to_dynamic_prop (attr, die, cu, &prop, NULL, 0)) - add_dyn_prop (DYN_PROP_ALLOCATED, prop, type, objfile); - } - else if (attr != NULL) -@@ -22375,7 +22488,7 @@ - attr = dwarf2_attr (die, DW_AT_associated, cu); - if (attr_form_is_block (attr)) - { -- if (attr_to_dynamic_prop (attr, die, cu, &prop)) -+ if (attr_to_dynamic_prop (attr, die, cu, &prop, NULL, 0)) - add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type, objfile); - } - else if (attr != NULL) -@@ -22388,7 +22501,7 @@ - - /* Read DW_AT_data_location and set in type. */ - attr = dwarf2_attr (die, DW_AT_data_location, cu); -- if (attr_to_dynamic_prop (attr, die, cu, &prop)) -+ if (attr_to_dynamic_prop (attr, die, cu, &prop, NULL, 0)) - add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile); - - if (dwarf2_per_objfile->die_type_hash == NULL) -Index: gdb-7.10.50.20160106/gdb/f-typeprint.c -=================================================================== ---- gdb-7.10.50.20160106.orig/gdb/f-typeprint.c 2016-01-08 19:15:35.080582443 +0100 -+++ gdb-7.10.50.20160106/gdb/f-typeprint.c 2016-01-08 19:15:44.980637663 +0100 -@@ -31,6 +31,7 @@ - #include "target.h" - #include "f-lang.h" - #include "typeprint.h" -+#include "valprint.h" - - #if 0 /* Currently unused. */ - static void f_type_print_args (struct type *, struct ui_file *); -@@ -64,6 +65,17 @@ - { - val_print_not_allocated (stream); - return; -+ } -+ -+ if (TYPE_NOT_ASSOCIATED (type)) -+ { -+ val_print_not_associated (stream); -+ return; -+ } -+ if (TYPE_NOT_ALLOCATED (type)) -+ { -+ val_print_not_allocated (stream); -+ return; - } - - f_type_print_base (type, stream, show, level); -Index: gdb-7.10.50.20160106/gdb/f-valprint.c -=================================================================== ---- gdb-7.10.50.20160106.orig/gdb/f-valprint.c 2016-01-08 19:15:35.081582448 +0100 -+++ gdb-7.10.50.20160106/gdb/f-valprint.c 2016-01-08 19:15:44.981637669 +0100 -@@ -36,8 +36,6 @@ - - extern void _initialize_f_valprint (void); - static void info_common_command (char *, int); --static void f77_create_arrayprint_offset_tbl (struct type *, -- struct ui_file *); - static void f77_get_dynamic_length_of_aggregate (struct type *); - - int f77_array_offset_tbl[MAX_FORTRAN_DIMS + 1][2]; -@@ -45,15 +43,6 @@ - /* 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. */ - --/* The following macro gives us the size of the nth dimension, Where -- n is 1 based. */ -- --#define F77_DIM_SIZE(n) (f77_array_offset_tbl[n][1]) -- --/* The following gives us the offset for row n where n is 1-based. */ -- --#define F77_DIM_OFFSET(n) (f77_array_offset_tbl[n][0]) -- - int - f77_get_lowerbound (struct type *type) - { -@@ -111,47 +100,6 @@ - * TYPE_LENGTH (check_typedef (TYPE_TARGET_TYPE (type))); - } - --/* Function that sets up the array offset,size table for the array -- type "type". */ -- --static void --f77_create_arrayprint_offset_tbl (struct type *type, struct ui_file *stream) --{ -- struct type *tmp_type; -- int eltlen; -- int ndimen = 1; -- int upper, lower; -- -- tmp_type = type; -- -- while (TYPE_CODE (tmp_type) == TYPE_CODE_ARRAY) -- { -- upper = f77_get_upperbound (tmp_type); -- lower = f77_get_lowerbound (tmp_type); -- -- F77_DIM_SIZE (ndimen) = upper - lower + 1; -- -- tmp_type = TYPE_TARGET_TYPE (tmp_type); -- ndimen++; -- } -- -- /* Now we multiply eltlen by all the offsets, so that later we -- can print out array elements correctly. Up till now we -- know an offset to apply to get the item but we also -- have to know how much to add to get to the next item. */ -- -- ndimen--; -- eltlen = TYPE_LENGTH (tmp_type); -- F77_DIM_OFFSET (ndimen) = eltlen; -- while (--ndimen > 0) -- { -- eltlen *= F77_DIM_SIZE (ndimen + 1); -- F77_DIM_OFFSET (ndimen) = eltlen; -- } --} -- -- -- - /* Actual function which prints out F77 arrays, Valaddr == address in - the superior. Address == the address in the inferior. */ - -@@ -164,41 +112,62 @@ - const struct value_print_options *options, - int *elts) - { -+ struct type *range_type = TYPE_INDEX_TYPE (check_typedef (type)); -+ CORE_ADDR addr = address + embedded_offset; -+ LONGEST lowerbound, upperbound; - int i; - -+ get_discrete_bounds (range_type, &lowerbound, &upperbound); -+ - if (nss != ndimensions) - { -- for (i = 0; -- (i < F77_DIM_SIZE (nss) && (*elts) < options->print_max); -+ size_t dim_size; -+ size_t offs = 0; -+ LONGEST byte_stride = abs (TYPE_BYTE_STRIDE (range_type)); -+ -+ if (byte_stride) -+ dim_size = byte_stride; -+ else -+ dim_size = TYPE_LENGTH (TYPE_TARGET_TYPE (type)); -+ -+ for (i = lowerbound; -+ (i < upperbound + 1 && (*elts) < options->print_max); - i++) - { -+ struct value *subarray = value_from_contents_and_address -+ (TYPE_TARGET_TYPE (type), value_contents_for_printing_const (val) -+ + offs, addr + offs); -+ - fprintf_filtered (stream, "( "); -- f77_print_array_1 (nss + 1, ndimensions, TYPE_TARGET_TYPE (type), -- valaddr, -- embedded_offset + i * F77_DIM_OFFSET (nss), -- address, -- stream, recurse, val, options, elts); -+ f77_print_array_1 (nss + 1, ndimensions, value_type (subarray), -+ value_contents_for_printing (subarray), -+ value_embedded_offset (subarray), -+ value_address (subarray), -+ stream, recurse, subarray, options, elts); -+ offs += dim_size; - fprintf_filtered (stream, ") "); - } -- if (*elts >= options->print_max && i < F77_DIM_SIZE (nss)) -+ if (*elts >= options->print_max && i < upperbound) - fprintf_filtered (stream, "..."); - } - else - { -- for (i = 0; i < F77_DIM_SIZE (nss) && (*elts) < options->print_max; -+ for (i = lowerbound; i < upperbound + 1 && (*elts) < options->print_max; - i++, (*elts)++) - { -- val_print (TYPE_TARGET_TYPE (type), -- valaddr, -- embedded_offset + i * F77_DIM_OFFSET (ndimensions), -- address, stream, recurse, -- val, options, current_language); -+ struct value *elt = value_subscript ((struct value *)val, i); -+ -+ val_print (value_type (elt), -+ value_contents_for_printing (elt), -+ value_embedded_offset (elt), -+ value_address (elt), stream, recurse, -+ elt, options, current_language); - -- if (i != (F77_DIM_SIZE (nss) - 1)) -+ if (i != upperbound) - fprintf_filtered (stream, ", "); - - if ((*elts == options->print_max - 1) -- && (i != (F77_DIM_SIZE (nss) - 1))) -+ && (i != upperbound)) - fprintf_filtered (stream, "..."); - } - } -@@ -225,12 +194,6 @@ - Type node corrupt! F77 arrays cannot have %d subscripts (%d Max)"), - ndimensions, MAX_FORTRAN_DIMS); - -- /* Since F77 arrays are stored column-major, we set up an -- offset table to get at the various row's elements. The -- offset table contains entries for both offset and subarray size. */ -- -- f77_create_arrayprint_offset_tbl (type, stream); -- - f77_print_array_1 (1, ndimensions, type, valaddr, embedded_offset, - address, stream, recurse, val, options, &elts); - } -@@ -375,12 +338,15 @@ - fprintf_filtered (stream, "( "); - for (index = 0; index < TYPE_NFIELDS (type); index++) - { -- int offset = TYPE_FIELD_BITPOS (type, index) / 8; -+ struct value *field = value_field -+ ((struct value *)original_value, index); -+ -+ val_print (value_type (field), -+ value_contents_for_printing (field), -+ value_embedded_offset (field), -+ value_address (field), stream, recurse + 1, -+ field, options, current_language); - -- val_print (TYPE_FIELD_TYPE (type, index), valaddr, -- embedded_offset + offset, -- address, stream, recurse + 1, -- original_value, options, current_language); - if (index != TYPE_NFIELDS (type) - 1) - fputs_filtered (", ", stream); - } -Index: gdb-7.10.50.20160106/gdb/gdbtypes.c -=================================================================== ---- gdb-7.10.50.20160106.orig/gdb/gdbtypes.c 2016-01-08 19:15:35.083582459 +0100 -+++ gdb-7.10.50.20160106/gdb/gdbtypes.c 2016-01-08 19:15:44.982637674 +0100 -@@ -836,7 +836,8 @@ - struct type * - create_range_type (struct type *result_type, struct type *index_type, - const struct dynamic_prop *low_bound, -- const struct dynamic_prop *high_bound) -+ const struct dynamic_prop *high_bound, -+ const struct dynamic_prop *stride) - { - if (result_type == NULL) - result_type = alloc_type_copy (index_type); -@@ -851,6 +852,7 @@ - TYPE_ZALLOC (result_type, sizeof (struct range_bounds)); - TYPE_RANGE_DATA (result_type)->low = *low_bound; - TYPE_RANGE_DATA (result_type)->high = *high_bound; -+ TYPE_RANGE_DATA (result_type)->stride = *stride; - - if (low_bound->kind == PROP_CONST && low_bound->data.const_val >= 0) - TYPE_UNSIGNED (result_type) = 1; -@@ -879,7 +881,7 @@ - create_static_range_type (struct type *result_type, struct type *index_type, - LONGEST low_bound, LONGEST high_bound) - { -- struct dynamic_prop low, high; -+ struct dynamic_prop low, high, stride; - - low.kind = PROP_CONST; - low.data.const_val = low_bound; -@@ -887,7 +889,11 @@ - high.kind = PROP_CONST; - high.data.const_val = high_bound; - -- result_type = create_range_type (result_type, index_type, &low, &high); -+ stride.kind = PROP_CONST; -+ stride.data.const_val = 0; -+ -+ result_type = create_range_type (result_type, index_type, -+ &low, &high, &stride); - - return result_type; - } -@@ -1084,16 +1090,21 @@ - && (!type_not_associated (result_type) - && !type_not_allocated (result_type))) - { -- LONGEST low_bound, high_bound; -+ LONGEST low_bound, high_bound, byte_stride; - - if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0) - low_bound = high_bound = 0; - element_type = check_typedef (element_type); -+ -+ byte_stride = abs (TYPE_BYTE_STRIDE (range_type)); -+ - /* Be careful when setting the array length. Ada arrays can be - empty arrays with the high_bound being smaller than the low_bound. - In such cases, the array length should be zero. */ - if (high_bound < low_bound) - TYPE_LENGTH (result_type) = 0; -+ else if (byte_stride > 0) -+ TYPE_LENGTH (result_type) = byte_stride * (high_bound - low_bound + 1); - else if (bit_stride > 0) - TYPE_LENGTH (result_type) = - (bit_stride * (high_bound - low_bound + 1) + 7) / 8; -@@ -1804,12 +1815,31 @@ - static int - is_dynamic_type_internal (struct type *type, int top_level) - { -+ int index; -+ -+ if (!type) -+ return 0; -+ - type = check_typedef (type); - - /* We only want to recognize references at the outermost level. */ - if (top_level && TYPE_CODE (type) == TYPE_CODE_REF) - type = check_typedef (TYPE_TARGET_TYPE (type)); - -+ if (TYPE_ASSOCIATED_PROP (type)) -+ return 1; -+ -+ if (TYPE_ALLOCATED_PROP (type)) -+ return 1; -+ -+ /* Scan field types in the Fortran case for nested dynamic types. -+ This will be done only for Fortran as in the C++ case an endless recursion -+ can occur in the area of classes. */ -+ if (current_language->la_language == language_fortran) -+ for (index = 0; index < TYPE_NFIELDS (type); index++) -+ if (is_dynamic_type (TYPE_FIELD_TYPE (type, index))) -+ return 1; -+ - /* Types that have a dynamic TYPE_DATA_LOCATION are considered - dynamic, even if the type itself is statically defined. - From a user's point of view, this may appear counter-intuitive; -@@ -1844,11 +1874,19 @@ - { - gdb_assert (TYPE_NFIELDS (type) == 1); - -- /* The array is dynamic if either the bounds are dynamic, -- or the elements it contains have a dynamic contents. */ -+ /* The array is dynamic if either -+ - the bounds are dynamic, -+ - the elements it contains have a dynamic contents -+ - a data_locaton attribute was found. */ - if (is_dynamic_type_internal (TYPE_INDEX_TYPE (type), 0)) - return 1; -- return is_dynamic_type_internal (TYPE_TARGET_TYPE (type), 0); -+ else if (TYPE_DATA_LOCATION (type) != NULL -+ && (TYPE_DATA_LOCATION_KIND (type) == PROP_LOCEXPR -+ || TYPE_DATA_LOCATION_KIND (type) == PROP_LOCLIST)) -+ return 1; -+ else -+ return is_dynamic_type_internal (TYPE_TARGET_TYPE (type), 0); -+ break; - } - - case TYPE_CODE_STRUCT: -@@ -1861,6 +1899,18 @@ - && is_dynamic_type_internal (TYPE_FIELD_TYPE (type, i), 0)) - return 1; - } -+ case TYPE_CODE_PTR: -+ { -+ if (TYPE_TARGET_TYPE (type) -+ && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRING -+ || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY)) -+ return is_dynamic_type (check_typedef (TYPE_TARGET_TYPE (type))); -+ -+ return 0; -+ break; -+ } -+ default: -+ return 0; - break; - } - -@@ -1890,7 +1940,8 @@ - struct type *static_range_type, *static_target_type; - const struct dynamic_prop *prop; - const struct dwarf2_locexpr_baton *baton; -- struct dynamic_prop low_bound, high_bound; -+ struct dynamic_prop low_bound, high_bound, stride; -+ struct type *range_copy = copy_type (dyn_range_type); - - gdb_assert (TYPE_CODE (dyn_range_type) == TYPE_CODE_RANGE); - -@@ -1922,12 +1973,19 @@ - high_bound.data.const_val = 0; - } - -+ prop = &TYPE_RANGE_DATA (dyn_range_type)->stride; -+ if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value)) -+ { -+ stride.kind = PROP_CONST; -+ stride.data.const_val = value; -+ } -+ - static_target_type -- = resolve_dynamic_type_internal (TYPE_TARGET_TYPE (dyn_range_type), -+ = resolve_dynamic_type_internal (TYPE_TARGET_TYPE (range_copy), - addr_stack, 0); -- static_range_type = create_range_type (copy_type (dyn_range_type), -+ static_range_type = create_range_type (range_copy, - static_target_type, -- &low_bound, &high_bound); -+ &low_bound, &high_bound, &stride); - TYPE_RANGE_DATA (static_range_type)->flag_bound_evaluated = 1; - return static_range_type; - } -@@ -1946,7 +2004,8 @@ - struct type *ary_dim; - struct dynamic_prop *prop; - -- gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY); -+ gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY -+ || TYPE_CODE (type) == TYPE_CODE_STRING); - - type = copy_type (type); - -@@ -1971,13 +2030,18 @@ - - ary_dim = check_typedef (TYPE_TARGET_TYPE (elt_type)); - -- if (ary_dim != NULL && TYPE_CODE (ary_dim) == TYPE_CODE_ARRAY) -+ if (ary_dim != NULL && (TYPE_CODE (ary_dim) == TYPE_CODE_ARRAY -+ || TYPE_CODE (ary_dim) == TYPE_CODE_STRING)) - elt_type = resolve_dynamic_array (ary_dim, addr_stack); - else - elt_type = TYPE_TARGET_TYPE (type); - -- return create_array_type_with_stride (type, elt_type, range_type, -- TYPE_FIELD_BITSIZE (type, 0)); -+ if (TYPE_CODE (type) == TYPE_CODE_STRING -+ && TYPE_FIELD_BITSIZE (type, 0) == 0) -+ return create_string_type (type, elt_type, range_type); -+ else -+ return create_array_type_with_stride (type, elt_type, range_type, -+ TYPE_FIELD_BITSIZE (type, 0)); - } - - /* Resolve dynamic bounds of members of the union TYPE to static -Index: gdb-7.10.50.20160106/gdb/gdbtypes.h -=================================================================== ---- gdb-7.10.50.20160106.orig/gdb/gdbtypes.h 2016-01-08 19:15:35.085582471 +0100 -+++ gdb-7.10.50.20160106/gdb/gdbtypes.h 2016-01-08 19:15:44.983637680 +0100 -@@ -577,6 +577,10 @@ - - struct dynamic_prop high; - -+ /* * Stride of range. */ -+ -+ struct dynamic_prop stride; -+ - /* True if HIGH range bound contains the number of elements in the - subrange. This affects how the final hight bound is computed. */ - -@@ -749,6 +753,18 @@ - - /* * Contains all dynamic type properties. */ - struct dynamic_prop_list *dyn_prop_list; -+ -+ /* Structure for DW_AT_allocated. -+ The presence of this attribute indicates that the object of the type -+ can be allocated/deallocated. The value can be a dwarf expression, -+ reference, or a constant. */ -+ struct dynamic_prop *allocated; -+ -+ /* Structure for DW_AT_associated. -+ The presence of this attribute indicated that the object of the type -+ can be associated. The value can be a dwarf expression, -+ reference, or a constant. */ -+ struct dynamic_prop *associated; - }; - - /* * A ``struct type'' describes a particular instance of a type, with -@@ -1255,6 +1271,15 @@ - TYPE_RANGE_DATA(range_type)->high.kind - #define TYPE_LOW_BOUND_KIND(range_type) \ - TYPE_RANGE_DATA(range_type)->low.kind -+#define TYPE_BYTE_STRIDE(range_type) \ -+ TYPE_RANGE_DATA(range_type)->stride.data.const_val -+#define TYPE_BYTE_STRIDE_BLOCK(range_type) \ -+ TYPE_RANGE_DATA(range_type)->stride.data.locexpr -+#define TYPE_BYTE_STRIDE_LOCLIST(range_type) \ -+ TYPE_RANGE_DATA(range_type)->stride.data.loclist -+#define TYPE_BYTE_STRIDE_KIND(range_type) \ -+ TYPE_RANGE_DATA(range_type)->stride.kind -+ - - /* Property accessors for the type data location. */ - #define TYPE_DATA_LOCATION(thistype) \ -@@ -1266,6 +1291,18 @@ - #define TYPE_DATA_LOCATION_KIND(thistype) \ - TYPE_DATA_LOCATION (thistype)->kind - -+/* Allocated status of type object. If set to non-zero it means the object -+ is allocated. A zero value means it is not allocated. */ -+#define TYPE_NOT_ALLOCATED(t) (TYPE_ALLOCATED_PROP (t) \ -+ && TYPE_ALLOCATED_PROP (t)->kind == PROP_CONST \ -+ && !TYPE_ALLOCATED_PROP (t)->data.const_val) -+ -+/* Associated status of type object. If set to non-zero it means the object -+ is associated. A zero value means it is not associated. */ -+#define TYPE_NOT_ASSOCIATED(t) (TYPE_ASSOCIATED_PROP (t) \ -+ && TYPE_ASSOCIATED_PROP (t)->kind == PROP_CONST \ -+ && !TYPE_ASSOCIATED_PROP (t)->data.const_val) -+ - /* Property accessors for the type allocated/associated. */ - #define TYPE_ALLOCATED_PROP(thistype) \ - get_dyn_prop (DYN_PROP_ALLOCATED, thistype) -@@ -1289,6 +1326,9 @@ - TYPE_HIGH_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype)) - #define TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED(arraytype) \ - TYPE_LOW_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype)) -+#define TYPE_ARRAY_STRIDE_IS_UNDEFINED(arraytype) \ -+ (TYPE_BYTE_STRIDE(TYPE_INDEX_TYPE(arraytype)) == 0) -+ - - #define TYPE_ARRAY_UPPER_BOUND_VALUE(arraytype) \ - (TYPE_HIGH_BOUND(TYPE_INDEX_TYPE((arraytype)))) -@@ -1775,6 +1815,7 @@ - - extern struct type *create_range_type (struct type *, struct type *, - const struct dynamic_prop *, -+ const struct dynamic_prop *, - const struct dynamic_prop *); - - extern struct type *create_array_type (struct type *, struct type *, -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 . -+ -+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 :: 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-stride.exp -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-stride.exp 2016-01-08 19:15:44.984637686 +0100 -@@ -0,0 +1,44 @@ -+# 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 . -+ -+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 -+} -+ -+gdb_breakpoint [gdb_get_line_number "re-reverse-elements"] -+gdb_continue_to_breakpoint "re-reverse-elements" -+gdb_test "print pvla" " = \\\(1, 2, 3, 4, 5, 6, 7, 8, 9, 10\\\)" \ -+ "print re-reverse-elements" -+gdb_test "print pvla(1)" " = 1" "print first re-reverse-element" -+gdb_test "print pvla(10)" " = 10" "print last re-reverse-element" -+ -+gdb_breakpoint [gdb_get_line_number "odd-elements"] -+gdb_continue_to_breakpoint "odd-elements" -+gdb_test "print pvla" " = \\\(1, 3, 5, 7, 9\\\)" "print odd-elements" -+gdb_test "print pvla(1)" " = 1" "print first odd-element" -+gdb_test "print pvla(5)" " = 9" "print last odd-element" -+ -+gdb_breakpoint [gdb_get_line_number "single-element"] -+gdb_continue_to_breakpoint "single-element" -+gdb_test "print pvla" " = \\\(5\\\)" "print single-element" -+gdb_test "print pvla(1)" " = 5" "print one single-element" -Index: gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-stride.f90 -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-stride.f90 2016-01-08 19:15:44.984637686 +0100 -@@ -0,0 +1,30 @@ -+! 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_stride -+ integer, target, allocatable :: vla (:) -+ integer, pointer :: pvla (:) -+ -+ allocate(vla(10)) -+ vla = (/ (I, I = 1,10) /) -+ -+ pvla => vla(10:1:-1) -+ pvla => pvla(10:1:-1) -+ pvla => vla(1:10:2) ! re-reverse-elements -+ pvla => vla(5:4:-2) ! odd-elements -+ -+ pvla => null() ! single-element -+end program vla_stride -Index: gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-strings.exp -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-strings.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 . -+ -+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-strings.f90 -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-strings.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 -Index: gdb-7.10.50.20160106/gdb/typeprint.c -=================================================================== ---- gdb-7.10.50.20160106.orig/gdb/typeprint.c 2016-01-08 19:15:35.086582476 +0100 -+++ gdb-7.10.50.20160106/gdb/typeprint.c 2016-01-08 19:15:44.984637686 +0100 -@@ -460,6 +460,13 @@ - - type = value_type (val); - -+ if (TYPE_CODE (type) == TYPE_CODE_PTR) -+ if (is_dynamic_type (TYPE_TARGET_TYPE (type))) -+ { -+ val = value_addr (value_ind (val)); -+ type = value_type (val); -+ } -+ - get_user_print_options (&opts); - if (opts.objectprint) - { -Index: gdb-7.10.50.20160106/gdb/valarith.c -=================================================================== ---- gdb-7.10.50.20160106.orig/gdb/valarith.c 2016-01-08 19:15:35.087582482 +0100 -+++ gdb-7.10.50.20160106/gdb/valarith.c 2016-01-08 19:15:44.985637691 +0100 -@@ -193,9 +193,21 @@ - struct type *array_type = check_typedef (value_type (array)); - struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (array_type)); - unsigned int elt_size = type_length_units (elt_type); -- unsigned int elt_offs = elt_size * longest_to_int (index - lowerbound); -+ unsigned int elt_offs = longest_to_int (index - lowerbound); -+ LONGEST elt_stride = TYPE_BYTE_STRIDE (TYPE_INDEX_TYPE (array_type)); - struct value *v; - -+ if (elt_stride > 0) -+ elt_offs *= elt_stride; -+ else if (elt_stride < 0) -+ { -+ int offs = (elt_offs + 1) * elt_stride; -+ -+ elt_offs = TYPE_LENGTH (array_type) + offs; -+ } -+ else -+ elt_offs *= elt_size; -+ - if (index < lowerbound || (!TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (array_type) - && elt_offs >= type_length_units (array_type))) - { -Index: gdb-7.10.50.20160106/gdb/valprint.c -=================================================================== ---- gdb-7.10.50.20160106.orig/gdb/valprint.c 2016-01-08 19:15:35.088582487 +0100 -+++ gdb-7.10.50.20160106/gdb/valprint.c 2016-01-08 19:15:44.986637697 +0100 -@@ -316,6 +316,18 @@ - return 0; - } - -+ if (TYPE_NOT_ASSOCIATED (type)) -+ { -+ val_print_not_associated (stream); -+ return 0; -+ } -+ -+ if (TYPE_NOT_ALLOCATED (type)) -+ { -+ val_print_not_allocated (stream); -+ return 0; -+ } -+ - if (TYPE_CODE (type) != TYPE_CODE_UNION - && TYPE_CODE (type) != TYPE_CODE_STRUCT - && TYPE_CODE (type) != TYPE_CODE_ARRAY) -@@ -1025,12 +1037,16 @@ - value_check_printable (struct value *val, struct ui_file *stream, - const struct value_print_options *options) - { -+ const struct type *type; -+ - if (val == 0) - { - fprintf_filtered (stream, _("
")); - return 0; - } - -+ type = value_type (val); -+ - if (value_entirely_optimized_out (val)) - { - if (options->summary && !val_print_scalar_type_p (value_type (val))) -@@ -1066,6 +1082,18 @@ - { - val_print_not_allocated (stream); - return 0; -+ } -+ -+ if (TYPE_NOT_ASSOCIATED (type)) -+ { -+ val_print_not_associated (stream); -+ return 0; -+ } -+ -+ if (TYPE_NOT_ALLOCATED (type)) -+ { -+ val_print_not_allocated (stream); -+ return 0; - } - - return 1; -Index: gdb-7.10.50.20160106/gdb/valprint.h -=================================================================== ---- gdb-7.10.50.20160106.orig/gdb/valprint.h 2016-01-08 19:15:35.088582487 +0100 -+++ gdb-7.10.50.20160106/gdb/valprint.h 2016-01-08 19:15:44.986637697 +0100 -@@ -232,4 +232,8 @@ - struct format_data *fmtp); - extern void print_value (struct value *val, const struct format_data *fmtp); - -+extern void val_print_not_allocated (struct ui_file *stream); -+ -+extern void val_print_not_associated (struct ui_file *stream); -+ - #endif -Index: gdb-7.10.50.20160106/gdb/value.c -=================================================================== ---- gdb-7.10.50.20160106.orig/gdb/value.c 2016-01-08 19:15:35.090582499 +0100 -+++ gdb-7.10.50.20160106/gdb/value.c 2016-01-08 19:15:44.987637702 +0100 -@@ -40,6 +40,7 @@ - #include "tracepoint.h" - #include "cp-abi.h" - #include "user-regs.h" -+#include "dwarf2loc.h" - - /* Prototypes for exported functions. */ - -@@ -1788,6 +1789,25 @@ - if (funcs->copy_closure) - component->location.computed.closure = funcs->copy_closure (whole); - } -+ -+ /* For dynamic types compute the address of the component value location in -+ sub range types based on the location of the sub range type, if not being -+ an internal GDB variable or parts of it. */ -+ if (VALUE_LVAL (component) != lval_internalvar -+ && VALUE_LVAL (component) != lval_internalvar_component) -+ { -+ CORE_ADDR addr; -+ struct type *type = value_type (whole); -+ -+ addr = value_raw_address (component); -+ -+ if (TYPE_DATA_LOCATION (type) -+ && TYPE_DATA_LOCATION_KIND (type) == PROP_CONST) -+ { -+ addr = TYPE_DATA_LOCATION_ADDR (type); -+ set_value_address (component, addr); -+ } -+ } - } - - -@@ -3095,13 +3115,22 @@ - v = allocate_value_lazy (type); - else - { -- v = allocate_value (type); -- value_contents_copy_raw (v, value_embedded_offset (v), -- arg1, value_embedded_offset (arg1) + offset, -- type_length_units (type)); -+ if (TYPE_DATA_LOCATION (type) -+ && TYPE_DATA_LOCATION_KIND (type) == PROP_CONST) -+ v = value_at_lazy (type, value_address (arg1) + offset); -+ else -+ { -+ v = allocate_value (type); -+ value_contents_copy_raw (v, value_embedded_offset (v), -+ arg1, value_embedded_offset (arg1) + offset, -+ type_length_units (type)); -+ } - } -- v->offset = (value_offset (arg1) + offset -- + value_embedded_offset (arg1)); -+ -+ if (!TYPE_DATA_LOCATION (type) -+ || !TYPE_DATA_LOCATION_KIND (type) == PROP_CONST) -+ v->offset = (value_offset (arg1) + offset -+ + value_embedded_offset (arg1)); - } - set_value_component_location (v, arg1); - VALUE_REGNUM (v) = VALUE_REGNUM (arg1); -@@ -3689,7 +3718,8 @@ - struct value *original_value) - { - /* Re-adjust type. */ -- deprecated_set_value_type (value, TYPE_TARGET_TYPE (original_type)); -+ if (!is_dynamic_type (TYPE_TARGET_TYPE (original_type))) -+ deprecated_set_value_type (value, TYPE_TARGET_TYPE (original_type)); - - /* Add embedding info. */ - set_value_enclosing_type (value, enc_type); -@@ -3706,6 +3736,12 @@ - struct value *retval; - struct type *enc_type; - -+ if (current_language->la_language != language_fortran -+ && TYPE_DATA_LOCATION (value_type_arg_tmp) != NULL -+ && TYPE_DATA_LOCATION_KIND (value_type_arg_tmp) == PROP_CONST) -+ arg = value_at_lazy (value_type_arg_tmp, -+ TYPE_DATA_LOCATION_ADDR (value_type_arg_tmp)); -+ - retval = coerce_ref_if_computed (arg); - if (retval) - return retval; -@@ -3834,8 +3870,14 @@ - } - else if (VALUE_LVAL (val) == lval_memory) - { -- CORE_ADDR addr = value_address (val); - struct type *type = check_typedef (value_enclosing_type (val)); -+ CORE_ADDR addr; -+ -+ if (TYPE_DATA_LOCATION (type) != NULL -+ && TYPE_DATA_LOCATION_KIND (type) == PROP_CONST) -+ addr = TYPE_DATA_LOCATION_ADDR (type); -+ else -+ addr = value_address (val); - - if (TYPE_LENGTH (type)) - read_value_memory (val, 0, value_stack (val), -Index: gdb-7.10.50.20160106/gdb/dwarf2loc.c -=================================================================== ---- gdb-7.10.50.20160106.orig/gdb/dwarf2loc.c 2016-01-08 19:15:35.091582504 +0100 -+++ gdb-7.10.50.20160106/gdb/dwarf2loc.c 2016-01-08 19:15:44.988637708 +0100 -@@ -2368,6 +2368,11 @@ - address = value_as_address (value_from_pointer (ptr_type, address)); - - do_cleanups (value_chain); -+ -+ /* Select right frame to correctly evaluate VLA's during a backtrace. */ -+ if (is_dynamic_type (type)) -+ select_frame (frame); -+ - retval = value_at_lazy (type, address + byte_offset); - if (in_stack_memory) - set_value_stack (retval, 1); -@@ -2660,6 +2665,19 @@ - data, data + size, per_cu); - } - -+/* See dwarf2loc.h. */ -+ -+int -+dwarf2_address_data_valid (const struct type *type) -+{ -+ if (TYPE_NOT_ASSOCIATED (type)) -+ return 0; -+ -+ if (TYPE_NOT_ALLOCATED (type)) -+ return 0; -+ -+ return 1; -+} - - /* Helper functions and baton for dwarf2_loc_desc_needs_frame. */ - diff --git a/gdb.spec b/gdb.spec index 1dcfc22..4cc1fcf 100644 --- a/gdb.spec +++ b/gdb.spec @@ -19,15 +19,15 @@ Summary: A GNU source-level debugger for C, C++, Fortran, Go and other languages Name: %{?scl_prefix}gdb # Freeze it when GDB gets branched -%global snapsrc 20160210 +%global snapsrc 20160716 # See timestamp of source gnulib installed into gdb/gnulib/ . %global snapgnulib 20150822 %global tarname gdb-%{version} -Version: 7.11.1 +Version: 7.11.50.%{snapsrc} # The release always contains a leading reserved number, start it at 1. # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing. -Release: 76%{?dist} +Release: 1%{?dist} License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain and GFDL Group: Development/Debuggers @@ -519,12 +519,16 @@ Patch1060: gdb-fortran-stride-intel-3of6.patch Patch1061: gdb-fortran-stride-intel-4of6.patch Patch1062: gdb-fortran-stride-intel-5of6.patch Patch1063: gdb-fortran-stride-intel-6of6.patch -Patch888: gdb-vla-intel.patch -Patch983: gdb-vla-intel-logical-not.patch +Patch1132: gdb-vla-intel-1of7.patch +Patch1133: gdb-vla-intel-2of7.patch +Patch1134: gdb-vla-intel-3of7.patch +Patch1135: gdb-vla-intel-4of7.patch +Patch1136: gdb-vla-intel-5of7.patch +Patch1137: gdb-vla-intel-6of7.patch +Patch1138: gdb-vla-intel-7of7.patch Patch889: gdb-vla-intel-stringbt-fix.patch -Patch912: gdb-vla-intel-04of23-fix.patch Patch887: gdb-archer-vla-tests.patch -Patch1069: gdb-fortran-stride-intel-6of6-nokfail.patch +Patch888: gdb-vla-intel-tests.patch # Continue backtrace even if a frame filter throws an exception (Phil Muldoon). Patch918: gdb-btrobust.patch @@ -570,9 +574,11 @@ Patch1120: gdb-testsuite-dw2-undefined-ret-addr.patch # New test for Python "Cannot locate object file for block" (for RH BZ 1325795). Patch1123: gdb-rhbz1325795-framefilters-test.patch -# Import bare DW_TAG_lexical_block (RH BZ 1325396). -Patch1128: gdb-bare-DW_TAG_lexical_block-1of2.patch -Patch1129: gdb-bare-DW_TAG_lexical_block-2of2.patch +# [testsuite] Fix gdb.gdb/selftest.exp for C++-O2-g-built GDB. +Patch1139: gdb-testsuite-selftest-cxx.patch + +# [testsuite] Skip py-unwind.exp on x86_64 -m32. +Patch1140: gdb-testsuite-py-unwind-m32.patch %if 0%{!?rhel:1} || 0%{?rhel} > 6 # RL_STATE_FEDORA_GDB would not be found for: @@ -771,10 +777,14 @@ find -name "*.info*"|xargs rm -f %patch1061 -p1 %patch1062 -p1 %patch1063 -p1 -%patch888 -p1 -%patch983 -p1 +%patch1132 -p1 +%patch1133 -p1 +%patch1134 -p1 +%patch1135 -p1 +%patch1136 -p1 +%patch1137 -p1 +%patch1138 -p1 %patch889 -p1 -%patch912 -p1 %patch1 -p1 %patch105 -p1 @@ -868,7 +878,7 @@ find -name "*.info*"|xargs rm -f %patch852 -p1 %patch863 -p1 %patch887 -p1 -%patch1069 -p1 +%patch888 -p1 %patch918 -p1 %patch925 -p1 %patch927 -p1 @@ -886,8 +896,8 @@ find -name "*.info*"|xargs rm -f %patch1118 -p1 %patch1120 -p1 %patch1123 -p1 -%patch1128 -p1 -%patch1129 -p1 +%patch1139 -p1 +%patch1140 -p1 %patch1075 -p1 %if 0%{?rhel:1} && 0%{?rhel} <= 7 @@ -965,6 +975,8 @@ CFLAGS="$CFLAGS -DNEED_RL_STATE_FEDORA_GDB" CFLAGS="$CFLAGS -DNEED_DETACH_SIGSTOP" %endif +export CXXFLAGS="$CFLAGS" + # --htmldir and --pdfdir are not used as they are used from %{gdb_build}. ../configure \ --prefix=%{_prefix} \ @@ -975,6 +987,7 @@ CFLAGS="$CFLAGS -DNEED_DETACH_SIGSTOP" --with-system-gdbinit=%{_sysconfdir}/gdbinit \ --with-gdb-datadir=%{_datadir}/gdb \ --enable-gdb-build-warnings=,-Wno-unused \ + --enable-build-with-cxx \ %ifnarch %{ix86} alpha ppc s390 s390x x86_64 ppc64 ppc64le sparc sparcv9 sparc64 %{arm} aarch64 --disable-werror \ %else @@ -1407,6 +1420,9 @@ then fi %changelog +* Sun Jul 17 2016 Jan Kratochvil - 7.11.50.20160716-1.fc25 +- Rebase to FSF GDB 7.11.50.20160716 (pre-7.12 trunk snapshot). + * Mon Jun 27 2016 Jan Kratochvil - 7.11.1-76.fc24 - Test 'info type-printers' Python error (RH BZ 1350436). diff --git a/sources b/sources index 26478eb..9161e06 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ 7ad32d3894aaf90d00a4343a735c3e1c gdb-libstdc++-v3-python-r225521.tar.xz -5aa71522e488e358243917967db87476 gdb-7.11.1.tar.xz +9bce93a567db0e712adae51c35170d06 gdb-7.11.50.20160716.tar.xz