public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Jan Kratochvil <jan.kratochvil@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/gdb] gdb-17.2-rebase-f44: Merge commit '3f32311b4a6fe79de1a3da7bca5c08613eb3734e'
Date: Sat, 27 Jun 2026 23:57:47 GMT [thread overview]
Message-ID: <178260466702.1.3268556433029150359.rpms-gdb-a5a9adcd40e3@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/gdb
Branch : gdb-17.2-rebase-f44
Commit : a5a9adcd40e34226d3129c5177f8fe8292d704f6
Author : Jan Kratochvil <jan.kratochvil@redhat.com>
Date : 2016-08-23T20:54:15+02:00
Stats : +4109/-4867 in 41 file(s)
URL : https://src.fedoraproject.org/rpms/gdb/c/a5a9adcd40e34226d3129c5177f8fe8292d704f6?branch=gdb-17.2-rebase-f44
Log:
Merge commit '3f32311b4a6fe79de1a3da7bca5c08613eb3734e'
---
diff --git a/.gitignore b/.gitignore
index dbb15cb..2c4600f 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.90.20160807.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 <libunwind-ia64.h> header file. */
#undef HAVE_LIBUNWIND_IA64_H
-Index: gdb-7.10.50.20160106/gdb/configure
+Index: gdb-7.11.50.20160630/gdb/configure
===================================================================
---- gdb-7.10.50.20160106.orig/gdb/configure
-+++ gdb-7.10.50.20160106/gdb/configure
-@@ -705,6 +705,11 @@ PKGVERSION
+--- gdb-7.11.50.20160630.orig/gdb/configure 2016-07-02 23:43:24.085214144 +0200
++++ gdb-7.11.50.20160630/gdb/configure 2016-07-03 14:37:12.581130811 +0200
+@@ -705,6 +705,11 @@
HAVE_NATIVE_GCORE_TARGET
TARGET_OBS
subdirs
@@ -345,7 +310,7 @@ Index: gdb-7.10.50.20160106/gdb/configure
GDB_DATADIR
DEBUGDIR
MAKEINFO_EXTRA_FLAGS
-@@ -813,6 +818,7 @@ with_gdb_datadir
+@@ -814,6 +819,7 @@
with_relocated_sources
with_auto_load_dir
with_auto_load_safe_path
@@ -353,7 +318,7 @@ Index: gdb-7.10.50.20160106/gdb/configure
enable_targets
enable_64_bit_bfd
enable_gdbcli
-@@ -869,6 +875,11 @@ CCC
+@@ -870,6 +876,11 @@
CPP
MAKEINFO
MAKEINFOFLAGS
@@ -365,7 +330,7 @@ Index: gdb-7.10.50.20160106/gdb/configure
YACC
YFLAGS
XMKMF'
-@@ -1540,6 +1551,8 @@ Optional Packages:
+@@ -1541,6 +1552,8 @@
[--with-auto-load-dir]
--without-auto-load-safe-path
do not restrict auto-loaded files locations
@@ -374,7 +339,7 @@ Index: gdb-7.10.50.20160106/gdb/configure
--with-libunwind-ia64 use libunwind frame unwinding for ia64 targets
--with-curses use the curses library instead of the termcap
library
-@@ -1595,6 +1608,13 @@ Some influential environment variables:
+@@ -1595,6 +1608,13 @@
MAKEINFO Parent configure detects if it is of sufficient version.
MAKEINFOFLAGS
Parameters for MAKEINFO.
@@ -388,7 +353,7 @@ Index: gdb-7.10.50.20160106/gdb/configure
YACC The `Yet Another C Compiler' implementation to use. Defaults to
the first program found out of: `bison -y', `byacc', `yacc'.
YFLAGS The list of arguments that will be passed by default to $YACC.
-@@ -5655,6 +5675,494 @@ _ACEOF
+@@ -5613,6 +5633,494 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_auto_load_safe_path" >&5
$as_echo "$with_auto_load_safe_path" >&6; }
@@ -883,11 +848,11 @@ Index: gdb-7.10.50.20160106/gdb/configure
subdirs="$subdirs testsuite"
-Index: gdb-7.10.50.20160106/gdb/configure.ac
+Index: gdb-7.11.50.20160630/gdb/configure.ac
===================================================================
---- gdb-7.10.50.20160106.orig/gdb/configure.ac
-+++ gdb-7.10.50.20160106/gdb/configure.ac
-@@ -177,6 +177,199 @@ AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escap
+--- gdb-7.11.50.20160630.orig/gdb/configure.ac 2016-07-02 23:43:24.085214144 +0200
++++ gdb-7.11.50.20160630/gdb/configure.ac 2016-07-03 14:37:12.582130819 +0200
+@@ -177,6 +177,199 @@
[Directories safe to hold auto-loaded files.])
AC_MSG_RESULT([$with_auto_load_safe_path])
@@ -1087,11 +1052,11 @@ Index: gdb-7.10.50.20160106/gdb/configure.ac
AC_CONFIG_SUBDIRS(testsuite)
# Check whether to support alternative target configurations
-Index: gdb-7.10.50.20160106/gdb/corelow.c
+Index: gdb-7.11.50.20160630/gdb/corelow.c
===================================================================
---- gdb-7.10.50.20160106.orig/gdb/corelow.c
-+++ gdb-7.10.50.20160106/gdb/corelow.c
-@@ -310,7 +310,7 @@ build_id_locate_exec (int from_tty)
+--- gdb-7.11.50.20160630.orig/gdb/corelow.c 2016-07-03 14:34:32.022753582 +0200
++++ gdb-7.11.50.20160630/gdb/corelow.c 2016-07-03 14:37:12.582130819 +0200
+@@ -310,7 +310,7 @@
symfile_objfile->flags |= OBJF_BUILD_ID_CORE_LOADED;
}
else
@@ -1100,10 +1065,10 @@ Index: gdb-7.10.50.20160106/gdb/corelow.c
do_cleanups (back_to);
-Index: gdb-7.10.50.20160106/gdb/build-id.c
+Index: gdb-7.11.50.20160630/gdb/build-id.c
===================================================================
---- gdb-7.10.50.20160106.orig/gdb/build-id.c
-+++ gdb-7.10.50.20160106/gdb/build-id.c
+--- gdb-7.11.50.20160630.orig/gdb/build-id.c 2016-07-03 14:36:50.124938187 +0200
++++ gdb-7.11.50.20160630/gdb/build-id.c 2016-07-03 14:42:25.171812134 +0200
@@ -35,6 +35,7 @@
#include "elf/common.h"
#include "elf-bfd.h"
@@ -1112,7 +1077,7 @@ Index: gdb-7.10.50.20160106/gdb/build-id.c
#define BUILD_ID_VERBOSE_NONE 0
#define BUILD_ID_VERBOSE_FILENAMES 1
-@@ -665,8 +666,366 @@ build_id_to_filename (const struct bfd_b
+@@ -665,8 +666,366 @@
return result;
}
@@ -1221,13 +1186,13 @@ Index: gdb-7.10.50.20160106/gdb/build-id.c
+ return 0;
+ }
+
-+ if (!((headerFormat_p = dlsym (h, "headerFormat"))
-+ && (rpmReadConfigFiles_p = dlsym (h, "rpmReadConfigFiles"))
-+ && (rpmdbFreeIterator_p = dlsym (h, "rpmdbFreeIterator"))
-+ && (rpmdbNextIterator_p = dlsym (h, "rpmdbNextIterator"))
-+ && (rpmtsCreate_p = dlsym (h, "rpmtsCreate"))
-+ && (rpmtsFree_p = dlsym (h, "rpmtsFree"))
-+ && (rpmtsInitIterator_p = dlsym (h, "rpmtsInitIterator"))))
++ if (!((headerFormat_p = (char *(*) (Header h, const char * fmt, errmsg_t *errmsg)) dlsym (h, "headerFormat"))
++ && (rpmReadConfigFiles_p = (int (*) (const char * file, const char * target)) dlsym (h, "rpmReadConfigFiles"))
++ && (rpmdbFreeIterator_p = (rpmdbMatchIterator (*) (rpmdbMatchIterator mi)) dlsym (h, "rpmdbFreeIterator"))
++ && (rpmdbNextIterator_p = (Header (*) (rpmdbMatchIterator mi)) dlsym (h, "rpmdbNextIterator"))
++ && (rpmtsCreate_p = (rpmts (*) (void)) dlsym (h, "rpmtsCreate"))
++ && (rpmtsFree_p = (rpmts (*) (rpmts ts)) dlsym (h, "rpmtsFree"))
++ && (rpmtsInitIterator_p = (rpmdbMatchIterator (*) (const rpmts ts, rpmTag rpmtag, const void *keyp, size_t keylen)) dlsym (h, "rpmtsInitIterator"))))
+ {
+ warning (_("Opened library \"%s\" is incompatible (%s), "
+ "missing debuginfos notifications will not be displayed"),
@@ -1283,12 +1248,12 @@ Index: gdb-7.10.50.20160106/gdb/build-id.c
+ if (s > debuginfo && memcmp (s, ".src.rpm", srcrpmlen) == 0)
+ {
+ /* s2 = `-%{release}.src.rpm-debuginfo.%{arch}' */
-+ s2 = memrchr (debuginfo, '-', s - debuginfo);
++ s2 = (char *) memrchr (debuginfo, '-', s - debuginfo);
+ }
+ if (s2)
+ {
+ /* s2 = `-%{version}-%{release}.src.rpm-debuginfo.%{arch}' */
-+ s2 = memrchr (debuginfo, '-', s2 - debuginfo);
++ s2 = (char *) memrchr (debuginfo, '-', s2 - debuginfo);
+ }
+ if (!s2)
+ {
@@ -1311,7 +1276,7 @@ Index: gdb-7.10.50.20160106/gdb/build-id.c
+
+ /* RPMDBI_PACKAGES requires keylen == sizeof (int). */
+ /* RPMDBI_LABEL is an interface for NVR-based dbiFindByLabel(). */
-+ mi_debuginfo = rpmtsInitIterator_p (ts, RPMDBI_LABEL, debuginfo, 0);
++ mi_debuginfo = rpmtsInitIterator_p (ts, (rpmTag) RPMDBI_LABEL, debuginfo, 0);
+ xfree (debuginfo);
+ if (mi_debuginfo)
+ {
@@ -1362,7 +1327,7 @@ Index: gdb-7.10.50.20160106/gdb/build-id.c
+
+ *slot = debuginfo;
+
-+ missing_rpm = xmalloc (sizeof (*missing_rpm) + strlen (debuginfo));
++ missing_rpm = (struct missing_rpm *) xmalloc (sizeof (*missing_rpm) + strlen (debuginfo));
+ strcpy (missing_rpm->rpm, debuginfo);
+ missing_rpm->next = missing_rpm_list;
+ missing_rpm_list = missing_rpm;
@@ -1400,7 +1365,7 @@ Index: gdb-7.10.50.20160106/gdb/build-id.c
+ if (missing_rpm_list_entries == 0)
+ return;
+
-+ array = xmalloc (sizeof (*array) * missing_rpm_list_entries);
++ array = (char **) xmalloc (sizeof (*array) * missing_rpm_list_entries);
+ cleanups = make_cleanup (xfree, array);
+
+ array_iter = array;
@@ -1480,7 +1445,7 @@ Index: gdb-7.10.50.20160106/gdb/build-id.c
avoidance. */
struct missing_filepair
-@@ -720,11 +1079,17 @@ missing_filepair_change (void)
+@@ -720,11 +1079,17 @@
/* All their memory came just from missing_filepair_OBSTACK. */
missing_filepair_hash = NULL;
}
@@ -1498,7 +1463,7 @@ Index: gdb-7.10.50.20160106/gdb/build-id.c
missing_filepair_change ();
}
-@@ -791,14 +1156,39 @@ debug_print_missing (const char *binary,
+@@ -791,14 +1156,39 @@
*slot = missing_filepair;
diff --git a/gdb-6.6-buildid-locate-solib-missing-ids.patch b/gdb-6.6-buildid-locate-solib-missing-ids.patch
index a89893c..f4dccc9 100644
--- a/gdb-6.6-buildid-locate-solib-missing-ids.patch
+++ b/gdb-6.6-buildid-locate-solib-missing-ids.patch
@@ -1,3 +1,6 @@
+gdb returns an incorrect back trace when applying a debuginfo
+https://bugzilla.redhat.com/show_bug.cgi?id=1339862
+
Index: gdb-7.9.90.20150709/gdb/solib-svr4.c
===================================================================
--- gdb-7.9.90.20150709.orig/gdb/solib-svr4.c 2015-07-09 18:18:54.526417766 +0200
@@ -57,3 +60,163 @@ Index: gdb-7.9.90.20150709/gdb/solib-svr4.c
xfree (build_id_filename);
xfree (build_id);
+--- /dev/null 2016-07-02 20:29:01.679404943 +0200
++++ gdb-7.11.50.20160721/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib.exp 2016-07-31 23:04:49.062753722 +0200
+@@ -0,0 +1,105 @@
++# Copyright 2016 Free Software Foundation, Inc.
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program. If not, see <http://www.gnu.org/licenses/>.
++
++if {[skip_shlib_tests]} {
++ return 0
++}
++
++set testfile "gcore-buildid-exec-but-not-solib"
++set srcmainfile ${testfile}-main.c
++set srclibfile ${testfile}-lib.c
++set libfile [standard_output_file ${testfile}-lib.so]
++set objfile [standard_output_file ${testfile}-main.o]
++set executable ${testfile}-main
++set binfile [standard_output_file ${executable}]
++set gcorefile [standard_output_file ${executable}.gcore]
++set outdir [file dirname $binfile]
++
++if { [gdb_compile_shlib ${srcdir}/${subdir}/${srclibfile} ${libfile} "debug additional_flags=-Wl,--build-id"] != ""
++ || [gdb_compile ${srcdir}/${subdir}/${srcmainfile} ${objfile} object {debug}] != "" } {
++ unsupported "-Wl,--build-id compilation failed"
++ return -1
++}
++set opts [list debug shlib=${libfile} "additional_flags=-Wl,--build-id"]
++if { [gdb_compile ${objfile} ${binfile} executable $opts] != "" } {
++ unsupported "-Wl,--build-id compilation failed"
++ return -1
++}
++
++clean_restart $executable
++gdb_load_shlib $libfile
++
++# Does this gdb support gcore?
++set test "help gcore"
++gdb_test_multiple $test $test {
++ -re "Undefined command: .gcore.*\r\n$gdb_prompt $" {
++ # gcore command not supported -- nothing to test here.
++ unsupported "gdb does not support gcore on this target"
++ return -1;
++ }
++ -re "Save a core file .*\r\n$gdb_prompt $" {
++ pass $test
++ }
++}
++
++if { ![runto lib] } then {
++ return -1
++}
++
++set escapedfilename [string_to_regexp ${gcorefile}]
++
++set test "save a corefile"
++gdb_test_multiple "gcore ${gcorefile}" $test {
++ -re "Saved corefile ${escapedfilename}\r\n$gdb_prompt $" {
++ pass $test
++ }
++ -re "Can't create a corefile\r\n$gdb_prompt $" {
++ unsupported $test
++ return -1
++ }
++}
++
++# Now restart gdb and load the corefile.
++
++clean_restart $executable
++gdb_load_shlib $libfile
++
++set buildid [build_id_debug_filename_get $libfile]
++
++regsub {\.debug$} $buildid {} buildid
++
++set debugdir [standard_output_file ${testfile}-debugdir]
++file delete -force -- $debugdir
++
++file mkdir $debugdir/[file dirname $libfile]
++file copy $libfile $debugdir/${libfile}
++
++file mkdir $debugdir/[file dirname $buildid]
++file copy $libfile $debugdir/${buildid}
++
++remote_exec build "ln -s /lib ${debugdir}/"
++remote_exec build "ln -s /lib64 ${debugdir}/"
++# /usr is not needed, all the libs are in /lib64: libm.so.6 libc.so.6 ld-linux-x86-64.so.2
++
++gdb_test "set solib-absolute-prefix $debugdir"
++
++gdb_test_no_output "set debug-file-directory $debugdir" "set debug-file-directory"
++
++gdb_test "core ${gcorefile}" "Core was generated by .*" "re-load generated corefile"
++
++gdb_test "frame" "#0 \[^\r\n\]* lib .*" "library got loaded"
++
++gdb_test "bt"
++gdb_test "info shared"
+--- /dev/null 2016-07-02 20:29:01.679404943 +0200
++++ gdb-7.11.50.20160721/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib-main.c 2016-07-28 21:06:40.977786922 +0200
+@@ -0,0 +1,25 @@
++/* Copyright 2010 Free Software Foundation, Inc.
++
++ This file is part of GDB.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 3 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program. If not, see <http://www.gnu.org/licenses/>. */
++
++extern void lib (void);
++
++int
++main (void)
++{
++ lib ();
++ return 0;
++}
+--- /dev/null 2016-07-02 20:29:01.679404943 +0200
++++ gdb-7.11.50.20160721/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib-lib.c 2016-07-28 21:06:40.977786922 +0200
+@@ -0,0 +1,21 @@
++/* Copyright 2010 Free Software Foundation, Inc.
++
++ This file is part of GDB.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 3 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program. If not, see <http://www.gnu.org/licenses/>. */
++
++void
++lib (void)
++{
++}
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' <repeats 78 times>" "second: print temp1"
+gdb_test "p temp2" " = '2' <repeats 78 times>" "second: print temp2"
+gdb_test "p temp3" " = '3' <repeats 48 times>" "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' <repeats 129 times>"
-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\]* = <not allocated>" "p varx unallocated"
-+gdb_test "ptype varx" "type = <not allocated>" "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\]* = <not associated>" "p varv unassociated"
-+gdb_test "ptype varv" "type = <not associated>" "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\]* = (<not associated>|.*(Cannot access it|Unable to access the object) because the object is not associated.)" "p varv deassociated"
-+gdb_test "ptype varv" "type = (<not associated>|.*(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\]* = <not allocated>" "p varx deallocated"
-+gdb_test "ptype varx" "type = <not allocated>" "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..8d9265f 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 cfee64ee869a6a6e4ab0b64af149d4cf59517d80
tromey/python
@@ -16,10 +16,10 @@ index 0000000..173b8ea
+This branch originally held the Python code for gdb. It still exists
+because a small amount of code here has not yet been merged upstream.
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
-index 95104ef..a9b198a 100644
+index 5af6103..9c69cb0 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
-@@ -1534,6 +1534,12 @@ stamp-h: $(srcdir)/config.in config.status
+@@ -1553,6 +1553,12 @@ stamp-h: $(srcdir)/config.in config.status
CONFIG_LINKS= \
$(SHELL) config.status
@@ -33,10 +33,10 @@ index 95104ef..a9b198a 100644
$(SHELL) config.status --recheck
diff --git a/gdb/data-directory/Makefile.in b/gdb/data-directory/Makefile.in
-index 30cfd17..e977b30 100644
+index 3f23516..b5d6390 100644
--- a/gdb/data-directory/Makefile.in
+++ b/gdb/data-directory/Makefile.in
-@@ -65,7 +65,10 @@ PYTHON_FILE_LIST = \
+@@ -66,7 +66,10 @@ PYTHON_FILE_LIST = \
gdb/unwinder.py \
gdb/prompt.py \
gdb/xmethod.py \
@@ -47,8 +47,8 @@ index 30cfd17..e977b30 100644
gdb/command/xmethods.py \
gdb/command/frame_filters.py \
gdb/command/unwinders.py \
-@@ -76,6 +79,8 @@ PYTHON_FILE_LIST = \
- gdb/function/__init__.py \
+@@ -78,6 +81,8 @@ PYTHON_FILE_LIST = \
+ gdb/function/as_string.py \
gdb/function/caller_is.py \
gdb/function/strfns.py \
+ gdb/function/caller_is.py \
@@ -57,7 +57,7 @@ index 30cfd17..e977b30 100644
gdb/printer/bound_registers.py
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
-index 1665372..c4caffc 100644
+index f5dde61..1d92bd6 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -1225,6 +1225,16 @@ for remote debugging.
@@ -78,7 +78,7 @@ index 1665372..c4caffc 100644
@item -tui
@cindex @code{--tui}
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
-index 57ec22e..13beb05 100644
+index a17e37d..c56068b 100644
--- a/gdb/doc/python.texi
+++ b/gdb/doc/python.texi
@@ -88,8 +88,6 @@ containing @code{end}. For example:
@@ -111,7 +111,7 @@ index 05a38b2..9801fdf 100644
set variable $gdb_init_done = 1
diff --git a/gdb/main.c b/gdb/main.c
-index aecd60a..d0f7834 100644
+index 5477379..b7e413f 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -33,6 +33,7 @@
@@ -122,7 +122,7 @@ index aecd60a..d0f7834 100644
#include "source.h"
#include "cli/cli-cmds.h"
#include "objfiles.h"
-@@ -453,6 +454,8 @@ captured_main (void *data)
+@@ -459,6 +460,8 @@ captured_main (void *data)
char *cdarg = NULL;
char *ttyarg = NULL;
@@ -190,7 +190,7 @@ index aecd60a..d0f7834 100644
{
/* The remaining options are the command-line options for the
inferior. The first one is the sym/exec file, and the rest
-@@ -1137,7 +1171,8 @@ captured_main (void *data)
+@@ -1127,7 +1161,8 @@ captured_main (void *data)
/* Read in the old history after all the command files have been
read. */
@@ -200,7 +200,7 @@ index aecd60a..d0f7834 100644
if (batch_flag)
{
-@@ -1148,13 +1183,25 @@ captured_main (void *data)
+@@ -1138,13 +1173,25 @@ captured_main (void *data)
/* Show time and/or space usage. */
do_cleanups (pre_stat_chain);
@@ -232,7 +232,7 @@ index aecd60a..d0f7834 100644
}
/* No exit -- exit is through quit_command. */
}
-@@ -1188,6 +1235,12 @@ print_gdb_help (struct ui_file *stream)
+@@ -1187,6 +1234,12 @@ print_gdb_help (struct ui_file *stream)
fputs_unfiltered (_("\
This is the GNU debugger. Usage:\n\n\
gdb [options] [executable-file [core-file or process-id]]\n\
@@ -245,7 +245,7 @@ index aecd60a..d0f7834 100644
gdb [options] --args executable-file [inferior-arguments ...]\n\n\
"), stream);
fputs_unfiltered (_("\
-@@ -1232,6 +1285,13 @@ Output and user interface control:\n\n\
+@@ -1231,6 +1284,13 @@ Output and user interface control:\n\n\
#endif
fputs_unfiltered (_("\
--dbx DBX compatibility mode.\n\
@@ -443,10 +443,10 @@ index 0000000..8742680
+
+InScope ()
diff --git a/gdb/python/python.c b/gdb/python/python.c
-index 4f88b0e..870a1ba 100644
+index 621e201..703a1a0 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
-@@ -93,6 +93,8 @@ const struct extension_language_defn extension_language_python =
+@@ -95,6 +95,8 @@ const struct extension_language_defn extension_language_python =
#include "linespec.h"
#include "source.h"
#include "version.h"
@@ -455,7 +455,7 @@ index 4f88b0e..870a1ba 100644
#include "target.h"
#include "gdbthread.h"
#include "interps.h"
-@@ -1262,6 +1264,83 @@ gdbpy_print_stack (void)
+@@ -1263,6 +1265,92 @@ gdbpy_print_stack (void)
/* Return the current Progspace.
There always is one. */
@@ -477,7 +477,14 @@ index 4f88b0e..870a1ba 100644
+ return PyErr_Format (PyExc_RuntimeError, _("Cannot invoke CLI from MI."));
+
+ in_cli = 1;
-+ current_interp_command_loop ();
++ /* See captured_command_loop. */
++
++ /* Give the interpreter a chance to print a prompt. */
++ interp_pre_command_loop (top_level_interpreter ());
++
++ /* Now it's time to start the event loop. */
++ start_event_loop ();
++
+ in_cli = 0;
+
+ Py_RETURN_NONE;
@@ -500,13 +507,15 @@ index 4f88b0e..870a1ba 100644
+ PySys_SetArgv (argc - 1, argv + 1);
+#else
+ {
-+ wchar_t **wargv = alloca (sizeof (*wargv) * (argc + 1));
++ wchar_t **wargv = (wchar_t **) alloca (sizeof (*wargv) * (argc + 1));
+ int i;
+
+ for (i = 1; i < argc; i++)
+ {
+ size_t len = mbstowcs (NULL, argv[i], 0);
-+ size_t len2;
++ /* Python-related GDB sources are built with -DNDEBUG
++ https://sourceware.org/bugzilla/show_bug.cgi?id=20445 */
++ size_t len2 ATTRIBUTE_UNUSED;
+
+ if (len == (size_t) -1)
+ {
@@ -514,7 +523,7 @@ index 4f88b0e..870a1ba 100644
+ i, argv[i]);
+ exit (1);
+ }
-+ wargv[i] = alloca (sizeof (**wargv) * (len + 1));
++ wargv[i] = (wchar_t *) alloca (sizeof (**wargv) * (len + 1));
+ len2 = mbstowcs (wargv[i], argv[i], len + 1);
+ assert (len2 == len);
+ }
@@ -539,7 +548,7 @@ index 4f88b0e..870a1ba 100644
static PyObject *
gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
-@@ -1982,6 +2061,8 @@ PyMethodDef python_GdbMethods[] =
+@@ -1981,6 +2069,8 @@ PyMethodDef python_GdbMethods[] =
Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
a Python String containing the output of the command if to_string is\n\
set to True." },
@@ -549,7 +558,7 @@ index 4f88b0e..870a1ba 100644
"Return a gdb parameter's value" },
diff --git a/gdb/python/python.h b/gdb/python/python.h
-index e6bfcca..688daa3 100644
+index b810187..a3620ab 100644
--- a/gdb/python/python.h
+++ b/gdb/python/python.h
@@ -25,4 +25,6 @@
@@ -560,10 +569,10 @@ index e6bfcca..688daa3 100644
+
#endif /* GDB_PYTHON_H */
diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest.exp
-index 9f25a48..88b0842 100644
+index 2fdd9e3..391900d 100644
--- a/gdb/testsuite/gdb.gdb/selftest.exp
+++ b/gdb/testsuite/gdb.gdb/selftest.exp
-@@ -92,6 +92,10 @@ proc do_steps_and_nexts {} {
+@@ -87,6 +87,10 @@ proc do_steps_and_nexts {} {
set description "step over cmdarg_vec initialization"
set command "step"
}
@@ -575,7 +584,7 @@ index 9f25a48..88b0842 100644
set description "next over make_command_stats_cleanup and everything it calls"
set command "next"
diff --git a/gdb/testsuite/gdb.python/py-frame.exp b/gdb/testsuite/gdb.python/py-frame.exp
-index 33fdbe5..264d00f 100644
+index b5a4682..d5451a6 100644
--- a/gdb/testsuite/gdb.python/py-frame.exp
+++ b/gdb/testsuite/gdb.python/py-frame.exp
@@ -95,6 +95,8 @@ gdb_test "python print ('result = %s' % f0.read_var ('a'))" " = 1" "test Frame.r
@@ -588,10 +597,10 @@ index 33fdbe5..264d00f 100644
gdb_test "python print ('result = %s' % (gdb.selected_frame ().read_register ('sp') == gdb.parse_and_eval ('\$sp')))" \
" = True" \
diff --git a/gdb/testsuite/gdb.python/py-value.exp b/gdb/testsuite/gdb.python/py-value.exp
-index baa17b7..45ad67e 100644
+index 57a9ba1..d90d85a 100644
--- a/gdb/testsuite/gdb.python/py-value.exp
+++ b/gdb/testsuite/gdb.python/py-value.exp
-@@ -388,6 +388,15 @@ proc test_value_after_death {} {
+@@ -397,6 +397,15 @@ proc test_value_after_death {} {
"print value's type"
}
@@ -607,7 +616,7 @@ index baa17b7..45ad67e 100644
# Regression test for invalid subscript operations. The bug was that
# the type of the value was not being checked before allowing a
# subscript operation to proceed.
-@@ -517,6 +526,7 @@ test_value_in_inferior
+@@ -526,6 +535,7 @@ test_value_in_inferior
test_inferior_function_call
test_lazy_strings
test_value_after_death
diff --git a/gdb-attach-fail-reasons-5of5.patch b/gdb-attach-fail-reasons-5of5.patch
index 48d7ab4..fb7db25 100644
--- a/gdb-attach-fail-reasons-5of5.patch
+++ b/gdb-attach-fail-reasons-5of5.patch
@@ -37,13 +37,13 @@ gdb/gdbserver/
(linux_create_inferior, linux_tracefork_child): Call it instead of
direct ptrace.
-Index: gdb-7.10.50.20160106/gdb/nat/linux-ptrace.c
+Index: gdb-7.11.90.20160807/gdb/nat/linux-ptrace.c
===================================================================
---- gdb-7.10.50.20160106.orig/gdb/nat/linux-ptrace.c 2016-01-08 19:15:57.580707944 +0100
-+++ gdb-7.10.50.20160106/gdb/nat/linux-ptrace.c 2016-01-08 19:16:02.654736246 +0100
-@@ -24,6 +24,10 @@
- #include "gdb_wait.h"
+--- gdb-7.11.90.20160807.orig/gdb/nat/linux-ptrace.c 2016-08-07 21:19:29.947833017 +0200
++++ gdb-7.11.90.20160807/gdb/nat/linux-ptrace.c 2016-08-07 21:19:37.650904142 +0200
+@@ -25,6 +25,10 @@
#include "gdb_ptrace.h"
+ #include "gregset.h"
+#ifdef HAVE_SELINUX_SELINUX_H
+# include <selinux/selinux.h>
@@ -52,7 +52,7 @@ Index: gdb-7.10.50.20160106/gdb/nat/linux-ptrace.c
/* Stores the ptrace options supported by the running kernel.
A value of -1 means we did not check for features yet. A value
of 0 means there are no supported features. */
-@@ -48,6 +52,8 @@
+@@ -49,6 +53,8 @@
buffer_xml_printf (buffer, _("process %d is a zombie "
"- the process has already terminated"),
(int) pid);
@@ -61,7 +61,7 @@ Index: gdb-7.10.50.20160106/gdb/nat/linux-ptrace.c
}
/* See linux-ptrace.h. */
-@@ -594,6 +600,22 @@
+@@ -592,6 +598,22 @@
linux_ptrace_test_ret_to_nx ();
}
@@ -84,11 +84,11 @@ Index: gdb-7.10.50.20160106/gdb/nat/linux-ptrace.c
/* Extract extended ptrace event from wait status. */
int
-Index: gdb-7.10.50.20160106/gdb/nat/linux-ptrace.h
+Index: gdb-7.11.90.20160807/gdb/nat/linux-ptrace.h
===================================================================
---- gdb-7.10.50.20160106.orig/gdb/nat/linux-ptrace.h 2016-01-08 19:15:57.581707950 +0100
-+++ gdb-7.10.50.20160106/gdb/nat/linux-ptrace.h 2016-01-08 19:16:02.655736251 +0100
-@@ -164,6 +164,7 @@
+--- gdb-7.11.90.20160807.orig/gdb/nat/linux-ptrace.h 2016-08-07 21:19:29.947833017 +0200
++++ gdb-7.11.90.20160807/gdb/nat/linux-ptrace.h 2016-08-07 21:19:37.650904142 +0200
+@@ -185,6 +185,7 @@
extern char *linux_ptrace_attach_fail_reason_string (ptid_t ptid, int err);
extern void linux_ptrace_init_warnings (void);
@@ -96,11 +96,11 @@ Index: gdb-7.10.50.20160106/gdb/nat/linux-ptrace.h
extern void linux_check_ptrace_features (void);
extern void linux_enable_event_reporting (pid_t pid, int attached);
extern void linux_disable_event_reporting (pid_t pid);
-Index: gdb-7.10.50.20160106/gdb/configure.ac
+Index: gdb-7.11.90.20160807/gdb/configure.ac
===================================================================
---- gdb-7.10.50.20160106.orig/gdb/configure.ac 2016-01-08 19:15:57.582707955 +0100
-+++ gdb-7.10.50.20160106/gdb/configure.ac 2016-01-08 19:16:02.656736257 +0100
-@@ -2077,6 +2077,10 @@
+--- gdb-7.11.90.20160807.orig/gdb/configure.ac 2016-08-07 21:19:29.947833017 +0200
++++ gdb-7.11.90.20160807/gdb/configure.ac 2016-08-07 21:19:37.650904142 +0200
+@@ -2108,6 +2108,10 @@
esac
AC_DEFINE_UNQUOTED(GDBINIT,"$gdbinit",[The .gdbinit filename.])
@@ -111,11 +111,11 @@ Index: gdb-7.10.50.20160106/gdb/configure.ac
dnl Handle optional features that can be enabled.
# Support for --with-sysroot is a copy of GDB_AC_WITH_DIR,
-Index: gdb-7.10.50.20160106/gdb/gdbserver/configure.ac
+Index: gdb-7.11.90.20160807/gdb/gdbserver/configure.ac
===================================================================
---- gdb-7.10.50.20160106.orig/gdb/gdbserver/configure.ac 2016-01-08 19:15:57.582707955 +0100
-+++ gdb-7.10.50.20160106/gdb/gdbserver/configure.ac 2016-01-08 19:16:02.656736257 +0100
-@@ -524,6 +524,10 @@
+--- gdb-7.11.90.20160807.orig/gdb/gdbserver/configure.ac 2016-08-07 21:19:29.948833027 +0200
++++ gdb-7.11.90.20160807/gdb/gdbserver/configure.ac 2016-08-07 21:19:37.651904151 +0200
+@@ -458,6 +458,10 @@
fi
fi
@@ -126,11 +126,11 @@ Index: gdb-7.10.50.20160106/gdb/gdbserver/configure.ac
AC_SUBST(GDBSERVER_DEPFILES)
AC_SUBST(GDBSERVER_LIBS)
AC_SUBST(srv_xmlbuiltin)
-Index: gdb-7.10.50.20160106/gdb/gdbserver/linux-low.c
+Index: gdb-7.11.90.20160807/gdb/gdbserver/linux-low.c
===================================================================
---- gdb-7.10.50.20160106.orig/gdb/gdbserver/linux-low.c 2016-01-08 19:15:57.585707972 +0100
-+++ gdb-7.10.50.20160106/gdb/gdbserver/linux-low.c 2016-01-08 19:16:02.658736268 +0100
-@@ -853,6 +853,29 @@
+--- gdb-7.11.90.20160807.orig/gdb/gdbserver/linux-low.c 2016-08-07 21:19:29.949833036 +0200
++++ gdb-7.11.90.20160807/gdb/gdbserver/linux-low.c 2016-08-07 21:19:37.652904161 +0200
+@@ -933,6 +933,29 @@
return lwp;
}
@@ -160,7 +160,7 @@ Index: gdb-7.10.50.20160106/gdb/gdbserver/linux-low.c
/* Start an inferior process and returns its pid.
ALLARGS is a vector of program-name and args. */
-@@ -876,7 +899,7 @@
+@@ -956,7 +979,7 @@
if (pid == 0)
{
close_most_fds ();
@@ -169,10 +169,10 @@ Index: gdb-7.10.50.20160106/gdb/gdbserver/linux-low.c
setpgid (0, 0);
-Index: gdb-7.10.50.20160106/gdb/inf-ptrace.c
+Index: gdb-7.11.90.20160807/gdb/inf-ptrace.c
===================================================================
---- gdb-7.10.50.20160106.orig/gdb/inf-ptrace.c 2016-01-08 19:15:57.586707977 +0100
-+++ gdb-7.10.50.20160106/gdb/inf-ptrace.c 2016-01-08 19:16:02.659736274 +0100
+--- gdb-7.11.90.20160807.orig/gdb/inf-ptrace.c 2016-08-07 21:19:29.949833036 +0200
++++ gdb-7.11.90.20160807/gdb/inf-ptrace.c 2016-08-07 21:19:37.653904170 +0200
@@ -79,7 +79,15 @@
inf_ptrace_me (void)
{
@@ -189,11 +189,11 @@ Index: gdb-7.10.50.20160106/gdb/inf-ptrace.c
}
/* Start a new inferior Unix child process. EXEC_FILE is the file to
-Index: gdb-7.10.50.20160106/gdb/linux-nat.c
+Index: gdb-7.11.90.20160807/gdb/linux-nat.c
===================================================================
---- gdb-7.10.50.20160106.orig/gdb/linux-nat.c 2016-01-08 19:15:57.587707983 +0100
-+++ gdb-7.10.50.20160106/gdb/linux-nat.c 2016-01-08 19:16:02.660736279 +0100
-@@ -1016,6 +1016,7 @@
+--- gdb-7.11.90.20160807.orig/gdb/linux-nat.c 2016-08-07 21:19:29.950833045 +0200
++++ gdb-7.11.90.20160807/gdb/linux-nat.c 2016-08-07 21:19:37.654904179 +0200
+@@ -1102,6 +1102,7 @@
{
struct cleanup *restore_personality
= maybe_disable_address_space_randomization (disable_randomization);
@@ -201,7 +201,7 @@ Index: gdb-7.10.50.20160106/gdb/linux-nat.c
/* The fork_child mechanism is synchronous and calls target_wait, so
we have to mask the async mode. */
-@@ -1023,7 +1024,28 @@
+@@ -1109,7 +1110,28 @@
/* Make sure we report all signals during startup. */
linux_nat_pass_signals (ops, 0, NULL);
@@ -231,11 +231,11 @@ Index: gdb-7.10.50.20160106/gdb/linux-nat.c
do_cleanups (restore_personality);
}
-Index: gdb-7.10.50.20160106/gdb/config.in
+Index: gdb-7.11.90.20160807/gdb/config.in
===================================================================
---- gdb-7.10.50.20160106.orig/gdb/config.in 2016-01-08 19:15:57.588707989 +0100
-+++ gdb-7.10.50.20160106/gdb/config.in 2016-01-08 19:16:02.660736279 +0100
-@@ -264,6 +264,9 @@
+--- gdb-7.11.90.20160807.orig/gdb/config.in 2016-08-07 21:19:29.950833045 +0200
++++ gdb-7.11.90.20160807/gdb/config.in 2016-08-07 21:19:37.654904179 +0200
+@@ -267,6 +267,9 @@
/* Define if librpm library is being used. */
#undef HAVE_LIBRPM
@@ -245,7 +245,7 @@ Index: gdb-7.10.50.20160106/gdb/config.in
/* Define to 1 if you have the <libunwind-ia64.h> header file. */
#undef HAVE_LIBUNWIND_IA64_H
-@@ -396,6 +399,9 @@
+@@ -399,6 +402,9 @@
/* Define to 1 if you have the `scm_new_smob' function. */
#undef HAVE_SCM_NEW_SMOB
@@ -255,11 +255,11 @@ Index: gdb-7.10.50.20160106/gdb/config.in
/* Define to 1 if you have the `setlocale' function. */
#undef HAVE_SETLOCALE
-Index: gdb-7.10.50.20160106/gdb/configure
+Index: gdb-7.11.90.20160807/gdb/configure
===================================================================
---- gdb-7.10.50.20160106.orig/gdb/configure 2016-01-08 19:15:57.593708017 +0100
-+++ gdb-7.10.50.20160106/gdb/configure 2016-01-08 19:16:02.665736307 +0100
-@@ -14653,6 +14653,64 @@
+--- gdb-7.11.90.20160807.orig/gdb/configure 2016-08-07 21:19:29.953833073 +0200
++++ gdb-7.11.90.20160807/gdb/configure 2016-08-07 21:19:37.658904216 +0200
+@@ -14642,6 +14642,64 @@
_ACEOF
@@ -324,11 +324,11 @@ Index: gdb-7.10.50.20160106/gdb/configure
# Support for --with-sysroot is a copy of GDB_AC_WITH_DIR,
# except that the argument to --with-sysroot is optional.
-Index: gdb-7.10.50.20160106/gdb/gdbserver/config.in
+Index: gdb-7.11.90.20160807/gdb/gdbserver/config.in
===================================================================
---- gdb-7.10.50.20160106.orig/gdb/gdbserver/config.in 2016-01-08 19:15:57.595708028 +0100
-+++ gdb-7.10.50.20160106/gdb/gdbserver/config.in 2016-01-08 19:16:02.665736307 +0100
-@@ -117,6 +117,9 @@
+--- gdb-7.11.90.20160807.orig/gdb/gdbserver/config.in 2016-08-07 21:19:29.954833082 +0200
++++ gdb-7.11.90.20160807/gdb/gdbserver/config.in 2016-08-07 21:19:37.658904216 +0200
+@@ -120,6 +120,9 @@
/* Define to 1 if you have the `mcheck' library (-lmcheck). */
#undef HAVE_LIBMCHECK
@@ -338,7 +338,7 @@ Index: gdb-7.10.50.20160106/gdb/gdbserver/config.in
/* Define if the target supports branch tracing. */
#undef HAVE_LINUX_BTRACE
-@@ -193,6 +196,9 @@
+@@ -196,6 +199,9 @@
/* Define to 1 if you have the `pwrite' function. */
#undef HAVE_PWRITE
@@ -348,11 +348,11 @@ Index: gdb-7.10.50.20160106/gdb/gdbserver/config.in
/* Define to 1 if you have the `setns' function. */
#undef HAVE_SETNS
-Index: gdb-7.10.50.20160106/gdb/gdbserver/configure
+Index: gdb-7.11.90.20160807/gdb/gdbserver/configure
===================================================================
---- gdb-7.10.50.20160106.orig/gdb/gdbserver/configure 2016-01-08 19:15:57.597708039 +0100
-+++ gdb-7.10.50.20160106/gdb/gdbserver/configure 2016-01-08 19:16:02.667736318 +0100
-@@ -7311,6 +7311,64 @@
+--- gdb-7.11.90.20160807.orig/gdb/gdbserver/configure 2016-08-07 21:19:29.955833091 +0200
++++ gdb-7.11.90.20160807/gdb/gdbserver/configure 2016-08-07 21:19:37.660904235 +0200
+@@ -7530,6 +7530,64 @@
fi
fi
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 <jan.kratochvil@redhat.com>
-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 <jan.kratochvil@redhat.com>
-
- 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 <jan.kratochvil@redhat.com>
-+
-+ 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 <jan.kratochvil@redhat.com>
-
- * 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 <jan.kratochvil@redhat.com>
-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): <lambda()>
- [...]
-
-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 <brobecker@adacore.com>
- out of line functions nested inside inline functions.
-So I have removed that xfail.
-
-gdb/ChangeLog
-2016-05-30 Jan Kratochvil <jan.kratochvil@redhat.com>
-
- 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 <jan.kratochvil@redhat.com>
-
- 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 <jan.kratochvil@redhat.com>
-
-+ 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 <jan.kratochvil@redhat.com>
-+
- 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 <jan.kratochvil@redhat.com>
-+
-+ 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 <palves@redhat.com>
-
- * 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 <http://www.gnu.org/licenses/>.
-+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..ba0622a 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.90.20160807/gdb/config/i386/linux64.mh
===================================================================
---- gdb-7.10.90.20160211.orig/gdb/config/i386/linux64.mh 2016-02-11 20:56:32.470674877 +0100
-+++ gdb-7.10.90.20160211/gdb/config/i386/linux64.mh 2016-02-11 20:56:51.158797712 +0100
+--- gdb-7.11.90.20160807.orig/gdb/config/i386/linux64.mh 2016-08-07 22:27:13.889285274 +0200
++++ gdb-7.11.90.20160807/gdb/config/i386/linux64.mh 2016-08-07 22:29:20.451311124 +0200
@@ -7,7 +7,7 @@
linux-procfs.o linux-ptrace.o linux-btrace.o \
linux-waitpid.o linux-personality.o x86-linux.o \
@@ -11,10 +11,10 @@ Index: gdb-7.10.90.20160211/gdb/config/i386/linux64.mh
NAT_CDEPS = $(srcdir)/proc-service.list
# The dynamically loaded libthread_db needs access to symbols in the
-Index: gdb-7.10.90.20160211/gdb/config/i386/linux.mh
+Index: gdb-7.11.90.20160807/gdb/config/i386/linux.mh
===================================================================
---- gdb-7.10.90.20160211.orig/gdb/config/i386/linux.mh 2016-02-11 20:56:26.925638430 +0100
-+++ gdb-7.10.90.20160211/gdb/config/i386/linux.mh 2016-02-11 20:56:32.471674884 +0100
+--- gdb-7.11.90.20160807.orig/gdb/config/i386/linux.mh 2016-08-07 22:27:13.889285274 +0200
++++ gdb-7.11.90.20160807/gdb/config/i386/linux.mh 2016-08-07 22:29:20.451311124 +0200
@@ -1,6 +1,6 @@
# Host: Intel 386 running GNU/Linux.
@@ -23,10 +23,10 @@ Index: gdb-7.10.90.20160211/gdb/config/i386/linux.mh
NATDEPFILES= inf-ptrace.o fork-child.o \
x86-nat.o x86-dregs.o i386-linux-nat.o x86-linux-nat.o \
proc-service.o linux-thread-db.o \
-Index: gdb-7.10.90.20160211/gdb/config/i386/nm-linux.h
+Index: gdb-7.11.90.20160807/gdb/config/i386/nm-linux.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.10.90.20160211/gdb/config/i386/nm-linux.h 2016-02-11 20:56:32.471674884 +0100
++++ gdb-7.11.90.20160807/gdb/config/i386/nm-linux.h 2016-08-07 22:29:20.451311124 +0200
@@ -0,0 +1,28 @@
+/* Native support for GNU/Linux i386.
+
@@ -56,10 +56,10 @@ Index: gdb-7.10.90.20160211/gdb/config/i386/nm-linux.h
+#define target_can_use_hardware_watchpoint(type, cnt, ot) 1
+
+#endif /* NM_LINUX64_H */
-Index: gdb-7.10.90.20160211/gdb/config/i386/nm-linux64.h
+Index: gdb-7.11.90.20160807/gdb/config/i386/nm-linux64.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.10.90.20160211/gdb/config/i386/nm-linux64.h 2016-02-11 20:56:32.471674884 +0100
++++ gdb-7.11.90.20160807/gdb/config/i386/nm-linux64.h 2016-08-07 22:29:20.451311124 +0200
@@ -0,0 +1,28 @@
+/* Native support for GNU/Linux amd64.
+
@@ -89,13 +89,13 @@ Index: gdb-7.10.90.20160211/gdb/config/i386/nm-linux64.h
+#define target_can_use_hardware_watchpoint(type, cnt, ot) 1
+
+#endif /* NM_LINUX64_H */
-Index: gdb-7.10.90.20160211/gdb/target.h
+Index: gdb-7.11.90.20160807/gdb/target.h
===================================================================
---- gdb-7.10.90.20160211.orig/gdb/target.h 2016-02-11 20:56:26.926638437 +0100
-+++ gdb-7.10.90.20160211/gdb/target.h 2016-02-11 20:56:32.472674890 +0100
-@@ -1924,9 +1924,11 @@
- CNT is the number of such watchpoints used so far, including this
- one. OTHERTYPE is who knows what... */
+--- gdb-7.11.90.20160807.orig/gdb/target.h 2016-08-07 22:27:13.889285274 +0200
++++ gdb-7.11.90.20160807/gdb/target.h 2016-08-07 22:29:20.452311132 +0200
+@@ -1939,9 +1939,11 @@
+ one. OTHERTYPE is the number of watchpoints of other types than
+ this one used so far. */
+#ifndef target_can_use_hardware_watchpoint
#define target_can_use_hardware_watchpoint(TYPE,CNT,OTHERTYPE) \
@@ -105,10 +105,10 @@ Index: gdb-7.10.90.20160211/gdb/target.h
/* Returns the number of debug registers needed to watch the given
memory region, or zero if not supported. */
-Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp
+Index: gdb-7.11.90.20160807/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.10.90.20160211/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp 2016-02-11 20:56:32.472674890 +0100
++++ gdb-7.11.90.20160807/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp 2016-08-07 22:29:20.452311132 +0200
@@ -0,0 +1,40 @@
+# Copyright 2009, 2010 Free Software Foundation, Inc.
+
@@ -150,3 +150,16 @@ Index: gdb-7.10.90.20160211/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp
+gdb_test "" "main .* at .*" "start"
+
+gdb_test "continue" "Continuing.\r\n\r\nHardware read watchpoint \[0-9\]+: watchee\r\n\r\nValue = 0\r\n.*"
+Index: gdb-7.11.90.20160807/gdb/breakpoint.c
+===================================================================
+--- gdb-7.11.90.20160807.orig/gdb/breakpoint.c 2016-08-07 22:33:38.835405458 +0200
++++ gdb-7.11.90.20160807/gdb/breakpoint.c 2016-08-07 22:34:45.023941950 +0200
+@@ -14953,7 +14953,7 @@
+
+ if (bpt->type == bp_hardware_breakpoint)
+ {
+- int i;
++ int i ATTRIBUTE_UNUSED;
+ i = hw_breakpoint_used_count ();
+ target_resources_ok =
+ target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
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..2101cdd 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 <christoph.t.weinmann@intel.com>
+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 <christoph.t.weinmann@intel.com>
---
- 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
---- a/gdb/eval.c
-+++ b/gdb/eval.c
-@@ -399,29 +399,253 @@ init_array_element (struct value *array, struct value *element,
+Index: gdb-7.11.90.20160807/gdb/eval.c
+===================================================================
+--- gdb-7.11.90.20160807.orig/gdb/eval.c 2016-08-07 22:06:45.266836619 +0200
++++ gdb-7.11.90.20160807/gdb/eval.c 2016-08-07 22:08:21.708688259 +0200
+@@ -399,29 +399,254 @@
return index;
}
@@ -66,41 +69,44 @@ 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;
+ 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 +115,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
@@ -128,16 +134,20 @@ index 78ad946..c9f325f 100644
- low_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;
+
+- 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_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 +165,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 +194,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 +238,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,9 +276,8 @@ index 78ad946..c9f325f 100644
+ if (dim_count > 1)
+ {
+ struct value *v = NULL;
-
-- return value_slice (array, low_bound, high_bound - low_bound + 1);
-+ temp_type = TYPE_TARGET_TYPE (value_type (new_array));
++
++ elt_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
@@ -289,26 +294,26 @@ 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));
-+
+
+- return value_slice (array, low_bound, high_bound - low_bound + 1);
+ 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 +321,24 @@ index 78ad946..c9f325f 100644
}
-@@ -1810,14 +2034,11 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -1810,14 +2035,11 @@
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,
+@@ -2223,49 +2445,6 @@
}
return (arg1);
@@ -383,7 +388,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)
+@@ -3123,6 +3302,9 @@
int ndimen = 1;
struct type *tmp_type;
@@ -393,11 +398,11 @@ index 78ad946..c9f325f 100644
if ((TYPE_CODE (array_type) != TYPE_CODE_ARRAY))
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
---- a/gdb/f-exp.y
-+++ b/gdb/f-exp.y
-@@ -308,6 +308,8 @@ arglist : subrange
+Index: gdb-7.11.90.20160807/gdb/f-exp.y
+===================================================================
+--- gdb-7.11.90.20160807.orig/gdb/f-exp.y 2016-08-07 22:06:45.266836619 +0200
++++ gdb-7.11.90.20160807/gdb/f-exp.y 2016-08-07 22:08:21.709688268 +0200
+@@ -253,6 +253,8 @@
arglist : arglist ',' exp %prec ABOVE_COMMA
{ arglist_len++; }
@@ -406,11 +411,11 @@ 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
---- a/gdb/valops.c
-+++ b/gdb/valops.c
-@@ -3759,56 +3759,151 @@ value_of_this_silent (const struct language_defn *lang)
+Index: gdb-7.11.90.20160807/gdb/valops.c
+===================================================================
+--- gdb-7.11.90.20160807.orig/gdb/valops.c 2016-08-07 22:06:45.266836619 +0200
++++ gdb-7.11.90.20160807/gdb/valops.c 2016-08-07 22:13:22.083340750 +0200
+@@ -3775,56 +3775,154 @@
struct value *
value_slice (struct value *array, int lowbound, int length)
{
@@ -420,7 +425,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.
@@ -440,7 +447,8 @@ index 5a244a9..09ea877 100644
+ struct type *array_type = check_typedef (value_type (array));
+ struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (array_type));
+ unsigned int elt_size, elt_offs;
-+ LONGEST elt_stride, ary_high_bound, ary_low_bound;
++ /* ATTRIBUTE_UNUSED: VLA bug: https://sourceware.org/ml/gdb-patches/2016-08/msg00099.html */
++ LONGEST elt_stride ATTRIBUTE_UNUSED, ary_high_bound, ary_low_bound;
+ struct value *v;
+ int slice_range_size, i = 0, row_count = 1, elem_count = 1;
@@ -454,6 +462,10 @@ index 5a244a9..09ea877 100644
- range_type = TYPE_INDEX_TYPE (array_type);
- if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
- error (_("slice from bad array or bitstring"));
+-
+- if (lowbound < lowerbound || length < 0
+- || lowbound + length - 1 > upperbound)
+- error (_("slice out of range"));
+ ary_low_bound = TYPE_LOW_BOUND (TYPE_INDEX_TYPE (array_type));
+ ary_high_bound = TYPE_HIGH_BOUND (TYPE_INDEX_TYPE (array_type));
+
@@ -479,10 +491,7 @@ index 5a244a9..09ea877 100644
+ && (!TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (array_type)
+ && elt_offs >= TYPE_LENGTH (array_type)))
+ error (_("no such vector element"));
-
-- if (lowbound < lowerbound || length < 0
-- || lowbound + length - 1 > upperbound)
-- error (_("slice out of range"));
++
+ /* CALL_COUNT is 1 when we are dealing either with the highest dimension
+ of the array, or a one dimensional array. Set RANGE_TYPE accordingly.
+ In both cases we calculate how many rows/elements will be in the output
@@ -515,11 +524,16 @@ 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
- = (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
+-
+- slice_type = create_array_type ((struct type *) NULL,
+- element_type,
+- slice_range_type);
+- TYPE_CODE (slice_type) = TYPE_CODE (array_type);
+ struct type *element_type;
+
+ /* When CALL_COUNT equals 1 we can use the legacy code for subarrays. */
@@ -527,10 +541,8 @@ index 5a244a9..09ea877 100644
+ {
+ element_type = TYPE_TARGET_TYPE (array_type);
-- slice_type = create_array_type ((struct type *) NULL,
-- element_type,
-- slice_range_type);
-- TYPE_CODE (slice_type) = TYPE_CODE (array_type);
+- if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
+- slice = allocate_value_lazy (slice_type);
+ slice_type = create_array_type (NULL, element_type, slice_range_type);
+
+ TYPE_CODE (slice_type) = TYPE_CODE (array_type);
@@ -546,9 +558,7 @@ index 5a244a9..09ea877 100644
+ value_embedded_offset (array) + elt_offs,
+ elt_size * longest_to_int (length));
+ }
-
-- if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
-- slice = allocate_value_lazy (slice_type);
++
+ }
+ /* When CALL_COUNT is larger than 1 we are working on a range of ranges.
+ So we copy the relevant elements into the new array we return. */
@@ -593,11 +603,11 @@ 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
---- a/gdb/value.h
-+++ b/gdb/value.h
-@@ -1056,6 +1056,8 @@ extern struct value *varying_to_slice (struct value *);
+Index: gdb-7.11.90.20160807/gdb/value.h
+===================================================================
+--- gdb-7.11.90.20160807.orig/gdb/value.h 2016-08-07 22:06:45.266836619 +0200
++++ gdb-7.11.90.20160807/gdb/value.h 2016-08-07 22:08:21.710688276 +0200
+@@ -1064,6 +1064,8 @@
extern struct value *value_slice (struct value *, int, int);
@@ -606,6 +616,3 @@ index 2eac5ef..3400460 100644
extern struct value *value_literal_complex (struct value *, struct value *,
struct type *);
---
-2.5.0
-
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 <christoph.t.weinmann@intel.com>
+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 <christoph.t.weinmann@intel.com>
@@ -19,27 +22,27 @@ Signed-off-by: Christoph Weinmann <christoph.t.weinmann@intel.com>
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 <christoph.t.weinmann@intel.com>
+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 <christoph.t.weinmann@intel.com>
---
- 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 <christoph.t.weinmann@intel.com>
+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 <christoph.t.weinmann@intel.com>
---
- 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 <christoph.t.weinmann@intel.com>
+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 <christoph.t.weinmann@intel.com>
---
- 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 <christoph.t.weinmann@intel.com>
+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 <stdio.h>
+
@@ -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-rhbz1363635-aarch64-armv8182.patch b/gdb-rhbz1363635-aarch64-armv8182.patch
deleted file mode 100644
index 8eea565..0000000
--- a/gdb-rhbz1363635-aarch64-armv8182.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-commit 49ecef2a7da2ee9df4ae675f99b70518fbf1bb23
-Author: Andrew Pinski <apinski@cavium.com>
-Date: Sat Jul 23 09:56:44 2016 -0700
-
- Fix ARMv8.1/v8.2 for hw watchpoint and breakpoint
-
- The problem here is ARMv8.1 (and ARMv8.2) define a
- different debug version than ARMv8 (7 and 8 respectively).
- This fixes hw watchpoints and breakpoints by checking
- for those debug versions too.
-
- Committed as obvious after a test on aarch64-linux-gnu
- (on a ThunderX machine which has ARMv8.1 support enabled).
-
- ChangeLog:
- * nat/aarch64-linux-hw-point.c
- (aarch64_linux_get_debug_reg_capacity): Handle
- ARMv8.1 and ARMv8.2 debug versions.
- * nat/aarch64-linux-hw-point.h
- (AARCH64_DEBUG_ARCH_V8_1): New define.
- (AARCH64_DEBUG_ARCH_V8_2): New define.
-
- Signed-off-by: Andrew Pinski <apinski@cavium.com>
-
-### a/gdb/ChangeLog
-### b/gdb/ChangeLog
-## -1,3 +1,12 @@
-+2016-07-23 Andrew Pinski <apinski@cavium.com>
-+
-+ * nat/aarch64-linux-hw-point.c
-+ (aarch64_linux_get_debug_reg_capacity): Handle
-+ ARMv8.1 and ARMv8.2 debug versions.
-+ * nat/aarch64-linux-hw-point.h
-+ (AARCH64_DEBUG_ARCH_V8_1): New define.
-+ (AARCH64_DEBUG_ARCH_V8_2): New define.
-+
- 2016-06-30 Руслан Ижбулатов <lrn1986@gmail.com>
-
- PR gdb/14529
---- a/gdb/nat/aarch64-linux-hw-point.c
-+++ b/gdb/nat/aarch64-linux-hw-point.c
-@@ -630,7 +630,9 @@ aarch64_linux_get_debug_reg_capacity (int tid)
-
- /* Get hardware watchpoint register info. */
- if (ptrace (PTRACE_GETREGSET, tid, NT_ARM_HW_WATCH, &iov) == 0
-- && AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8)
-+ && (AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8
-+ || AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8_1
-+ || AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8_2))
- {
- aarch64_num_wp_regs = AARCH64_DEBUG_NUM_SLOTS (dreg_state.dbg_info);
- if (aarch64_num_wp_regs > AARCH64_HWP_MAX_NUM)
-@@ -650,7 +652,9 @@ aarch64_linux_get_debug_reg_capacity (int tid)
-
- /* Get hardware breakpoint register info. */
- if (ptrace (PTRACE_GETREGSET, tid, NT_ARM_HW_BREAK, &iov) == 0
-- && AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8)
-+ && (AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8
-+ || AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8_1
-+ || AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8_2))
- {
- aarch64_num_bp_regs = AARCH64_DEBUG_NUM_SLOTS (dreg_state.dbg_info);
- if (aarch64_num_bp_regs > AARCH64_HBP_MAX_NUM)
---- a/gdb/nat/aarch64-linux-hw-point.h
-+++ b/gdb/nat/aarch64-linux-hw-point.h
-@@ -68,6 +68,8 @@
-
- /* Macro for the expected version of the ARMv8-A debug architecture. */
- #define AARCH64_DEBUG_ARCH_V8 0x6
-+#define AARCH64_DEBUG_ARCH_V8_1 0x7
-+#define AARCH64_DEBUG_ARCH_V8_2 0x8
-
- /* ptrace expects control registers to be formatted as follows:
-
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 *);
\f
-@@ -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 @@
}
\f
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
- <variant field>. */
-
- 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-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 <bernhard.heckel@intel.com>
+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 <bernhard.heckel@intel.com>
+
+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 <http://www.gnu.org/licenses/>.
+
+ 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" " = <not allocated>" "print non-allocated vla1"
+ gdb_test "print &vla1" \
+- " = \\\(PTR TO -> \\\( real\\\(kind=4\\\) \\\(<not allocated>\\\)\\\)\\\) $hex" \
++ " = \\\(PTR TO -> \\\( $real \\\(<not allocated>\\\)\\\)\\\) $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" " = <not associated>" "print undefined pvla"
+ gdb_test "print &pvla" \
+- " = \\\(PTR TO -> \\\( real\\\(kind=4\\\) \\\(<not associated>\\\)\\\)\\\) $hex" \
++ " = \\\(PTR TO -> \\\( $real \\\(<not associated>\\\)\\\)\\\) $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 <bernhard.heckel@intel.com>
+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 <bernhard.heckel@intel.com>
+
+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 <bernhard.heckel@intel.com>
+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 <bernhard.heckel@intel.com>
+
+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 <http://www.gnu.org/licenses/>. */
+
++extern "C" {
++#include <stddef.h>
++}
++
+ 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 <bernhard.heckel@intel.com>
+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 <bernhard.heckel@intel.com>
+
+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 <http://www.gnu.org/licenses/>.
++
++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 <http://www.gnu.org/licenses/>.
++
++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 = <not allocated>" "ptype vla1 not initialized"
+-gdb_test "ptype vla2" "type = <not allocated>" "ptype vla2 not initialized"
+-gdb_test "ptype pvla" "type = <not associated>" "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 = <not associated>" "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 = <not allocated>" "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 = <not allocated>" "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 = <not allocated>"
++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\\(<not allocated>\\)" \
++ " $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" " = <not allocated>" "print non-allocated vla1"
+ gdb_test "print &vla1" \
+- " = \\\(PTR TO -> \\\( $real \\\(<not allocated>\\\)\\\)\\\) $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" " = <not associated>" "print undefined pvla"
+ gdb_test "print &pvla" \
+- " = \\\(PTR TO -> \\\( $real \\\(<not associated>\\\)\\\)\\\) $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=\"<not allocated>\"" "evaluate not allocated vla"
+
+-mi_create_varobj_checked vla1_not_allocated vla1 "<not allocated>" \
++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=\"<not allocated>\"" \
++ "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=\"<not associated>\".*${mi_gdb_prompt}$" {
+ pass $test
+
+- mi_create_varobj_checked pvla2_not_associated pvla2 "<not associated>" \
++ 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=\"<not associated>\"" \
++ "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..68cfc57
--- /dev/null
+++ b/gdb-vla-intel-5of7.patch
@@ -0,0 +1,345 @@
+From b6e668ccd356ea3e75d30f20314334b1203c22de Mon Sep 17 00:00:00 2001
+From: Bernhard Heckel <bernhard.heckel@intel.com>
+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 <bernhard.heckel@intel.com>
+
+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
+
+Index: gdb-7.11.90.20160807/gdb/NEWS
+===================================================================
+--- gdb-7.11.90.20160807.orig/gdb/NEWS 2016-08-07 21:18:44.032409065 +0200
++++ gdb-7.11.90.20160807/gdb/NEWS 2016-08-07 21:19:17.178715116 +0200
+@@ -1,6 +1,8 @@
+ What has changed in GDB?
+ (Organized release by release)
+
++* Fortran: Support pointers to dynamic types.
++
+ *** Changes in GDB 7.12
+
+ * GDB and GDBserver now build with a C++ compiler by default.
+Index: gdb-7.11.90.20160807/gdb/c-valprint.c
+===================================================================
+--- gdb-7.11.90.20160807.orig/gdb/c-valprint.c 2016-08-07 21:18:44.032409065 +0200
++++ gdb-7.11.90.20160807/gdb/c-valprint.c 2016-08-07 21:18:51.087474207 +0200
+@@ -645,6 +645,28 @@
+ 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, ") ");
+Index: gdb-7.11.90.20160807/gdb/testsuite/gdb.cp/vla-cxx.exp
+===================================================================
+--- gdb-7.11.90.20160807.orig/gdb/testsuite/gdb.cp/vla-cxx.exp 2016-08-07 21:18:44.033409074 +0200
++++ gdb-7.11.90.20160807/gdb/testsuite/gdb.cp/vla-cxx.exp 2016-08-07 21:18:51.088474216 +0200
+@@ -26,6 +26,8 @@
+ 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 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\\}"
+Index: gdb-7.11.90.20160807/gdb/testsuite/gdb.fortran/pointers.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.11.90.20160807/gdb/testsuite/gdb.fortran/pointers.exp 2016-08-07 21:18:51.088474216 +0200
+@@ -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 <http://www.gnu.org/licenses/>.
++
++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 \\(:,:\\)\\)\\) <not associated>\r\n$gdb_prompt $" {
++ pass $test
++ }
++ -re " = <not associated>\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" "= <not allocated>"
++
++
++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 \\)\\) <not associated>\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 <pointers\\+\\d+>" "Print program counter"
+Index: gdb-7.11.90.20160807/gdb/testsuite/gdb.fortran/pointers.f90
+===================================================================
+--- gdb-7.11.90.20160807.orig/gdb/testsuite/gdb.fortran/pointers.f90 2016-08-07 21:18:44.033409074 +0200
++++ gdb-7.11.90.20160807/gdb/testsuite/gdb.fortran/pointers.f90 2016-08-07 21:18:51.088474216 +0200
+@@ -20,14 +20,20 @@
+ 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 @@
+ 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 @@
+ 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 @@
+ 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 @@
+ 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))
+Index: gdb-7.11.90.20160807/gdb/valops.c
+===================================================================
+--- gdb-7.11.90.20160807.orig/gdb/valops.c 2016-08-07 21:18:44.035409093 +0200
++++ gdb-7.11.90.20160807/gdb/valops.c 2016-08-07 21:18:51.089474225 +0200
+@@ -1562,6 +1562,19 @@
+ 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 @@
+ 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);
+Index: gdb-7.11.90.20160807/gdb/valprint.c
+===================================================================
+--- gdb-7.11.90.20160807.orig/gdb/valprint.c 2016-08-07 04:00:01.000000000 +0200
++++ gdb-7.11.90.20160807/gdb/valprint.c 2016-08-07 21:18:51.090474235 +0200
+@@ -1141,12 +1141,6 @@
+ 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);
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 <bernhard.heckel@intel.com>
+Date: Tue, 12 Jul 2016 08:19:34 +0200
+Subject: [PATCH 6/7] Fortran: Testsuite, add cyclic pointers.
+
+2016-05-25 Bernhard Heckel <bernhard.heckel@intel.com>
+
+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 = <not associated> \\)\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 \\)\\) <not associated>\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 <pointers\\+\\d+>" "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 <bernhard.heckel@intel.com>
+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 <http://www.gnu.org/licenses/>.
++
++standard_testfile ".f90"
++
++if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
++ {debug f90 quiet}] } {
++ return -1
++}
++
++# check that all fortran standard datatypes will be
++# handled correctly when using as VLA's
++
++if ![runto_main] {
++ 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 <http://www.gnu.org/licenses/>.
++
++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 <http://www.gnu.org/licenses/>.
++
++standard_testfile ".f90"
++
++if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
++ {debug f90 quiet}] } {
++ return -1
++}
++
++if ![runto MAIN__] then {
++ perror "couldn't run to breakpoint MAIN__"
++ continue
++}
++
++# Check VLA passed to first Fortran function.
++gdb_breakpoint [gdb_get_line_number "func1-vla-passed"]
++gdb_continue_to_breakpoint "func1-vla-passed"
++gdb_test "print vla" " = \\( *\\( *22, *22, *22,\[()22, .\]*\\)" \
++ "print vla (func1)"
++gdb_test "ptype vla" "type = integer\\\(kind=4\\\) \\\(10,10\\\)" \
++ "ptype vla (func1)"
++
++gdb_breakpoint [gdb_get_line_number "func1-vla-modified"]
++gdb_continue_to_breakpoint "func1-vla-modified"
++gdb_test "print vla(5,5)" " = 55" "print vla(5,5) (func1)"
++gdb_test "print vla(7,7)" " = 77" "print vla(5,5) (func1)"
++
++# Check if the values are correct after returning from func1
++gdb_breakpoint [gdb_get_line_number "func1-returned"]
++gdb_continue_to_breakpoint "func1-returned"
++gdb_test "print ret" " = .TRUE." "print ret after func1 returned"
++
++# Check VLA passed to second Fortran function
++gdb_breakpoint [gdb_get_line_number "func2-vla-passed"]
++gdb_continue_to_breakpoint "func2-vla-passed"
++gdb_test "print vla" \
++ " = \\\(44, 44, 44, 44, 44, 44, 44, 44, 44, 44\\\)" \
++ "print vla (func2)"
++gdb_test "ptype vla" "type = integer\\\(kind=4\\\) \\\(10\\\)" \
++ "ptype vla (func2)"
++
++# Check if the returned VLA has the correct values and ptype.
++gdb_breakpoint [gdb_get_line_number "func2-returned"]
++gdb_continue_to_breakpoint "func2-returned"
++gdb_test "print vla3" " = \\\(1, 2, 44, 4, 44, 44, 44, 8, 44, 44\\\)" \
++ "print vla3 (after func2)"
++gdb_test "ptype vla3" "type = integer\\\(kind=4\\\) \\\(10\\\)" \
++ "ptype vla3 (after func2)"
+Index: gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-func.f90
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-func.f90 2016-01-08 19:15:44.983637680 +0100
+@@ -0,0 +1,71 @@
++! Copyright 2014 Free Software Foundation, Inc.
++!
++! This program is free software; you can redistribute it and/or modify
++! it under the terms of the GNU General Public License as published by
++! the Free Software Foundation; either version 2 of the License, or
++! (at your option) any later version.
++!
++! This program is distributed in the hope that it will be useful,
++! but WITHOUT ANY WARRANTY; without even the implied warranty of
++! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++! GNU General Public License for more details.
++!
++! You should have received a copy of the GNU General Public License
++! along with this program; if not, write to the Free Software
++! Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++
++logical function func1 (vla)
++ implicit none
++ integer, allocatable :: vla (:, :)
++ func1 = allocated(vla)
++ vla(5,5) = 55 ! func1-vla-passed
++ vla(7,7) = 77
++ return ! func1-vla-modified
++end function func1
++
++function func2(vla)
++ implicit none
++ integer :: vla (:)
++ integer :: func2(size(vla))
++ integer :: k
++
++ vla(1) = 1 ! func2-vla-passed
++ vla(2) = 2
++ vla(4) = 4
++ vla(8) = 8
++
++ func2 = vla
++end function func2
++
++program vla_func
++ implicit none
++ interface
++ logical function func1 (vla)
++ integer :: 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 <http://www.gnu.org/licenses/>.
++
++standard_testfile ".f90"
++
++if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
++ {debug f90 quiet}] } {
++ return -1
++}
++
++if ![runto MAIN__] then {
++ perror "couldn't run to breakpoint MAIN__"
++ continue
++}
++
++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 <http://www.gnu.org/licenses/>.
++
++standard_testfile ".f90"
++
++if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
++ {debug f90 quiet}] } {
++ return -1
++}
++
++# check that all fortran standard datatypes will be
++# handled correctly when using as VLA's
++
++if ![runto MAIN__] then {
++ perror "couldn't run to breakpoint MAIN__"
++ continue
++}
++
++gdb_breakpoint [gdb_get_line_number "var_char-allocated-1"]
++gdb_continue_to_breakpoint "var_char-allocated-1"
++gdb_test "print var_char" \
++ " = \\(PTR TO -> \\( character\\*10 \\)\\) ${hex}" \
++ "print var_char after allocated first time"
++gdb_test "whatis var_char" "type = PTR TO -> \\( character\\*10 \\)" \
++ "whatis var_char first time"
++gdb_test "ptype var_char" "type = PTR TO -> \\( character\\*10 \\)" \
++ "ptype var_char first time"
++gdb_test "next" "\\d+.*var_char = 'foo'.*" \
++ "next to allocation status of var_char"
++gdb_test "print l" " = .TRUE." "print allocation status first time"
++
++gdb_breakpoint [gdb_get_line_number "var_char-filled-1"]
++gdb_continue_to_breakpoint "var_char-filled-1"
++gdb_test "print var_char" \
++ " = \\(PTR TO -> \\( character\\*3 \\)\\) ${hex}" \
++ "print var_char after filled first time"
++gdb_test "print *var_char" " = 'foo'" \
++ "print *var_char after filled first time"
++gdb_test "whatis var_char" "type = PTR TO -> \\( character\\*3 \\)" \
++ "whatis var_char after filled first time"
++gdb_test "ptype var_char" "type = PTR TO -> \\( character\\*3 \\)" \
++ "ptype var_char after filled first time"
++gdb_test "print var_char(1)" " = 102 'f'" "print var_char(1)"
++gdb_test "print var_char(3)" " = 111 'o'" "print var_char(3)"
++
++gdb_breakpoint [gdb_get_line_number "var_char-filled-2"]
++gdb_continue_to_breakpoint "var_char-filled-2"
++gdb_test "print var_char" \
++ " = \\(PTR TO -> \\( character\\*6 \\)\\) ${hex}" \
++ "print var_char after allocated second time"
++gdb_test "print *var_char" " = 'foobar'" \
++ "print *var_char after allocated second time"
++gdb_test "whatis var_char" "type = PTR TO -> \\( character\\*6 \\)" \
++ "whatis var_char second time"
++gdb_test "ptype var_char" "type = PTR TO -> \\( character\\*6 \\)" \
++ "ptype var_char second time"
++
++gdb_breakpoint [gdb_get_line_number "var_char-empty"]
++gdb_continue_to_breakpoint "var_char-empty"
++gdb_test "print var_char" \
++ " = \\(PTR TO -> \\( character\\*0 \\)\\) ${hex}" \
++ "print var_char after set empty"
++gdb_test "print *var_char" " = \"\"" "print *var_char after set empty"
++gdb_test "whatis var_char" "type = PTR TO -> \\( character\\*0 \\)" \
++ "whatis var_char after set empty"
++gdb_test "ptype var_char" "type = PTR TO -> \\( character\\*0 \\)" \
++ "ptype var_char after set empty"
++
++gdb_breakpoint [gdb_get_line_number "var_char-allocated-3"]
++gdb_continue_to_breakpoint "var_char-allocated-3"
++gdb_test "print var_char" \
++ " = \\(PTR TO -> \\( character\\*21 \\)\\) ${hex}" \
++ "print var_char after allocated third time"
++gdb_test "whatis var_char" "type = PTR TO -> \\( character\\*21 \\)" \
++ "whatis var_char after allocated third time"
++gdb_test "ptype var_char" "type = PTR TO -> \\( character\\*21 \\)" \
++ "ptype var_char after allocated third time"
++
++gdb_breakpoint [gdb_get_line_number "var_char_p-associated"]
++gdb_continue_to_breakpoint "var_char_p-associated"
++gdb_test "print var_char_p" \
++ " = \\(PTR TO -> \\( character\\*7 \\)\\) ${hex}" \
++ "print var_char_p after associated"
++gdb_test "print *var_char_p" " = 'johndoe'" \
++ "print *var_char_ after associated"
++gdb_test "whatis var_char_p" "type = PTR TO -> \\( character\\*7 \\)" \
++ "whatis var_char_p after associated"
++gdb_test "ptype var_char_p" "type = PTR TO -> \\( character\\*7 \\)" \
++ "ptype var_char_p after associated"
+Index: gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-stringsold.f90
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-stringsold.f90 2016-01-08 19:15:44.984637686 +0100
+@@ -0,0 +1,40 @@
++! Copyright 2014 Free Software Foundation, Inc.
++!
++! This program is free software; you can redistribute it and/or modify
++! it under the terms of the GNU General Public License as published by
++! the Free Software Foundation; either version 2 of the License, or
++! (at your option) any later version.
++!
++! This program is distributed in the hope that it will be useful,
++! but WITHOUT ANY WARRANTY; without even the implied warranty of
++! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++! GNU General Public License for more details.
++!
++! You should have received a copy of the GNU General Public License
++! along with this program; if not, write to the Free Software
++! Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++
++program vla_strings
++ character(len=:), target, allocatable :: var_char
++ character(len=:), pointer :: var_char_p
++ logical :: l
++
++ allocate(character(len=10) :: var_char)
++ l = allocated(var_char) ! var_char-allocated-1
++ var_char = 'foo'
++ deallocate(var_char) ! var_char-filled-1
++ l = allocated(var_char) ! var_char-deallocated
++ allocate(character(len=42) :: var_char)
++ l = allocated(var_char)
++ var_char = 'foobar'
++ var_char = '' ! var_char-filled-2
++ var_char = 'bar' ! var_char-empty
++ deallocate(var_char)
++ allocate(character(len=21) :: var_char)
++ l = allocated(var_char) ! var_char-allocated-3
++ var_char = 'johndoe'
++ var_char_p => var_char
++ l = associated(var_char_p) ! var_char_p-associated
++ var_char_p => null()
++ l = associated(var_char_p) ! var_char_p-not-associated
++end program vla_strings
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 <http://www.gnu.org/licenses/>.
-+
-+standard_testfile ".f90"
-+
-+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
-+ {debug f90 quiet}] } {
-+ return -1
-+}
-+
-+if ![runto MAIN__] then {
-+ perror "couldn't run to breakpoint MAIN__"
-+ continue
-+}
-+
-+# Check VLA passed to first Fortran function.
-+gdb_breakpoint [gdb_get_line_number "func1-vla-passed"]
-+gdb_continue_to_breakpoint "func1-vla-passed"
-+gdb_test "print vla" " = \\( *\\( *22, *22, *22,\[()22, .\]*\\)" \
-+ "print vla (func1)"
-+gdb_test "ptype vla" "type = integer\\\(kind=4\\\) \\\(10,10\\\)" \
-+ "ptype vla (func1)"
-+
-+gdb_breakpoint [gdb_get_line_number "func1-vla-modified"]
-+gdb_continue_to_breakpoint "func1-vla-modified"
-+gdb_test "print vla(5,5)" " = 55" "print vla(5,5) (func1)"
-+gdb_test "print vla(7,7)" " = 77" "print vla(5,5) (func1)"
-+
-+# Check if the values are correct after returning from func1
-+gdb_breakpoint [gdb_get_line_number "func1-returned"]
-+gdb_continue_to_breakpoint "func1-returned"
-+gdb_test "print ret" " = .TRUE." "print ret after func1 returned"
-+
-+# Check VLA passed to second Fortran function
-+gdb_breakpoint [gdb_get_line_number "func2-vla-passed"]
-+gdb_continue_to_breakpoint "func2-vla-passed"
-+gdb_test "print vla" \
-+ " = \\\(44, 44, 44, 44, 44, 44, 44, 44, 44, 44\\\)" \
-+ "print vla (func2)"
-+gdb_test "ptype vla" "type = integer\\\(kind=4\\\) \\\(10\\\)" \
-+ "ptype vla (func2)"
-+
-+# Check if the returned VLA has the correct values and ptype.
-+gdb_breakpoint [gdb_get_line_number "func2-returned"]
-+gdb_continue_to_breakpoint "func2-returned"
-+gdb_test "print vla3" " = \\\(1, 2, 44, 4, 44, 44, 44, 8, 44, 44\\\)" \
-+ "print vla3 (after func2)"
-+gdb_test "ptype vla3" "type = integer\\\(kind=4\\\) \\\(10\\\)" \
-+ "ptype vla3 (after func2)"
-Index: gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-func.f90
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-func.f90 2016-01-08 19:15:44.983637680 +0100
-@@ -0,0 +1,71 @@
-+! Copyright 2014 Free Software Foundation, Inc.
-+!
-+! This program is free software; you can redistribute it and/or modify
-+! it under the terms of the GNU General Public License as published by
-+! the Free Software Foundation; either version 2 of the License, or
-+! (at your option) any later version.
-+!
-+! This program is distributed in the hope that it will be useful,
-+! but WITHOUT ANY WARRANTY; without even the implied warranty of
-+! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+! GNU General Public License for more details.
-+!
-+! You should have received a copy of the GNU General Public License
-+! along with this program; if not, write to the Free Software
-+! Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+
-+logical function func1 (vla)
-+ implicit none
-+ integer, allocatable :: vla (:, :)
-+ func1 = allocated(vla)
-+ vla(5,5) = 55 ! func1-vla-passed
-+ vla(7,7) = 77
-+ return ! func1-vla-modified
-+end function func1
-+
-+function func2(vla)
-+ implicit none
-+ integer :: vla (:)
-+ integer :: func2(size(vla))
-+ integer :: k
-+
-+ vla(1) = 1 ! func2-vla-passed
-+ vla(2) = 2
-+ vla(4) = 4
-+ vla(8) = 8
-+
-+ func2 = vla
-+end function func2
-+
-+program vla_func
-+ implicit none
-+ interface
-+ logical function func1 (vla)
-+ integer :: 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 <http://www.gnu.org/licenses/>.
-+
-+standard_testfile ".f90"
-+
-+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
-+ {debug f90 quiet}] } {
-+ return -1
-+}
-+
-+if ![runto MAIN__] then {
-+ perror "couldn't run to breakpoint MAIN__"
-+ continue
-+}
-+
-+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 <http://www.gnu.org/licenses/>.
-+
-+standard_testfile ".f90"
-+
-+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
-+ {debug f90 quiet}] } {
-+ return -1
-+}
-+
-+# check that all fortran standard datatypes will be
-+# handled correctly when using as VLA's
-+
-+if ![runto MAIN__] then {
-+ perror "couldn't run to breakpoint MAIN__"
-+ continue
-+}
-+
-+gdb_breakpoint [gdb_get_line_number "var_char-allocated-1"]
-+gdb_continue_to_breakpoint "var_char-allocated-1"
-+gdb_test "print var_char" \
-+ " = \\(PTR TO -> \\( character\\*10 \\)\\) ${hex}" \
-+ "print var_char after allocated first time"
-+gdb_test "whatis var_char" "type = PTR TO -> \\( character\\*10 \\)" \
-+ "whatis var_char first time"
-+gdb_test "ptype var_char" "type = PTR TO -> \\( character\\*10 \\)" \
-+ "ptype var_char first time"
-+gdb_test "next" "\\d+.*var_char = 'foo'.*" \
-+ "next to allocation status of var_char"
-+gdb_test "print l" " = .TRUE." "print allocation status first time"
-+
-+gdb_breakpoint [gdb_get_line_number "var_char-filled-1"]
-+gdb_continue_to_breakpoint "var_char-filled-1"
-+gdb_test "print var_char" \
-+ " = \\(PTR TO -> \\( character\\*3 \\)\\) ${hex}" \
-+ "print var_char after filled first time"
-+gdb_test "print *var_char" " = 'foo'" \
-+ "print *var_char after filled first time"
-+gdb_test "whatis var_char" "type = PTR TO -> \\( character\\*3 \\)" \
-+ "whatis var_char after filled first time"
-+gdb_test "ptype var_char" "type = PTR TO -> \\( character\\*3 \\)" \
-+ "ptype var_char after filled first time"
-+gdb_test "print var_char(1)" " = 102 'f'" "print var_char(1)"
-+gdb_test "print var_char(3)" " = 111 'o'" "print var_char(3)"
-+
-+gdb_breakpoint [gdb_get_line_number "var_char-filled-2"]
-+gdb_continue_to_breakpoint "var_char-filled-2"
-+gdb_test "print var_char" \
-+ " = \\(PTR TO -> \\( character\\*6 \\)\\) ${hex}" \
-+ "print var_char after allocated second time"
-+gdb_test "print *var_char" " = 'foobar'" \
-+ "print *var_char after allocated second time"
-+gdb_test "whatis var_char" "type = PTR TO -> \\( character\\*6 \\)" \
-+ "whatis var_char second time"
-+gdb_test "ptype var_char" "type = PTR TO -> \\( character\\*6 \\)" \
-+ "ptype var_char second time"
-+
-+gdb_breakpoint [gdb_get_line_number "var_char-empty"]
-+gdb_continue_to_breakpoint "var_char-empty"
-+gdb_test "print var_char" \
-+ " = \\(PTR TO -> \\( character\\*0 \\)\\) ${hex}" \
-+ "print var_char after set empty"
-+gdb_test "print *var_char" " = \"\"" "print *var_char after set empty"
-+gdb_test "whatis var_char" "type = PTR TO -> \\( character\\*0 \\)" \
-+ "whatis var_char after set empty"
-+gdb_test "ptype var_char" "type = PTR TO -> \\( character\\*0 \\)" \
-+ "ptype var_char after set empty"
-+
-+gdb_breakpoint [gdb_get_line_number "var_char-allocated-3"]
-+gdb_continue_to_breakpoint "var_char-allocated-3"
-+gdb_test "print var_char" \
-+ " = \\(PTR TO -> \\( character\\*21 \\)\\) ${hex}" \
-+ "print var_char after allocated third time"
-+gdb_test "whatis var_char" "type = PTR TO -> \\( character\\*21 \\)" \
-+ "whatis var_char after allocated third time"
-+gdb_test "ptype var_char" "type = PTR TO -> \\( character\\*21 \\)" \
-+ "ptype var_char after allocated third time"
-+
-+gdb_breakpoint [gdb_get_line_number "var_char_p-associated"]
-+gdb_continue_to_breakpoint "var_char_p-associated"
-+gdb_test "print var_char_p" \
-+ " = \\(PTR TO -> \\( character\\*7 \\)\\) ${hex}" \
-+ "print var_char_p after associated"
-+gdb_test "print *var_char_p" " = 'johndoe'" \
-+ "print *var_char_ after associated"
-+gdb_test "whatis var_char_p" "type = PTR TO -> \\( character\\*7 \\)" \
-+ "whatis var_char_p after associated"
-+gdb_test "ptype var_char_p" "type = PTR TO -> \\( character\\*7 \\)" \
-+ "ptype var_char_p after associated"
-Index: gdb-7.10.50.20160106/gdb/testsuite/gdb.fortran/vla-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, _("<address of value unknown>"));
- 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);
-+ }
-+ }
- }
-
- \f
-@@ -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;
-+}
- \f
- /* Helper functions and baton for dwarf2_loc_desc_needs_frame. */
-
diff --git a/gdb.spec b/gdb.spec
index 3f68e51..15506bf 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 20160801
# See timestamp of source gnulib installed into gdb/gnulib/ .
%global snapgnulib 20150822
%global tarname gdb-%{version}
-Version: 7.11.1
+Version: 7.11.90.20160807
# 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: 77%{?dist}
+Release: 5%{?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
@@ -275,6 +275,8 @@ Patch271: gdb-6.5-bz243845-stale-testing-zombie-test.patch
#=push
Patch274: gdb-6.6-buildid-locate.patch
# Fix loading of core files without build-ids but with build-ids in executables.
+# Load strictly build-id-checked core files only if no executable is specified
+# (Jan Kratochvil, RH BZ 1339862).
#=push
Patch659: gdb-6.6-buildid-locate-solib-missing-ids.patch
#=push
@@ -519,12 +521,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,14 +576,6 @@ 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
-
-# [aarch64] Fix ARMv8.1/v8.2 for hw watchpoint and breakpoint
-# (Andrew Pinski, RH BZ 1363635).
-Patch1141: gdb-rhbz1363635-aarch64-armv8182.patch
-
%if 0%{!?rhel:1} || 0%{?rhel} > 6
# RL_STATE_FEDORA_GDB would not be found for:
# Patch642: gdb-readline62-ask-more-rh.patch
@@ -775,10 +773,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
@@ -872,7 +874,7 @@ find -name "*.info*"|xargs rm -f
%patch852 -p1
%patch863 -p1
%patch887 -p1
-%patch1069 -p1
+%patch888 -p1
%patch918 -p1
%patch925 -p1
%patch927 -p1
@@ -882,6 +884,16 @@ find -name "*.info*"|xargs rm -f
%patch1056 -p1
%patch1073 -p1
%patch848 -p1
+%if 0%{!?el6:1}
+for i in \
+ gdb/python/lib/gdb/FrameWrapper.py \
+ gdb/python/lib/gdb/backtrace.py \
+ gdb/python/lib/gdb/command/backtrace.py \
+ ;do
+ test -e $i
+ : >$i
+done
+%endif
%patch833 -p1
%patch642 -p1
%patch337 -p1
@@ -890,9 +902,6 @@ find -name "*.info*"|xargs rm -f
%patch1118 -p1
%patch1120 -p1
%patch1123 -p1
-%patch1128 -p1
-%patch1129 -p1
-%patch1141 -p1
%patch1075 -p1
%if 0%{?rhel:1} && 0%{?rhel} <= 7
@@ -970,6 +979,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} \
@@ -980,6 +991,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
@@ -1412,9 +1424,21 @@ then
fi
%changelog
-* Wed Aug 3 2016 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.11.1-77.fc24
-- [aarch64] Fix ARMv8.1/v8.2 for hw watchpoint and breakpoint
- (Andrew Pinski, RH BZ 1363635).
+* Sun Aug 7 2016 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.11.90.20160807-5.fc25
+- Rebase to FSF GDB 7.11.90.20160807 (pre-7.12 branch snapshot).
+
+* Sun Jul 31 2016 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.11.50.20160721-4.fc25
+- Testcase for: Load strictly build-id-checked core files only if no executable
+ is specified (Jan Kratochvil, RH BZ 1339862).
+
+* Thu Jul 28 2016 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.11.50.20160721-3.fc25
+- Do not apply RHEL-6 patches on non-RHEL-6 even for testsuite.
+
+* Thu Jul 21 2016 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.11.50.20160721-2.fc25
+- Rebase to FSF GDB 7.11.50.20160721 (pre-7.12 trunk snapshot).
+
+* Sun Jul 17 2016 Jan Kratochvil <jan.kratochvil@redhat.com> - 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 <jan.kratochvil@redhat.com> - 7.11.1-76.fc24
- Test 'info type-printers' Python error (RH BZ 1350436).
diff --git a/sources b/sources
index 26478eb..b30dc7c 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
7ad32d3894aaf90d00a4343a735c3e1c gdb-libstdc++-v3-python-r225521.tar.xz
-5aa71522e488e358243917967db87476 gdb-7.11.1.tar.xz
+2e52dd8b63eb0a459febbee01221fb10 gdb-7.11.90.20160807.tar.xz
reply other threads:[~2026-06-27 23:57 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178260466702.1.3268556433029150359.rpms-gdb-a5a9adcd40e3@fedoraproject.org \
--to=jan.kratochvil@redhat.com \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox