diff --git a/.gitignore b/.gitignore index db344d0..39bc2d8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ /gdb-libstdc++-v3-python-r155978.tar.bz2 -/gdb-7.7.91.20140724.tar.bz2 +/gdb-7.8.tar.gz diff --git a/gdb-archer-vla-tests.patch b/gdb-archer-vla-tests.patch index b8c4edc..d0fd183 100644 --- a/gdb-archer-vla-tests.patch +++ b/gdb-archer-vla-tests.patch @@ -1880,118 +1880,6 @@ Index: gdb-7.7.90.20140613/gdb/testsuite/gdb.fortran/dwarf-stride.f90 + print *, c40pt ! break-here + +end program repro -Index: gdb-7.7.90.20140613/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90 -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.7.90.20140613/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90 2014-06-16 23:30:30.113940488 +0200 -@@ -0,0 +1,24 @@ -+! Copyright 2010 Free Software Foundation, Inc. -+! -+! This program is free software; you can redistribute it and/or modify -+! it under the terms of the GNU General Public License as published by -+! the Free Software Foundation; either version 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. -+! -+! Ihis file is the Fortran source file for dynamic.exp. -+! Original file written by Jakub Jelinek . -+! Modified for the GDB testcase by Jan Kratochvil . -+ -+subroutine bar -+ real :: dummy -+ dummy = 1 -+end subroutine bar -Index: gdb-7.7.90.20140613/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.7.90.20140613/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp 2014-06-16 23:30:30.113940488 +0200 -@@ -0,0 +1,37 @@ -+# Copyright 2010 Free Software Foundation, Inc. -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 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. -+ -+set testfile "dynamic-other-frame" -+set srcfile1 ${testfile}.f90 -+set srcfile2 ${testfile}-stub.f90 -+set objfile2 [standard_output_file ${testfile}-stub.o] -+set executable ${testfile} -+set binfile [standard_output_file ${executable}] -+ -+if { [gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${objfile2}" object {f90}] != "" -+ || [gdb_compile "${srcdir}/${subdir}/${srcfile1} ${objfile2}" "${binfile}" executable {debug f90}] != "" } { -+ untested "Couldn't compile ${srcfile1} or ${srcfile2}" -+ return -1 -+} -+ -+clean_restart ${executable} -+ -+if ![runto bar_] then { -+ perror "couldn't run to bar_" -+ continue -+} -+ -+gdb_test "bt" {foo \(string='hello'.*} -Index: gdb-7.7.90.20140613/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90 -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.7.90.20140613/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90 2014-06-16 23:30:30.113940488 +0200 -@@ -0,0 +1,36 @@ -+! Copyright 2010 Free Software Foundation, Inc. -+! -+! This program is free software; you can redistribute it and/or modify -+! it under the terms of the GNU General Public License as published by -+! the Free Software Foundation; either version 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. -+! -+! Ihis file is the Fortran source file for dynamic.exp. -+! Original file written by Jakub Jelinek . -+! Modified for the GDB testcase by Jan Kratochvil . -+ -+subroutine foo (string) -+ interface -+ subroutine bar -+ end subroutine -+ end interface -+ character string*(*) -+ call bar ! stop-here -+end subroutine foo -+program test -+ interface -+ subroutine foo (string) -+ character string*(*) -+ end subroutine -+ end interface -+ call foo ('hello') -+end Index: gdb-7.7.90.20140613/gdb/testsuite/gdb.fortran/dynamic.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 diff --git a/gdb-archer.patch b/gdb-archer.patch index c6be51c..48f0b8c 100644 --- a/gdb-archer.patch +++ b/gdb-archer.patch @@ -7,19 +7,18 @@ commit b88230edf4e2da948d633c283ba0893bf22bd7ae tromey/python -diff --git a/README.archer b/README.archer -new file mode 100644 -index 0000000..173b8ea ---- /dev/null -+++ b/README.archer +Index: gdb-7.8/README.archer +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-7.8/README.archer 2014-07-29 19:29:04.861982779 +0200 @@ -0,0 +1,2 @@ +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 ea27cf5..bc04024 100644 ---- a/gdb/Makefile.in -+++ b/gdb/Makefile.in -@@ -1476,6 +1476,12 @@ stamp-h: $(srcdir)/config.in config.status +Index: gdb-7.8/gdb/Makefile.in +=================================================================== +--- gdb-7.8.orig/gdb/Makefile.in 2014-07-29 19:29:02.665979655 +0200 ++++ gdb-7.8/gdb/Makefile.in 2014-07-29 19:29:04.862982781 +0200 +@@ -1476,6 +1476,12 @@ stamp-h: $(srcdir)/config.in config.stat CONFIG_LINKS= \ $(SHELL) config.status @@ -32,11 +31,11 @@ index ea27cf5..bc04024 100644 config.status: $(srcdir)/configure configure.tgt configure.host ../bfd/development.sh $(SHELL) config.status --recheck -diff --git a/gdb/data-directory/Makefile.in b/gdb/data-directory/Makefile.in -index b9fcc03..3c2afe2 100644 ---- a/gdb/data-directory/Makefile.in -+++ b/gdb/data-directory/Makefile.in -@@ -66,6 +66,8 @@ PYTHON_FILES = \ +Index: gdb-7.8/gdb/data-directory/Makefile.in +=================================================================== +--- gdb-7.8.orig/gdb/data-directory/Makefile.in 2014-07-29 19:29:02.665979655 +0200 ++++ gdb-7.8/gdb/data-directory/Makefile.in 2014-07-29 19:29:33.053022486 +0200 +@@ -66,6 +66,8 @@ PYTHON_FILE_LIST = \ gdb/xmethod.py \ gdb/command/bound_registers.py \ gdb/command/__init__.py \ @@ -45,7 +44,7 @@ index b9fcc03..3c2afe2 100644 gdb/command/xmethods.py \ gdb/command/frame_filters.py \ gdb/command/type_printers.py \ -@@ -73,7 +75,10 @@ PYTHON_FILES = \ +@@ -73,7 +75,10 @@ PYTHON_FILE_LIST = \ gdb/command/prompt.py \ gdb/command/explore.py \ gdb/function/__init__.py \ @@ -55,12 +54,12 @@ index b9fcc03..3c2afe2 100644 + gdb/function/in_scope.py \ + gdb/types.py - GUILE_DIR = guile - GUILE_INSTALL_DIR = $(DESTDIR)$(GDB_DATADIR)/$(GUILE_DIR) -diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo -index a0fb66d..3fae61e 100644 ---- a/gdb/doc/gdb.texinfo -+++ b/gdb/doc/gdb.texinfo + @HAVE_PYTHON_TRUE@PYTHON_FILES = $(PYTHON_FILE_LIST) + @HAVE_PYTHON_FALSE@PYTHON_FILES = +Index: gdb-7.8/gdb/doc/gdb.texinfo +=================================================================== +--- gdb-7.8.orig/gdb/doc/gdb.texinfo 2014-07-29 19:29:02.675979669 +0200 ++++ gdb-7.8/gdb/doc/gdb.texinfo 2014-07-29 19:29:04.871982794 +0200 @@ -1225,6 +1225,16 @@ for remote debugging. Run using @var{device} for your program's standard input and output. @c FIXME: kingdon thinks there is more to -tty. Investigate. @@ -78,10 +77,10 @@ index a0fb66d..3fae61e 100644 @c resolve the situation of these eventually @item -tui @cindex @code{--tui} -diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi -index 4688783..a32133a 100644 ---- a/gdb/doc/python.texi -+++ b/gdb/doc/python.texi +Index: gdb-7.8/gdb/doc/python.texi +=================================================================== +--- gdb-7.8.orig/gdb/doc/python.texi 2014-07-29 19:29:02.677979672 +0200 ++++ gdb-7.8/gdb/doc/python.texi 2014-07-29 19:29:04.872982795 +0200 @@ -88,8 +88,6 @@ containing @code{end}. For example: @smallexample @@ -91,10 +90,10 @@ index 4688783..a32133a 100644 >print 23 >end 23 -diff --git a/gdb/gdb-gdb.gdb.in b/gdb/gdb-gdb.gdb.in -index 05a38b2..9801fdf 100644 ---- a/gdb/gdb-gdb.gdb.in -+++ b/gdb/gdb-gdb.gdb.in +Index: gdb-7.8/gdb/gdb-gdb.gdb.in +=================================================================== +--- gdb-7.8.orig/gdb/gdb-gdb.gdb.in 2014-07-29 19:29:02.677979672 +0200 ++++ gdb-7.8/gdb/gdb-gdb.gdb.in 2014-07-29 19:29:04.872982795 +0200 @@ -1,5 +1,15 @@ echo Setting up the environment for debugging gdb.\n @@ -111,10 +110,10 @@ index 05a38b2..9801fdf 100644 if !$gdb_init_done set variable $gdb_init_done = 1 -diff --git a/gdb/main.c b/gdb/main.c -index 108759d..a624c1b 100644 ---- a/gdb/main.c -+++ b/gdb/main.c +Index: gdb-7.8/gdb/main.c +=================================================================== +--- gdb-7.8.orig/gdb/main.c 2014-07-29 19:29:02.678979673 +0200 ++++ gdb-7.8/gdb/main.c 2014-07-29 19:29:04.872982795 +0200 @@ -37,6 +37,7 @@ #include "interps.h" @@ -123,7 +122,7 @@ index 108759d..a624c1b 100644 #include "source.h" #include "cli/cli-cmds.h" #include "objfiles.h" -@@ -359,6 +360,8 @@ captured_main (void *data) +@@ -417,6 +418,8 @@ captured_main (void *data) char *cdarg = NULL; char *ttyarg = NULL; @@ -132,7 +131,7 @@ index 108759d..a624c1b 100644 /* These are static so that we can take their address in an initializer. */ static int print_help; -@@ -566,10 +569,14 @@ captured_main (void *data) +@@ -624,10 +627,14 @@ captured_main (void *data) {"args", no_argument, &set_args, 1}, {"l", required_argument, 0, 'l'}, {"return-child-result", no_argument, &return_child_result, 1}, @@ -148,7 +147,7 @@ index 108759d..a624c1b 100644 { int option_index; -@@ -587,6 +594,9 @@ captured_main (void *data) +@@ -645,6 +652,9 @@ captured_main (void *data) case 0: /* Long option that just sets a flag. */ break; @@ -158,7 +157,7 @@ index 108759d..a624c1b 100644 case OPT_SE: symarg = optarg; execarg = optarg; -@@ -791,7 +801,31 @@ captured_main (void *data) +@@ -849,7 +859,31 @@ captured_main (void *data) /* Now that gdb_init has created the initial inferior, we're in position to set args for that inferior. */ @@ -191,7 +190,7 @@ index 108759d..a624c1b 100644 { /* The remaining options are the command-line options for the inferior. The first one is the sym/exec file, and the rest -@@ -1077,7 +1111,8 @@ captured_main (void *data) +@@ -1135,7 +1169,8 @@ captured_main (void *data) /* Read in the old history after all the command files have been read. */ @@ -201,7 +200,7 @@ index 108759d..a624c1b 100644 if (batch_flag) { -@@ -1088,13 +1123,25 @@ captured_main (void *data) +@@ -1146,13 +1181,25 @@ captured_main (void *data) /* Show time and/or space usage. */ do_cleanups (pre_stat_chain); @@ -233,7 +232,7 @@ index 108759d..a624c1b 100644 } /* No exit -- exit is through quit_command. */ } -@@ -1128,6 +1175,12 @@ print_gdb_help (struct ui_file *stream) +@@ -1186,6 +1233,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\ @@ -246,7 +245,7 @@ index 108759d..a624c1b 100644 gdb [options] --args executable-file [inferior-arguments ...]\n\n\ "), stream); fputs_unfiltered (_("\ -@@ -1173,6 +1226,13 @@ Output and user interface control:\n\n\ +@@ -1231,6 +1284,13 @@ Output and user interface control:\n\n\ fputs_unfiltered (_("\ --dbx DBX compatibility mode.\n\ --xdb XDB compatibility mode.\n\ @@ -260,11 +259,10 @@ index 108759d..a624c1b 100644 -q, --quiet, --silent\n\ Do not print version number on startup.\n\n\ "), stream); -diff --git a/gdb/python/lib/gdb/command/ignore_errors.py b/gdb/python/lib/gdb/command/ignore_errors.py -new file mode 100644 -index 0000000..6fa48ff ---- /dev/null -+++ b/gdb/python/lib/gdb/command/ignore_errors.py +Index: gdb-7.8/gdb/python/lib/gdb/command/ignore_errors.py +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-7.8/gdb/python/lib/gdb/command/ignore_errors.py 2014-07-29 19:29:04.872982795 +0200 @@ -0,0 +1,37 @@ +# Ignore errors in user commands. + @@ -303,11 +301,10 @@ index 0000000..6fa48ff + pass + +IgnoreErrorsCommand () -diff --git a/gdb/python/lib/gdb/command/pahole.py b/gdb/python/lib/gdb/command/pahole.py -new file mode 100644 -index 0000000..636f99d ---- /dev/null -+++ b/gdb/python/lib/gdb/command/pahole.py +Index: gdb-7.8/gdb/python/lib/gdb/command/pahole.py +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-7.8/gdb/python/lib/gdb/command/pahole.py 2014-07-29 19:29:04.873982797 +0200 @@ -0,0 +1,81 @@ +# pahole command for gdb + @@ -390,11 +387,10 @@ index 0000000..636f99d + self.pahole (type, 0, '') + +Pahole() -diff --git a/gdb/python/lib/gdb/function/caller_is.py b/gdb/python/lib/gdb/function/caller_is.py -new file mode 100644 -index 0000000..2b9c5c7 ---- /dev/null -+++ b/gdb/python/lib/gdb/function/caller_is.py +Index: gdb-7.8/gdb/python/lib/gdb/function/caller_is.py +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-7.8/gdb/python/lib/gdb/function/caller_is.py 2014-07-29 19:29:04.873982797 +0200 @@ -0,0 +1,58 @@ +# Caller-is functions. + @@ -454,11 +450,10 @@ index 0000000..2b9c5c7 + +CallerIs() +CallerMatches() -diff --git a/gdb/python/lib/gdb/function/in_scope.py b/gdb/python/lib/gdb/function/in_scope.py -new file mode 100644 -index 0000000..debb3bb ---- /dev/null -+++ b/gdb/python/lib/gdb/function/in_scope.py +Index: gdb-7.8/gdb/python/lib/gdb/function/in_scope.py +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-7.8/gdb/python/lib/gdb/function/in_scope.py 2014-07-29 19:29:04.873982797 +0200 @@ -0,0 +1,47 @@ +# In-scope function. + @@ -507,11 +502,11 @@ index 0000000..debb3bb + return wanted == found + +InScope () -diff --git a/gdb/python/python.c b/gdb/python/python.c -index 369a249..0f136a8 100644 ---- a/gdb/python/python.c -+++ b/gdb/python/python.c -@@ -95,6 +95,8 @@ const struct extension_language_defn extension_language_python = +Index: gdb-7.8/gdb/python/python.c +=================================================================== +--- gdb-7.8.orig/gdb/python/python.c 2014-07-29 19:29:02.679979674 +0200 ++++ gdb-7.8/gdb/python/python.c 2014-07-29 19:29:04.873982797 +0200 +@@ -95,6 +95,8 @@ const struct extension_language_defn ext #include "linespec.h" #include "source.h" #include "version.h" @@ -586,10 +581,10 @@ index 369a249..0f136a8 100644 { "parameter", gdbpy_parameter, METH_VARARGS, "Return a gdb parameter's value" }, -diff --git a/gdb/python/python.h b/gdb/python/python.h -index 9e99992..c776e59 100644 ---- a/gdb/python/python.h -+++ b/gdb/python/python.h +Index: gdb-7.8/gdb/python/python.h +=================================================================== +--- gdb-7.8.orig/gdb/python/python.h 2014-07-29 19:29:02.679979674 +0200 ++++ gdb-7.8/gdb/python/python.h 2014-07-29 19:29:04.873982797 +0200 @@ -25,4 +25,6 @@ /* This is all that python exports to gdb. */ extern const struct extension_language_defn extension_language_python; @@ -597,10 +592,10 @@ index 9e99992..c776e59 100644 +extern void run_python_script (int argc, char **argv); + #endif /* GDB_PYTHON_H */ -diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest.exp -index 91142fe..724679f 100644 ---- a/gdb/testsuite/gdb.gdb/selftest.exp -+++ b/gdb/testsuite/gdb.gdb/selftest.exp +Index: gdb-7.8/gdb/testsuite/gdb.gdb/selftest.exp +=================================================================== +--- gdb-7.8.orig/gdb/testsuite/gdb.gdb/selftest.exp 2014-07-29 19:29:02.679979674 +0200 ++++ gdb-7.8/gdb/testsuite/gdb.gdb/selftest.exp 2014-07-29 19:29:04.874982798 +0200 @@ -92,6 +92,10 @@ proc do_steps_and_nexts {} { set description "step over cmdarg_vec initialization" set command "step" @@ -612,20 +607,20 @@ index 91142fe..724679f 100644 -re ".*pre_stat_chain = make_command_stats_cleanup.*$gdb_prompt $" { 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 3517824..4fa2bd8 100644 ---- a/gdb/testsuite/gdb.python/py-frame.exp -+++ b/gdb/testsuite/gdb.python/py-frame.exp -@@ -94,3 +94,5 @@ gdb_test "python print ('result = %s' % f0.read_var ('variable_which_surely_does +Index: gdb-7.8/gdb/testsuite/gdb.python/py-frame.exp +=================================================================== +--- gdb-7.8.orig/gdb/testsuite/gdb.python/py-frame.exp 2014-07-29 19:29:02.680979676 +0200 ++++ gdb-7.8/gdb/testsuite/gdb.python/py-frame.exp 2014-07-29 19:29:04.874982798 +0200 +@@ -94,3 +94,5 @@ gdb_test "python print ('result = %s' % gdb_test "python print ('result = %s' % f0.read_var ('a'))" " = 1" "test Frame.read_var - success" gdb_test "python print ('result = %s' % (gdb.selected_frame () == f1))" " = True" "test gdb.selected_frame" + +gdb_test "python print ('result = %s' % (f0.block ()))" "" "test Frame.block" -diff --git a/gdb/testsuite/gdb.python/py-value.exp b/gdb/testsuite/gdb.python/py-value.exp -index 13433fd..b146165 100644 ---- a/gdb/testsuite/gdb.python/py-value.exp -+++ b/gdb/testsuite/gdb.python/py-value.exp +Index: gdb-7.8/gdb/testsuite/gdb.python/py-value.exp +=================================================================== +--- gdb-7.8.orig/gdb/testsuite/gdb.python/py-value.exp 2014-07-29 19:29:02.680979676 +0200 ++++ gdb-7.8/gdb/testsuite/gdb.python/py-value.exp 2014-07-29 19:29:04.874982798 +0200 @@ -385,6 +385,15 @@ proc test_value_after_death {} { "print value's type" } diff --git a/gdb-attach-fail-reasons-5of5.patch b/gdb-attach-fail-reasons-5of5.patch index 91d2959..1bb028b 100644 --- a/gdb-attach-fail-reasons-5of5.patch +++ b/gdb-attach-fail-reasons-5of5.patch @@ -37,10 +37,10 @@ gdb/gdbserver/ (linux_create_inferior, linux_tracefork_child): Call it instead of direct ptrace. -Index: gdb-7.7.50.20140609/gdb/common/linux-ptrace.c +Index: gdb-7.8/gdb/common/linux-ptrace.c =================================================================== ---- gdb-7.7.50.20140609.orig/gdb/common/linux-ptrace.c 2014-06-13 20:28:04.375884828 +0200 -+++ gdb-7.7.50.20140609/gdb/common/linux-ptrace.c 2014-06-13 20:28:57.514940079 +0200 +--- gdb-7.8.orig/gdb/common/linux-ptrace.c 2014-07-29 19:31:01.893149317 +0200 ++++ gdb-7.8/gdb/common/linux-ptrace.c 2014-07-29 19:31:05.806154887 +0200 @@ -32,6 +32,10 @@ #include @@ -81,10 +81,10 @@ Index: gdb-7.7.50.20140609/gdb/common/linux-ptrace.c + "(gdb) shell sudo setsebool deny_ptrace=0")); +#endif /* HAVE_LIBSELINUX */ +} -Index: gdb-7.7.50.20140609/gdb/common/linux-ptrace.h +Index: gdb-7.8/gdb/common/linux-ptrace.h =================================================================== ---- gdb-7.7.50.20140609.orig/gdb/common/linux-ptrace.h 2014-06-13 20:28:14.375895202 +0200 -+++ gdb-7.7.50.20140609/gdb/common/linux-ptrace.h 2014-06-13 20:28:33.298914047 +0200 +--- gdb-7.8.orig/gdb/common/linux-ptrace.h 2014-07-29 19:31:01.893149317 +0200 ++++ gdb-7.8/gdb/common/linux-ptrace.h 2014-07-29 19:31:05.807154887 +0200 @@ -85,6 +85,7 @@ struct buffer; extern void linux_ptrace_attach_fail_reason (pid_t pid, struct buffer *buffer); @@ -93,11 +93,11 @@ Index: gdb-7.7.50.20140609/gdb/common/linux-ptrace.h extern void linux_enable_event_reporting (pid_t pid); extern void linux_disable_event_reporting (pid_t pid); extern int linux_supports_tracefork (void); -Index: gdb-7.7.50.20140609/gdb/configure.ac +Index: gdb-7.8/gdb/configure.ac =================================================================== ---- gdb-7.7.50.20140609.orig/gdb/configure.ac 2014-06-13 20:28:04.377884830 +0200 -+++ gdb-7.7.50.20140609/gdb/configure.ac 2014-06-13 20:28:14.376895203 +0200 -@@ -2138,6 +2138,10 @@ case $host_os in +--- gdb-7.8.orig/gdb/configure.ac 2014-07-29 19:31:01.894149319 +0200 ++++ gdb-7.8/gdb/configure.ac 2014-07-29 19:31:05.807154887 +0200 +@@ -2158,6 +2158,10 @@ case $host_os in esac AC_DEFINE_UNQUOTED(GDBINIT,"$gdbinit",[The .gdbinit filename.]) @@ -108,10 +108,10 @@ Index: gdb-7.7.50.20140609/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.7.50.20140609/gdb/gdbserver/configure.ac +Index: gdb-7.8/gdb/gdbserver/configure.ac =================================================================== ---- gdb-7.7.50.20140609.orig/gdb/gdbserver/configure.ac 2014-06-13 20:28:04.377884830 +0200 -+++ gdb-7.7.50.20140609/gdb/gdbserver/configure.ac 2014-06-13 20:28:14.376895203 +0200 +--- gdb-7.8.orig/gdb/gdbserver/configure.ac 2014-07-29 19:31:01.895149320 +0200 ++++ gdb-7.8/gdb/gdbserver/configure.ac 2014-07-29 19:31:05.808154887 +0200 @@ -454,6 +454,10 @@ if $want_ipa ; then fi fi @@ -123,10 +123,10 @@ Index: gdb-7.7.50.20140609/gdb/gdbserver/configure.ac AC_SUBST(GDBSERVER_DEPFILES) AC_SUBST(GDBSERVER_LIBS) AC_SUBST(srv_xmlbuiltin) -Index: gdb-7.7.50.20140609/gdb/gdbserver/linux-low.c +Index: gdb-7.8/gdb/gdbserver/linux-low.c =================================================================== ---- gdb-7.7.50.20140609.orig/gdb/gdbserver/linux-low.c 2014-06-13 20:28:04.379884832 +0200 -+++ gdb-7.7.50.20140609/gdb/gdbserver/linux-low.c 2014-06-13 20:28:14.377895204 +0200 +--- gdb-7.8.orig/gdb/gdbserver/linux-low.c 2014-07-29 19:31:01.897149323 +0200 ++++ gdb-7.8/gdb/gdbserver/linux-low.c 2014-07-29 19:31:05.809154889 +0200 @@ -541,6 +541,29 @@ add_lwp (ptid_t ptid) return lwp; } @@ -166,10 +166,10 @@ Index: gdb-7.7.50.20140609/gdb/gdbserver/linux-low.c #ifndef __ANDROID__ /* Bionic doesn't use SIGRTMIN the way glibc does. */ signal (__SIGRTMIN + 1, SIG_DFL); -Index: gdb-7.7.50.20140609/gdb/inf-ptrace.c +Index: gdb-7.8/gdb/inf-ptrace.c =================================================================== ---- gdb-7.7.50.20140609.orig/gdb/inf-ptrace.c 2014-06-13 20:28:04.380884833 +0200 -+++ gdb-7.7.50.20140609/gdb/inf-ptrace.c 2014-06-13 20:28:14.377895204 +0200 +--- gdb-7.8.orig/gdb/inf-ptrace.c 2014-07-29 19:31:01.898149324 +0200 ++++ gdb-7.8/gdb/inf-ptrace.c 2014-07-29 19:31:05.809154889 +0200 @@ -105,7 +105,15 @@ static void inf_ptrace_me (void) { @@ -186,11 +186,11 @@ Index: gdb-7.7.50.20140609/gdb/inf-ptrace.c } /* Start a new inferior Unix child process. EXEC_FILE is the file to -Index: gdb-7.7.50.20140609/gdb/linux-nat.c +Index: gdb-7.8/gdb/linux-nat.c =================================================================== ---- gdb-7.7.50.20140609.orig/gdb/linux-nat.c 2014-06-13 20:28:04.382884835 +0200 -+++ gdb-7.7.50.20140609/gdb/linux-nat.c 2014-06-13 20:29:34.554977995 +0200 -@@ -1285,6 +1285,7 @@ linux_nat_create_inferior (struct target +--- gdb-7.8.orig/gdb/linux-nat.c 2014-07-29 19:31:01.899149326 +0200 ++++ gdb-7.8/gdb/linux-nat.c 2014-07-29 19:31:05.811154893 +0200 +@@ -1291,6 +1291,7 @@ linux_nat_create_inferior (struct target #ifdef HAVE_PERSONALITY int personality_orig = 0, personality_set = 0; #endif /* HAVE_PERSONALITY */ @@ -198,7 +198,7 @@ Index: gdb-7.7.50.20140609/gdb/linux-nat.c /* The fork_child mechanism is synchronous and calls target_wait, so we have to mask the async mode. */ -@@ -1309,7 +1310,10 @@ linux_nat_create_inferior (struct target +@@ -1315,7 +1316,10 @@ linux_nat_create_inferior (struct target /* Make sure we report all signals during startup. */ linux_nat_pass_signals (ops, 0, NULL); @@ -210,7 +210,7 @@ Index: gdb-7.7.50.20140609/gdb/linux-nat.c #ifdef HAVE_PERSONALITY if (personality_set) -@@ -1321,6 +1325,24 @@ linux_nat_create_inferior (struct target +@@ -1327,6 +1331,24 @@ linux_nat_create_inferior (struct target safe_strerror (errno)); } #endif /* HAVE_PERSONALITY */ @@ -235,11 +235,11 @@ Index: gdb-7.7.50.20140609/gdb/linux-nat.c } static void -Index: gdb-7.7.50.20140609/gdb/config.in +Index: gdb-7.8/gdb/config.in =================================================================== ---- gdb-7.7.50.20140609.orig/gdb/config.in 2014-06-13 20:28:04.383884836 +0200 -+++ gdb-7.7.50.20140609/gdb/config.in 2014-06-13 20:29:57.378002067 +0200 -@@ -216,6 +216,9 @@ +--- gdb-7.8.orig/gdb/config.in 2014-07-29 19:31:01.900149327 +0200 ++++ gdb-7.8/gdb/config.in 2014-07-29 19:31:44.600210090 +0200 +@@ -219,6 +219,9 @@ /* Define if librpm library is being used. */ #undef HAVE_LIBRPM @@ -249,21 +249,21 @@ Index: gdb-7.7.50.20140609/gdb/config.in /* Define to 1 if you have the header file. */ #undef HAVE_LIBUNWIND_IA64_H -@@ -351,6 +354,9 @@ +@@ -354,6 +357,9 @@ /* Define to 1 if you have the `scm_new_smob' function. */ #undef HAVE_SCM_NEW_SMOB +/* Define to 1 if you have the header file. */ +#undef HAVE_SELINUX_SELINUX_H + - /* Define to 1 if you have the `setlocale' function. */ - #undef HAVE_SETLOCALE + /* Define to 1 if you have the `setenv' function. */ + #undef HAVE_SETENV -Index: gdb-7.7.50.20140609/gdb/configure +Index: gdb-7.8/gdb/configure =================================================================== ---- gdb-7.7.50.20140609.orig/gdb/configure 2014-06-13 20:28:04.387884840 +0200 -+++ gdb-7.7.50.20140609/gdb/configure 2014-06-13 20:28:14.383895210 +0200 -@@ -13282,6 +13282,64 @@ cat >>confdefs.h <<_ACEOF +--- gdb-7.8.orig/gdb/configure 2014-07-29 19:31:01.903149331 +0200 ++++ gdb-7.8/gdb/configure 2014-07-29 19:31:05.815154898 +0200 +@@ -13392,6 +13392,64 @@ cat >>confdefs.h <<_ACEOF _ACEOF @@ -328,10 +328,10 @@ Index: gdb-7.7.50.20140609/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.7.50.20140609/gdb/gdbserver/config.in +Index: gdb-7.8/gdb/gdbserver/config.in =================================================================== ---- gdb-7.7.50.20140609.orig/gdb/gdbserver/config.in 2014-06-13 20:28:04.389884842 +0200 -+++ gdb-7.7.50.20140609/gdb/gdbserver/config.in 2014-06-13 20:28:14.383895210 +0200 +--- gdb-7.8.orig/gdb/gdbserver/config.in 2014-07-29 19:31:01.904149333 +0200 ++++ gdb-7.8/gdb/gdbserver/config.in 2014-07-29 19:31:05.815154898 +0200 @@ -81,6 +81,9 @@ /* Define to 1 if you have the `mcheck' library (-lmcheck). */ #undef HAVE_LIBMCHECK @@ -352,10 +352,10 @@ Index: gdb-7.7.50.20140609/gdb/gdbserver/config.in /* Define to 1 if you have the header file. */ #undef HAVE_SGTTY_H -Index: gdb-7.7.50.20140609/gdb/gdbserver/configure +Index: gdb-7.8/gdb/gdbserver/configure =================================================================== ---- gdb-7.7.50.20140609.orig/gdb/gdbserver/configure 2014-06-13 20:28:04.390884844 +0200 -+++ gdb-7.7.50.20140609/gdb/gdbserver/configure 2014-06-13 20:28:14.384895211 +0200 +--- gdb-7.8.orig/gdb/gdbserver/configure 2014-07-29 19:31:01.905149334 +0200 ++++ gdb-7.8/gdb/gdbserver/configure 2014-07-29 19:31:05.817154901 +0200 @@ -6170,6 +6170,64 @@ if $want_ipa ; then fi fi diff --git a/gdb-fortran-frame-string.patch b/gdb-fortran-frame-string.patch new file mode 100644 index 0000000..e07b27b --- /dev/null +++ b/gdb-fortran-frame-string.patch @@ -0,0 +1,104 @@ +http://sourceware.org/ml/gdb-patches/2014-07/msg00709.html +Subject: [patch] Display Fortran strings in backtraces + + +Hi, + +for Fortran it fixes displaying normal strings also in frames/backtraces: + +(gdb) frame +#0 f (s=..., _s=3) at ./gdb.fortran/fortran-frame-string.f90:24 +-> +#0 f (s='foo', _s=3) at ./gdb.fortran/fortran-frame-string.f90:24 + +The patch is simple and I do not see why it should not be this way. + +For C/C++ TYPE_CODE_STRING is not used. I am not aware of Pascal but that +language is currently not really much supported in GDB anyway. + +This was a part of my archer/jankratochvil/vla branch but it is not a part of +the Intel VLA patchset as it in fact is completely unrelated to "VLA". + +No regressions on {x86_64,x86_64-m32,i686}-fedora22pre-linux-gnu. + + +Thanks, +Jan + + +diff --git a/gdb/testsuite/gdb.fortran/fortran-frame-string.exp b/gdb/testsuite/gdb.fortran/fortran-frame-string.exp +new file mode 100644 +index 0000000..4b78266 +--- /dev/null ++++ b/gdb/testsuite/gdb.fortran/fortran-frame-string.exp +@@ -0,0 +1,36 @@ ++# 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. ++ ++standard_testfile .f90 ++if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} {debug f90}] } { ++ return -1 ++} ++ ++if ![runto MAIN__] then { ++ perror "couldn't run to breakpoint MAIN__" ++ continue ++} ++ ++gdb_breakpoint [gdb_get_line_number "s = s"] ++gdb_continue_to_breakpoint "s = s" ++ ++gdb_test "ptype s" {type = character\*3} ++gdb_test "p s" " = 'foo'" ++ ++# Fix rejected upstream: ++# https://sourceware.org/ml/gdb-patches/2014-07/msg00768.html ++setup_kfail "rejected" *-*-* ++gdb_test "frame" { \(s='foo', .*} +diff --git a/gdb/testsuite/gdb.fortran/fortran-frame-string.f90 b/gdb/testsuite/gdb.fortran/fortran-frame-string.f90 +new file mode 100644 +index 0000000..3d1576f +--- /dev/null ++++ b/gdb/testsuite/gdb.fortran/fortran-frame-string.f90 +@@ -0,0 +1,28 @@ ++! 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. ++! ++! Ihis file is the Fortran source file for dynamic.exp. ++! Original file written by Jakub Jelinek . ++! Modified for the GDB testcase by Jan Kratochvil . ++ ++ subroutine f(s) ++ character*3 s ++ s = s ++ end ++ ++ program main ++ call f ('foo') ++ end diff --git a/gdb-rhbz795424-bitpos-22of25.patch b/gdb-rhbz795424-bitpos-22of25.patch index 0f23895..1943ba6 100644 --- a/gdb-rhbz795424-bitpos-22of25.patch +++ b/gdb-rhbz795424-bitpos-22of25.patch @@ -96,10 +96,10 @@ Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=bitpos-wp.patch -Index: gdb-7.7.90.20140613/gdb/arm-linux-nat.c +Index: gdb-7.8/gdb/arm-linux-nat.c =================================================================== ---- gdb-7.7.90.20140613.orig/gdb/arm-linux-nat.c 2014-06-13 22:23:09.630440699 +0200 -+++ gdb-7.7.90.20140613/gdb/arm-linux-nat.c 2014-06-13 22:23:54.666492199 +0200 +--- gdb-7.8.orig/gdb/arm-linux-nat.c 2014-08-01 23:27:30.183773676 +0200 ++++ gdb-7.8/gdb/arm-linux-nat.c 2014-08-01 23:27:30.241773754 +0200 @@ -1296,7 +1296,7 @@ arm_linux_stopped_by_watchpoint (struct static int arm_linux_watchpoint_addr_within_range (struct target_ops *target, @@ -109,11 +109,11 @@ Index: gdb-7.7.90.20140613/gdb/arm-linux-nat.c { return start <= addr && start + length - 1 >= addr; } -Index: gdb-7.7.90.20140613/gdb/ppc-linux-nat.c +Index: gdb-7.8/gdb/ppc-linux-nat.c =================================================================== ---- gdb-7.7.90.20140613.orig/gdb/ppc-linux-nat.c 2014-06-13 22:23:09.635440704 +0200 -+++ gdb-7.7.90.20140613/gdb/ppc-linux-nat.c 2014-06-13 22:23:54.672492206 +0200 -@@ -1857,11 +1857,11 @@ can_use_watchpoint_cond_accel (void) +--- gdb-7.8.orig/gdb/ppc-linux-nat.c 2014-08-01 23:27:30.202773701 +0200 ++++ gdb-7.8/gdb/ppc-linux-nat.c 2014-08-01 23:29:38.311944925 +0200 +@@ -1862,11 +1862,11 @@ can_use_watchpoint_cond_accel (void) CONDITION_VALUE will hold the value which should be put in the DVC register. */ static void @@ -128,7 +128,7 @@ Index: gdb-7.7.90.20140613/gdb/ppc-linux-nat.c CORE_ADDR addr_end_data, addr_end_dvc; /* The DVC register compares bytes within fixed-length windows which -@@ -1948,7 +1948,7 @@ num_memory_accesses (struct value *v) +@@ -1953,7 +1953,7 @@ num_memory_accesses (struct value *v) of the constant. */ static int check_condition (CORE_ADDR watch_addr, struct expression *cond, @@ -137,7 +137,16 @@ Index: gdb-7.7.90.20140613/gdb/ppc-linux-nat.c { int pc = 1, num_accesses_left, num_accesses_right; struct value *left_val, *right_val, *left_chain, *right_chain; -@@ -2033,7 +2033,7 @@ ppc_linux_can_accel_watchpoint_condition +@@ -2021,7 +2021,7 @@ check_condition (CORE_ADDR watch_addr, s + true. */ + static int + ppc_linux_can_accel_watchpoint_condition (struct target_ops *self, +- CORE_ADDR addr, int len, int rw, ++ CORE_ADDR addr, LONGEST len, int rw, + struct expression *cond) + { + CORE_ADDR data_value; +@@ -2038,7 +2038,7 @@ ppc_linux_can_accel_watchpoint_condition static void create_watchpoint_request (struct ppc_hw_breakpoint *p, CORE_ADDR addr, @@ -146,7 +155,7 @@ Index: gdb-7.7.90.20140613/gdb/ppc-linux-nat.c int insert) { if (len == 1 -@@ -2299,7 +2299,7 @@ ppc_linux_stopped_by_watchpoint (struct +@@ -2304,7 +2304,7 @@ ppc_linux_stopped_by_watchpoint (struct static int ppc_linux_watchpoint_addr_within_range (struct target_ops *target, CORE_ADDR addr, @@ -155,10 +164,10 @@ Index: gdb-7.7.90.20140613/gdb/ppc-linux-nat.c { int mask; -Index: gdb-7.7.90.20140613/gdb/procfs.c +Index: gdb-7.8/gdb/procfs.c =================================================================== ---- gdb-7.7.90.20140613.orig/gdb/procfs.c 2014-06-13 22:23:09.638440708 +0200 -+++ gdb-7.7.90.20140613/gdb/procfs.c 2014-06-13 22:23:54.673492207 +0200 +--- gdb-7.8.orig/gdb/procfs.c 2014-08-01 23:27:30.203773703 +0200 ++++ gdb-7.8/gdb/procfs.c 2014-08-01 23:27:30.243773756 +0200 @@ -2429,7 +2429,7 @@ procfs_address_to_host_pointer (CORE_ADD #endif @@ -177,11 +186,11 @@ Index: gdb-7.7.90.20140613/gdb/procfs.c int after) { #ifndef AIX5 -Index: gdb-7.7.90.20140613/gdb/remote.c +Index: gdb-7.8/gdb/remote.c =================================================================== ---- gdb-7.7.90.20140613.orig/gdb/remote.c 2014-06-13 22:23:09.643440713 +0200 -+++ gdb-7.7.90.20140613/gdb/remote.c 2014-06-13 22:23:54.680492215 +0200 -@@ -8199,7 +8199,7 @@ remote_insert_watchpoint (struct target_ +--- gdb-7.8.orig/gdb/remote.c 2014-08-01 23:27:30.205773705 +0200 ++++ gdb-7.8/gdb/remote.c 2014-08-01 23:27:30.246773760 +0200 +@@ -8206,7 +8206,7 @@ remote_insert_watchpoint (struct target_ p = strchr (rs->buf, '\0'); addr = remote_address_masked (addr); p += hexnumstr (p, (ULONGEST) addr); @@ -190,7 +199,7 @@ Index: gdb-7.7.90.20140613/gdb/remote.c putpkt (rs->buf); getpkt (&rs->buf, &rs->buf_size, 0); -@@ -8219,7 +8219,7 @@ remote_insert_watchpoint (struct target_ +@@ -8226,7 +8226,7 @@ remote_insert_watchpoint (struct target_ static int remote_watchpoint_addr_within_range (struct target_ops *target, CORE_ADDR addr, @@ -199,7 +208,7 @@ Index: gdb-7.7.90.20140613/gdb/remote.c { CORE_ADDR diff = remote_address_masked (addr - start); -@@ -8249,7 +8249,7 @@ remote_remove_watchpoint (struct target_ +@@ -8256,7 +8256,7 @@ remote_remove_watchpoint (struct target_ p = strchr (rs->buf, '\0'); addr = remote_address_masked (addr); p += hexnumstr (p, (ULONGEST) addr); @@ -208,10 +217,10 @@ Index: gdb-7.7.90.20140613/gdb/remote.c putpkt (rs->buf); getpkt (&rs->buf, &rs->buf_size, 0); -Index: gdb-7.7.90.20140613/gdb/target.c +Index: gdb-7.8/gdb/target.c =================================================================== ---- gdb-7.7.90.20140613.orig/gdb/target.c 2014-06-13 22:23:09.645440716 +0200 -+++ gdb-7.7.90.20140613/gdb/target.c 2014-06-13 22:26:24.077661601 +0200 +--- gdb-7.8.orig/gdb/target.c 2014-08-01 23:27:30.206773707 +0200 ++++ gdb-7.8/gdb/target.c 2014-08-01 23:29:38.314944857 +0200 @@ -52,7 +52,7 @@ static void target_info (char *, int); static void default_terminal_info (struct target_ops *, const char *, int); @@ -221,7 +230,7 @@ Index: gdb-7.7.90.20140613/gdb/target.c static int default_region_ok_for_hw_watchpoint (struct target_ops *, CORE_ADDR, LONGEST); -@@ -150,7 +150,7 @@ static int debug_to_remove_watchpoint (s +@@ -150,13 +150,13 @@ static int debug_to_remove_watchpoint (s static int debug_to_stopped_data_address (struct target_ops *, CORE_ADDR *); static int debug_to_watchpoint_addr_within_range (struct target_ops *, @@ -230,7 +239,14 @@ Index: gdb-7.7.90.20140613/gdb/target.c static int debug_to_region_ok_for_hw_watchpoint (struct target_ops *self, CORE_ADDR, LONGEST); -@@ -2959,7 +2959,7 @@ default_region_ok_for_hw_watchpoint (str + + static int debug_to_can_accel_watchpoint_condition (struct target_ops *self, +- CORE_ADDR, int, int, ++ CORE_ADDR, LONGEST, int, + struct expression *); + + static void debug_to_terminal_init (struct target_ops *self); +@@ -2960,7 +2960,7 @@ default_region_ok_for_hw_watchpoint (str static int default_watchpoint_addr_within_range (struct target_ops *target, CORE_ADDR addr, @@ -239,7 +255,16 @@ Index: gdb-7.7.90.20140613/gdb/target.c { return addr >= start && addr < start + length; } -@@ -3691,8 +3691,8 @@ debug_to_can_accel_watchpoint_condition +@@ -3681,7 +3681,7 @@ debug_to_region_ok_for_hw_watchpoint (st + + static int + debug_to_can_accel_watchpoint_condition (struct target_ops *self, +- CORE_ADDR addr, int len, int rw, ++ CORE_ADDR addr, LONGEST len, int rw, + struct expression *cond) + { + int retval; +@@ -3692,8 +3692,8 @@ debug_to_can_accel_watchpoint_condition fprintf_unfiltered (gdb_stdlog, "target_can_accel_watchpoint_condition " @@ -250,7 +275,7 @@ Index: gdb-7.7.90.20140613/gdb/target.c host_address_to_string (cond), (unsigned long) retval); return retval; } -@@ -3727,7 +3727,7 @@ debug_to_stopped_data_address (struct ta +@@ -3728,7 +3728,7 @@ debug_to_stopped_data_address (struct ta static int debug_to_watchpoint_addr_within_range (struct target_ops *target, CORE_ADDR addr, @@ -259,7 +284,7 @@ Index: gdb-7.7.90.20140613/gdb/target.c { int retval; -@@ -3735,9 +3735,9 @@ debug_to_watchpoint_addr_within_range (s +@@ -3736,9 +3736,9 @@ debug_to_watchpoint_addr_within_range (s start, length); fprintf_filtered (gdb_stdlog, @@ -271,10 +296,10 @@ Index: gdb-7.7.90.20140613/gdb/target.c return retval; } -Index: gdb-7.7.90.20140613/gdb/target.h +Index: gdb-7.8/gdb/target.h =================================================================== ---- gdb-7.7.90.20140613.orig/gdb/target.h 2014-06-13 22:23:54.683492219 +0200 -+++ gdb-7.7.90.20140613/gdb/target.h 2014-06-13 22:25:41.372613039 +0200 +--- gdb-7.8.orig/gdb/target.h 2014-08-01 23:27:30.207773708 +0200 ++++ gdb-7.8/gdb/target.h 2014-08-01 23:29:38.315944839 +0200 @@ -469,7 +469,7 @@ struct target_ops int (*to_stopped_data_address) (struct target_ops *, CORE_ADDR *) TARGET_DEFAULT_RETURN (0); @@ -284,10 +309,19 @@ Index: gdb-7.7.90.20140613/gdb/target.h TARGET_DEFAULT_FUNC (default_watchpoint_addr_within_range); /* Documentation of this routine is provided with the corresponding -Index: gdb-7.7.90.20140613/gdb/aarch64-linux-nat.c +@@ -479,7 +479,7 @@ struct target_ops + TARGET_DEFAULT_FUNC (default_region_ok_for_hw_watchpoint); + + int (*to_can_accel_watchpoint_condition) (struct target_ops *, +- CORE_ADDR, int, int, ++ CORE_ADDR, LONGEST, int, + struct expression *) + TARGET_DEFAULT_RETURN (0); + int (*to_masked_watch_num_registers) (struct target_ops *, +Index: gdb-7.8/gdb/aarch64-linux-nat.c =================================================================== ---- gdb-7.7.90.20140613.orig/gdb/aarch64-linux-nat.c 2014-06-13 22:23:09.647440718 +0200 -+++ gdb-7.7.90.20140613/gdb/aarch64-linux-nat.c 2014-06-13 22:23:54.683492219 +0200 +--- gdb-7.8.orig/gdb/aarch64-linux-nat.c 2014-08-01 23:27:30.212773715 +0200 ++++ gdb-7.8/gdb/aarch64-linux-nat.c 2014-08-01 23:27:30.248773763 +0200 @@ -428,14 +428,14 @@ aarch64_notify_debug_reg_change (const s static void aarch64_show_debug_reg_state (struct aarch64_debug_reg_state *state, @@ -366,10 +400,10 @@ Index: gdb-7.7.90.20140613/gdb/aarch64-linux-nat.c { return start <= addr && start + length - 1 >= addr; } -Index: gdb-7.7.90.20140613/gdb/target-delegates.c +Index: gdb-7.8/gdb/target-delegates.c =================================================================== ---- gdb-7.7.90.20140613.orig/gdb/target-delegates.c 2014-06-13 22:22:37.917404611 +0200 -+++ gdb-7.7.90.20140613/gdb/target-delegates.c 2014-06-13 22:26:06.092640924 +0200 +--- gdb-7.8.orig/gdb/target-delegates.c 2014-08-01 23:27:30.212773715 +0200 ++++ gdb-7.8/gdb/target-delegates.c 2014-08-01 23:29:38.313944877 +0200 @@ -261,7 +261,7 @@ tdefault_stopped_data_address (struct ta } @@ -379,3 +413,20 @@ Index: gdb-7.7.90.20140613/gdb/target-delegates.c { self = self->beneath; return self->to_watchpoint_addr_within_range (self, arg1, arg2, arg3); +@@ -275,14 +275,14 @@ delegate_region_ok_for_hw_watchpoint (st + } + + static int +-delegate_can_accel_watchpoint_condition (struct target_ops *self, CORE_ADDR arg1, int arg2, int arg3, struct expression *arg4) ++delegate_can_accel_watchpoint_condition (struct target_ops *self, CORE_ADDR arg1, LONGEST arg2, int arg3, struct expression *arg4) + { + self = self->beneath; + return self->to_can_accel_watchpoint_condition (self, arg1, arg2, arg3, arg4); + } + + static int +-tdefault_can_accel_watchpoint_condition (struct target_ops *self, CORE_ADDR arg1, int arg2, int arg3, struct expression *arg4) ++tdefault_can_accel_watchpoint_condition (struct target_ops *self, CORE_ADDR arg1, LONGEST arg2, int arg3, struct expression *arg4) + { + return 0; + } diff --git a/gdb-testsuite-pagination-read1.patch b/gdb-testsuite-pagination-read1.patch deleted file mode 100644 index d0c2a82..0000000 --- a/gdb-testsuite-pagination-read1.patch +++ /dev/null @@ -1,415 +0,0 @@ -http://sourceware.org/ml/gdb-patches/2014-07/msg00593.html -Subject: Re: [testsuite patch] Fix paginate-*.exp race for "read1" - -Hi Jan, - -Thanks for noticing this. It'd be very nice IMO to put that read1 -trick in the sources somewhere, to make it easy (easier) to use. Ideally -we'd have a simple Makefile flag to activate it, like 'make check READ1="1"' -or some such, but really just putting the files as attached to the PR, as -is, with absolutely no other glue at all, not even a Makefile, under -gdb/contrib/read1 or some such would already be great. We can always -improve and integrate things more incrementally. WDYT? - -On 07/22/2014 06:36 PM, Jan Kratochvil wrote: - -> + global saw_continuing -> set saw_continuing 0 -> set test "continue to pagination" -> - gdb_test_multiple "$command" $test { -> - -re "$pagination_prompt$" { -> - if {$saw_continuing} { -> - pass $test -> - } else { -> - send_gdb "\n" -> - exp_continue -> - } -> + gdb_test_pagination $command $test { -> + global saw_continuing -> + if {$saw_continuing} { -> + pass $test -> + } else { -> + send_gdb "\n" -> + exp_continue -> } -> + } { -> -re "Continuing" { -> + global saw_continuing -> set saw_continuing 1 - -The need for these "global"s indicates an issue -with uplevel/upvar in the new procedure. - -> exp_continue -> } -> - -notransfer -re "" { -> - # Otherwise gdb_test_multiple considers this an error. -> - exp_continue -> - } -> } -> -> # We're now stopped in a pagination query while handling a - -> +proc gdb_test_pagination { command test { code_prompt3 {} } { code_append {} } } { -... -> + append code_append { -... -> + -re "${pagination_prompt3}$" { -> + if { $saw_pagination_prompt != 2 } { -> + fail "$test (3)" -> + } -> + set saw_pagination_prompt 3 -> + eval $code_prompt3 - -The issue is that $code_prompt3 and $code_append should really be -evaluated in this function's caller ... - -> + } -> + } -> + -> + set saw_pagination_prompt 0 -> + gdb_test_multiple $command $test $code_append - -... but gdb_test_multiple evaluates the passed in $code_append -in the context of "uplevel 1" (and likewise it does a couple -upvar's with level one. To make that work, you'd need to -rename gdb_test_multiple to gdb_test_multiple_with_level or -some such, add a 'level' parameter, and pass that as level to -the existing uplevel/upvar calls. Then in gdb_test_pagination -you'd pass in "two levels up", like: - - gdb_test_multiple_with_level 2 $command $test $code_append - -instead, and likewise gdb_test_multiple would be reimplemented in -terms of gdb_test_multiple_with_level. - -But... We don't really need ... - -> +# Prevent gdb_test_multiple considering an error -re "" match. -> +# For unknown reason -notransfer -re "" { exp_continue } does not -> +# prevent it. -> + -> +proc gdb_test_pagination { command test { code_prompt3 {} } { code_append {} } } { -> + global pagination_prompt1 pagination_prompt2 pagination_prompt3 -> + global gdb_prompt -> + -> + # A regexp that matches the pagination prompt. -> + set pagination_prompt1 "---Type + set pagination_prompt2 "> to continue, or q + set pagination_prompt3 "> to quit---" -> + - -... this, if we instead tackle what IMO is the root of the -issue, and make gdb_test_multiple match the whole pagination -prompt, like in the patch below. I should really have done -this in the first place. :-/ - -This fixes the races for me, even when stressing them in -parallel mode, as mentioned in the commit log. -Does this fix them for you too? - ----------- ->From 0c6260e734bdb28272119d50b0150fb777a458ab Mon Sep 17 00:00:00 2001 -From: Pedro Alves -Date: Wed, 23 Jul 2014 17:00:21 +0100 -Subject: [PATCH] Fix paginate-*.exp races -Subject: [PATCH] Fix paginate-*.exp races - -These testcases have racy results: - - gdb.base/double-prompt-target-event-error.exp - gdb.base/paginate-after-ctrl-c-running.exp - gdb.base/paginate-bg-execution.exp - gdb.base/paginate-execution-startup.exp - gdb.base/paginate-inferior-exit.exp - -This is easily reproducible with "read1" from: - - [reproducer for races of expect incomplete reads] - http://sourceware.org/bugzilla/show_bug.cgi?id=12649 - -The '-notransfer -re "" { exp_continue }' trick in the current -tests doesn't actually work. - -The issue that led to the -notransfer trick was that - - "---Type to continue, or q to quit---" - -has two ""s. If one wants gdb_test_multiple to not hit the -built-in "" match that results in FAIL, one has to expect the -pagination prompt in chunks, first up to the first "", then -again, up to the second. Something around these lines: - - gdb_test_multiple "" $test { - -re "" { - exp_continue - } - -re "to quit ---" { - pass $test - } - } - -The intent was for -notransfer+exp_continue to make expect fetch more -input, and rerun the matches against the now potentially fuller -buffer, and then eventually the -re that includes the full pagination -prompt regex would match instead (because it's listed higher up, it -would match first). But, once that "" -notransfer -re -matches, it keeps re-matching forever. It seems like with -exp_continue, expect immediately retries matching, instead of first -reading in more data into the buffer, if available. - -Fix this like I should have done in the first place. There's actually -no good reason for gdb_test_multiple to only match "". We can -make gdb_test_multiple expect the whole pagination prompt text -instead, which is store in the 'pagination_prompt' global (similar to -'gdb_prompt'). Then a gdb_test_multiple caller that doesn't want the -default match to trigger, because it wants to see one pagination -prompt, does simply: - - gdb_test_multiple "" $test { - -re "$pagination_prompt$" { - pass $test - } - } - -which is just like when we don't want the default $gdb_prompt match -within gdb_test_multiple to trigger, like: - - gdb_test_multiple "" $test { - -re "$gdb_prompt $" { - pass $test - } - } - -Tested on x86_64 Fedora 20. In addition, I've let the racy tests run -all in parallel in a loop for 30 minutes, and they never failed. - -gdb/testsuite/ -2014-07-24 Pedro Alves - - * gdb.base/double-prompt-target-event-error.exp - (cancel_pagination_in_target_event): Remove '-notransfer ' - match. - (cancel_pagination_in_target_event): Rework double prompt - detection. - * gdb.base/paginate-after-ctrl-c-running.exp - (test_ctrlc_while_target_running_paginates): Remove '-notransfer - ' match. - * gdb.base/paginate-bg-execution.exp - (test_bg_execution_pagination_return) - (test_bg_execution_pagination_cancel): Remove '-notransfer - ' matches. - * gdb.base/paginate-execution-startup.exp - (test_fg_execution_pagination_return) - (test_fg_execution_pagination_cancel): Remove '-notransfer - ' matches. - * gdb.base/paginate-inferior-exit.exp - (test_paginate_inferior_exited): Remove '-notransfer ' - match. - * lib/gdb-utils.exp (string_to_regexp): Move here from lib/gdb.exp. - * lib/gdb.exp (pagination_prompt): Run text through - string_to_regexp. - (gdb_test_multiple): Match $pagination_prompt instead of - "". - (string_to_regexp): Move to lib/gdb-utils.exp. ---- - .../gdb.base/double-prompt-target-event-error.exp | 26 +++++++++++++--------- - .../gdb.base/paginate-after-ctrl-c-running.exp | 4 ---- - gdb/testsuite/gdb.base/paginate-bg-execution.exp | 9 -------- - .../gdb.base/paginate-execution-startup.exp | 8 ------- - gdb/testsuite/gdb.base/paginate-inferior-exit.exp | 4 ---- - gdb/testsuite/lib/gdb-utils.exp | 9 ++++++++ - gdb/testsuite/lib/gdb.exp | 14 +++--------- - 7 files changed, 28 insertions(+), 46 deletions(-) - -diff --git a/gdb/testsuite/gdb.base/double-prompt-target-event-error.exp b/gdb/testsuite/gdb.base/double-prompt-target-event-error.exp -index 5571cdf..84c6c45 100644 ---- a/gdb/testsuite/gdb.base/double-prompt-target-event-error.exp -+++ b/gdb/testsuite/gdb.base/double-prompt-target-event-error.exp -@@ -75,10 +75,6 @@ proc cancel_pagination_in_target_event { command } { - set saw_continuing 1 - exp_continue - } -- -notransfer -re "" { -- # Otherwise gdb_test_multiple considers this an error. -- exp_continue -- } - } - - # We're now stopped in a pagination query while handling a -@@ -87,18 +83,28 @@ proc cancel_pagination_in_target_event { command } { - # output. - send_gdb "\003p 1\n" - -+ # Note gdb_test_multiple has a default match for the prompt, -+ # which issues a FAIL. Consume the first prompt. -+ set test "first prompt" -+ gdb_test_multiple "" $test { -+ -re "$gdb_prompt" { -+ pass "first prompt" -+ } -+ } -+ -+ # We should only see one prompt more, and it should be -+ # preceeded by print's output. - set test "no double prompt" - gdb_test_multiple "" $test { -- -re "$gdb_prompt.*$gdb_prompt.*$gdb_prompt $" { -+ -re "$gdb_prompt.*$gdb_prompt $" { -+ # The bug is present, and expect managed to read -+ # enough characters into the buffer to fill it with -+ # both prompts. - fail $test - } -- -re "$gdb_prompt .* = 1\r\n$gdb_prompt $" { -+ -re " = 1\r\n$gdb_prompt $" { - pass $test - } -- -notransfer -re "" { -- # Otherwise gdb_test_multiple considers this an error. -- exp_continue -- } - } - - # In case the board file wants to send further commands. -diff --git a/gdb/testsuite/gdb.base/paginate-after-ctrl-c-running.exp b/gdb/testsuite/gdb.base/paginate-after-ctrl-c-running.exp -index 0ed8c92..5898d5b 100644 ---- a/gdb/testsuite/gdb.base/paginate-after-ctrl-c-running.exp -+++ b/gdb/testsuite/gdb.base/paginate-after-ctrl-c-running.exp -@@ -70,10 +70,6 @@ proc test_ctrlc_while_target_running_paginates {} { - -re "$gdb_prompt $" { - gdb_assert $saw_pagination_prompt $test - } -- -notransfer -re "" { -- # Otherwise gdb_test_multiple considers this an error. -- exp_continue -- } - } - - # Confirm GDB can still process input. -diff --git a/gdb/testsuite/gdb.base/paginate-bg-execution.exp b/gdb/testsuite/gdb.base/paginate-bg-execution.exp -index dcff8ad..116cc2b 100644 ---- a/gdb/testsuite/gdb.base/paginate-bg-execution.exp -+++ b/gdb/testsuite/gdb.base/paginate-bg-execution.exp -@@ -51,11 +51,6 @@ proc test_bg_execution_pagination_return {} { - send_gdb "\n" - exp_continue - } -- -notransfer -re "" { -- # Otherwise gdb_test_multiple considers this an -- # error. -- exp_continue -- } - -re "after sleep\[^\r\n\]+\r\n$" { - gdb_assert $saw_pagination_prompt $test - } -@@ -96,10 +91,6 @@ proc test_bg_execution_pagination_cancel { how } { - -re "$pagination_prompt$" { - pass $test - } -- -notransfer -re "" { -- # Otherwise gdb_test_multiple considers this an error. -- exp_continue -- } - } - - set test "cancel pagination" -diff --git a/gdb/testsuite/gdb.base/paginate-execution-startup.exp b/gdb/testsuite/gdb.base/paginate-execution-startup.exp -index dc713ec..1628a0f 100644 ---- a/gdb/testsuite/gdb.base/paginate-execution-startup.exp -+++ b/gdb/testsuite/gdb.base/paginate-execution-startup.exp -@@ -111,10 +111,6 @@ proc test_fg_execution_pagination_return {} { - send_gdb "\n" - exp_continue - } -- -notransfer -re "" { -- # Otherwise gdb_test_multiple considers this an error. -- exp_continue -- } - -re "$gdb_prompt $" { - gdb_assert $saw_pagination_prompt $test - } -@@ -154,10 +150,6 @@ proc test_fg_execution_pagination_cancel { how } { - -re "$pagination_prompt$" { - pass $test - } -- -notransfer -re "" { -- # Otherwise gdb_test_multiple considers this an error. -- exp_continue -- } - } - - set test "cancel pagination" -diff --git a/gdb/testsuite/gdb.base/paginate-inferior-exit.exp b/gdb/testsuite/gdb.base/paginate-inferior-exit.exp -index 0e37be9..7c63289 100644 ---- a/gdb/testsuite/gdb.base/paginate-inferior-exit.exp -+++ b/gdb/testsuite/gdb.base/paginate-inferior-exit.exp -@@ -58,10 +58,6 @@ proc test_paginate_inferior_exited {} { - set saw_starting 1 - exp_continue - } -- -notransfer -re "" { -- # Otherwise gdb_test_multiple considers this an error. -- exp_continue -- } - } - - # We're now stopped in a pagination output while handling a -diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp -index 7a00efb..8cb98ae 100644 ---- a/gdb/testsuite/lib/gdb.exp -+++ b/gdb/testsuite/lib/gdb.exp -@@ -71,7 +71,15 @@ if ![info exists gdb_prompt] then { - } - - # A regexp that matches the pagination prompt. -+# Given an input string, adds backslashes as needed to create a -+# regexp that will match the string. -+ -+proc string_to_regexp {str} { -+ set result $str -+ regsub -all {[]*+.|()^$\[\\]} $str {\\&} result -+ return $result -+} --set pagination_prompt "---Type to continue, or q to quit---" -+set pagination_prompt [string_to_regexp "---Type to continue, or q to quit---"] - - # The variable fullname_syntax_POSIX is a regexp which matches a POSIX - # absolute path ie. /foo/ -@@ -649,7 +649,7 @@ proc gdb_internal_error_resync {} { - # - proc gdb_test_multiple { command message user_code } { - global verbose use_gdb_stub -- global gdb_prompt -+ global gdb_prompt pagination_prompt - global GDB - global inferior_exited_re - upvar timeout timeout -@@ -873,7 +873,7 @@ proc gdb_test_multiple { command message user_code } { - } - set result 1 - } -- "" { -+ -re "$pagination_prompt" { - send_gdb "\n" - perror "Window too small." - fail "$message" -@@ -1109,14 +1109,6 @@ proc test_print_reject { args } { - } - } - --# Given an input string, adds backslashes as needed to create a --# regexp that will match the string. -- --proc string_to_regexp {str} { -- set result $str -- regsub -all {[]*+.|()^$\[\\]} $str {\\&} result -- return $result --} - - # Same as gdb_test, but the second parameter is not a regexp, - # but a string that must match exactly. --- -1.9.3 - - diff --git a/gdb-upstream.patch b/gdb-upstream.patch index 0d17e73..028fe7a 100644 --- a/gdb-upstream.patch +++ b/gdb-upstream.patch @@ -65,91 +65,3 @@ index 0e0202d..d849b4c 100644 # gdbserver does not have this issue. if ![is_remote target] { setup_kfail "*-*-*" gdb/15934 - - - -commit c46269f24eccce534b3cababbf47c6b6b290ed03 -Author: Pedro Alves -Date: Thu Jul 24 16:00:37 2014 +0100 - - Fix pagination crash when the TUI is active - - The TUI currently crashes when the user types in response to - a pagination prompt: - - $ gdb --tui ... - *the TUI is now active* - (gdb) set height 2 - (gdb) help - List of classes of commands: - - Program received signal SIGSEGV, Segmentation fault. - strlen () at ../sysdeps/x86_64/strlen.S:106 - 106 movdqu (%rax), %xmm12 - - (top-gdb) bt - #0 strlen () at ../sysdeps/x86_64/strlen.S:106 - #1 0x000000000086be5f in xstrdup (s=0x0) at ../src/libiberty/xstrdup.c:33 - #2 0x00000000005163f9 in tui_prep_terminal (notused1=1) at ../src/gdb/tui/tui-io.c:296 - #3 0x000000000077a7ee in _rl_callback_newline () at ../src/readline/callback.c:82 - #4 0x000000000077a853 in rl_callback_handler_install (prompt=0x0, linefunc=0x618b60 ) at ../src/readline/callback.c:102 - #5 0x0000000000718a5c in gdb_readline_wrapper_cleanup (arg=0xfd14d0) at ../src/gdb/top.c:788 - #6 0x0000000000596d08 in do_my_cleanups (pmy_chain=0xcf0b38 , old_chain=0x1043d10) at ../src/gdb/cleanups.c:155 - #7 0x0000000000596d75 in do_cleanups (old_chain=0x1043d10) at ../src/gdb/cleanups.c:177 - #8 0x0000000000718bd9 in gdb_readline_wrapper (prompt=0x7fffffffcfa0 "---Type to continue, or q to quit---") - at ../src/gdb/top.c:835 - #9 0x000000000071cf74 in prompt_for_continue () at ../src/gdb/utils.c:1894 - #10 0x000000000071d434 in fputs_maybe_filtered (linebuffer=0x1043db0 "List of classes of commands:\n\n", stream=0xf72e20, filter=1) - at ../src/gdb/utils.c:2111 - #11 0x000000000071da0f in vfprintf_maybe_filtered (stream=0xf72e20, format=0x89aef8 "List of classes of %scommands:\n\n", args=0x7fffffffd118, filter=1) - at ../src/gdb/utils.c:2339 - #12 0x000000000071da4a in vfprintf_filtered (stream=0xf72e20, format=0x89aef8 "List of classes of %scommands:\n\n", args=0x7fffffffd118) - at ../src/gdb/utils.c:2347 - #13 0x000000000071dc72 in fprintf_filtered (stream=0xf72e20, format=0x89aef8 "List of classes of %scommands:\n\n") at ../src/gdb/utils.c:2399 - #14 0x00000000004f90ab in help_list (list=0xe6d100, cmdtype=0x89ad8c "", class=all_classes, stream=0xf72e20) - at ../src/gdb/cli/cli-decode.c:1038 - #15 0x00000000004f8dba in help_cmd (arg=0x0, stream=0xf72e20) at ../src/gdb/cli/cli-decode.c:946 - - Git 0017922 added: - - @@ -776,6 +777,12 @@ gdb_readline_wrapper_cleanup (void *arg) - - gdb_assert (input_handler == gdb_readline_wrapper_line); - input_handler = cleanup->handler_orig; - + - + /* Reinstall INPUT_HANDLER in readline, without displaying a - + prompt. */ - + if (async_command_editing_p) - + rl_callback_handler_install (NULL, input_handler); - - and tui_prep_terminal simply misses handling the case of a NULL - rl_prompt. - - I also checked that readline's sources do similar checks. - - gdb/ - 2014-07-24 Pedro Alves - - * tui/tui-io.c (tui_prep_terminal): Handle NULL rl_prompt. - -### a/gdb/ChangeLog -### b/gdb/ChangeLog -## -1,3 +1,7 @@ -+2014-07-24 Pedro Alves -+ -+ * tui/tui-io.c (tui_prep_terminal): Handle NULL rl_prompt. -+ - 2014-07-22 Jan Kratochvil - - * stack.c (read_frame_arg): Verify value_optimized_out before calling ---- a/gdb/tui/tui-io.c -+++ b/gdb/tui/tui-io.c -@@ -293,7 +293,7 @@ tui_prep_terminal (int notused1) - (we can't use gdb_prompt() due to secondary prompts and can't use - rl_prompt because it points to an alloca buffer). */ - xfree (tui_rl_saved_prompt); -- tui_rl_saved_prompt = xstrdup (rl_prompt); -+ tui_rl_saved_prompt = rl_prompt != NULL ? xstrdup (rl_prompt) : NULL; - } - - /* Readline callback to restore the terminal. It is called once each diff --git a/gdb-vla-intel-stringbt-fix.patch b/gdb-vla-intel-stringbt-fix.patch new file mode 100644 index 0000000..937f8fe --- /dev/null +++ b/gdb-vla-intel-stringbt-fix.patch @@ -0,0 +1,165 @@ +http://sourceware.org/ml/gdb-patches/2014-08/msg00025.html +Subject: [patch 1/2] Re: Crash regression(?) printing Fortran strings in bt [Re: [V2 00/23] Fortran dynamic array support] + + +--FCuugMFkClbJLl1L +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline + +On Fri, 01 Aug 2014 09:20:19 +0200, Keven Boell wrote: +> I just tried it on Fedora 20 i686. Applied the patch, you mentioned, on top of +> the Fortran VLA series and executed your dynamic-other-frame test. Everything +> is working fine here, I cannot reproduce the crash. + +I have it reproducible on Fedora 20 i686 with plain +CFLAGS=-g ./configure;make;cd gdb/testsuite;make site.exp;runtest gdb.fortran/dynamic-other-frame.exp + +Besides that I have updated the testcase with + gdb_test_no_output "set print frame-arguments all" +so that there is no longer needed the patch: + [patch] Display Fortran strings in backtraces + https://sourceware.org/ml/gdb-patches/2014-07/msg00709.html + +The fix below has no regressions for me. Unfortunately I do not see why you +cannot reproduce it. + + +Thanks, +Jan + +--FCuugMFkClbJLl1L +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline; filename="vlastringonly.patch" + +diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c +index 53cae2c..cf7ac26 100644 +--- a/gdb/gdbtypes.c ++++ b/gdb/gdbtypes.c +@@ -1659,6 +1659,7 @@ is_dynamic_type_internal (struct type *type, int top_level) + return !has_static_range (TYPE_RANGE_DATA (type)); + + case TYPE_CODE_ARRAY: ++ case TYPE_CODE_STRING: + { + gdb_assert (TYPE_NFIELDS (type) == 1); + +diff --git a/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90 b/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90 +new file mode 100644 +index 0000000..261ce17 +--- /dev/null ++++ b/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90 +@@ -0,0 +1,24 @@ ++! Copyright 2010 Free Software Foundation, Inc. ++! ++! This program is free software; you can redistribute it and/or modify ++! it under the terms of the GNU General Public License as published by ++! the Free Software Foundation; either version 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. ++! ++! Ihis file is the Fortran source file for dynamic.exp. ++! Original file written by Jakub Jelinek . ++! Modified for the GDB testcase by Jan Kratochvil . ++ ++subroutine bar ++ real :: dummy ++ dummy = 1 ++end subroutine bar +diff --git a/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp b/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp +new file mode 100644 +index 0000000..570a28c +--- /dev/null ++++ b/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp +@@ -0,0 +1,39 @@ ++# Copyright 2010 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 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. ++ ++set testfile "dynamic-other-frame" ++set srcfile1 ${testfile}.f90 ++set srcfile2 ${testfile}-stub.f90 ++set objfile2 [standard_output_file ${testfile}-stub.o] ++set executable ${testfile} ++set binfile [standard_output_file ${executable}] ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${objfile2}" object {f90}] != "" ++ || [gdb_compile "${srcdir}/${subdir}/${srcfile1} ${objfile2}" "${binfile}" executable {debug f90}] != "" } { ++ untested "Couldn't compile ${srcfile1} or ${srcfile2}" ++ return -1 ++} ++ ++clean_restart ${executable} ++ ++gdb_test_no_output "set print frame-arguments all" ++ ++if ![runto bar_] then { ++ perror "couldn't run to bar_" ++ continue ++} ++ ++gdb_test "bt" {foo \(string='hello'.*} +diff --git a/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90 b/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90 +new file mode 100644 +index 0000000..2bc637d +--- /dev/null ++++ b/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90 +@@ -0,0 +1,36 @@ ++! Copyright 2010 Free Software Foundation, Inc. ++! ++! This program is free software; you can redistribute it and/or modify ++! it under the terms of the GNU General Public License as published by ++! the Free Software Foundation; either version 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. ++! ++! Ihis file is the Fortran source file for dynamic.exp. ++! Original file written by Jakub Jelinek . ++! Modified for the GDB testcase by Jan Kratochvil . ++ ++subroutine foo (string) ++ interface ++ subroutine bar ++ end subroutine ++ end interface ++ character string*(*) ++ call bar ! stop-here ++end subroutine foo ++program test ++ interface ++ subroutine foo (string) ++ character string*(*) ++ end subroutine ++ end interface ++ call foo ('hello') ++end + +--FCuugMFkClbJLl1L-- + diff --git a/gdb.spec b/gdb.spec index 85ce0b2..c9cdbe5 100644 --- a/gdb.spec +++ b/gdb.spec @@ -18,21 +18,21 @@ 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 20140724 +%global snapsrc 20140611 # See timestamp of source gnulib installed into gdb/gnulib/ . %global snapgnulib 20121213 -%global tarname gdb-7.7.91.%{snapsrc} +%global tarname gdb-%{version} Version: 7.8 # 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: 14%{?dist} +Release: 15%{?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 # Do not provide URL for snapshots as the file lasts there only for 2 days. -# ftp://sourceware.org/pub/gdb/releases/gdb-%{version}.tar.bz2 -Source: %{tarname}.tar.bz2 +# ftp://sourceware.org/pub/gdb/releases/gdb-%{version}.tar.gz +Source: %{tarname}.tar.gz Buildroot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) URL: http://gnu.org/software/gdb/ @@ -509,6 +509,7 @@ Patch852: gdb-gnat-dwarf-crash-3of3.patch Patch887: gdb-archer-vla-tests.patch Patch888: gdb-vla-intel.patch Patch912: gdb-vla-intel-04of23-fix.patch +Patch889: gdb-vla-intel-stringbt-fix.patch # Fix --with-system-readline with readline-6.3 patch 5. Patch914: gdb-readline-6.3.5.patch @@ -520,8 +521,8 @@ Patch918: gdb-btrobust.patch Patch920: gdb-python-completer-1of2.patch Patch921: gdb-python-completer-2of2.patch -# [testsuite] Fix paginate-*.exp race for "read1". -Patch924: gdb-testsuite-pagination-read1.patch +# Display Fortran strings in backtraces. +Patch925: gdb-fortran-frame-string.patch %if 0%{!?rhel:1} || 0%{?rhel} > 6 # RL_STATE_FEDORA_GDB would not be found for: @@ -699,6 +700,7 @@ find -name "*.info*"|xargs rm -f %patch232 -p1 %patch888 -p1 %patch912 -p1 +%patch889 -p1 %patch1 -p1 %patch105 -p1 @@ -801,7 +803,7 @@ find -name "*.info*"|xargs rm -f %patch918 -p1 %patch920 -p1 %patch921 -p1 -%patch924 -p1 +%patch925 -p1 %patch848 -p1 %if 0%{!?el6:1} @@ -1292,6 +1294,10 @@ then fi %changelog +* Sat Aug 2 2014 Jan Kratochvil - 7.8-15.fc21 +- Rebase to FSF GDB 7.8. +- Display Fortran strings in backtraces. + * Thu Jul 24 2014 Jan Kratochvil - 7.8-14.fc21 - Rebase to FSF GDB 7.7.91.20140724 (pre-7.8 snapshot). - Import TUI regression fix (Pedro Alves, BZ 1123003). diff --git a/sources b/sources index da00631..b7836be 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ 4981307aa9619bbec5b73261e4e41c8d gdb-libstdc++-v3-python-r155978.tar.bz2 -8d19580f8559ada4e6a3380a822a1451 gdb-7.7.91.20140724.tar.bz2 +38d816d641093db2e13ba284e26090b4 gdb-7.8.tar.gz