diff --git a/gdb-6.8-bz466901-backtrace-full-prelinked.patch b/gdb-6.8-bz466901-backtrace-full-prelinked.patch index 2211fa3..a3d1b4a 100644 --- a/gdb-6.8-bz466901-backtrace-full-prelinked.patch +++ b/gdb-6.8-bz466901-backtrace-full-prelinked.patch @@ -35,9 +35,9 @@ Index: gdb-6.8.50.20090909/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked.exp + +set testfile "dw2-loclist-prelinked" +set srcfuncfile ${testfile}-func.S -+set binsharedfuncfile ${objdir}/${subdir}/${testfile}.so ++set binsharedfuncfile [standard_output_file ${testfile}.so] +set srcmainfile ${testfile}-main.c -+set binfile ${objdir}/${subdir}/${testfile} ++set binfile [standard_output_file ${testfile}] + +remote_exec build "rm -f ${binfile}" + diff --git a/gdb-testsuite-dw2-undefined-ret-addr.patch b/gdb-testsuite-dw2-undefined-ret-addr.patch new file mode 100644 index 0000000..aae6063 --- /dev/null +++ b/gdb-testsuite-dw2-undefined-ret-addr.patch @@ -0,0 +1,68 @@ +http://sourceware.org/ml/gdb-patches/2016-04/msg00181.html +Subject: [testsuite patch] Fix 7.11 regression: gdb.dwarf2/dw2-undefined-ret-addr.exp [now with the patch] + + +--oyUTqETQ0mS9luUI +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline + +Hi, + +a038fa3e14a477d4d72a26c2e139fa47d2774be2 is the first bad commit +commit a038fa3e14a477d4d72a26c2e139fa47d2774be2 +Author: Markus Metzger + stack: check frame_unwind_caller_id +[PATCH v3 2/3] stack: check frame_unwind_caller_id +https://sourceware.org/ml/gdb-patches/2016-02/msg00363.html +Message-Id: <1455207283-12660-2-git-send-email-markus.t.metzger@intel.com> + + (gdb) PASS: gdb.dwarf2/dw2-undefined-ret-addr.exp: up refuses to go up + info frame + Stack level 0, frame at 0x0: +- rip = 0x40059a in stop_frame (dw2-undefined-ret-addr.c:22); saved rip = ++ rip = 0x40059a in stop_frame (dw2-undefined-ret-addr.c:22); saved rip = + Outermost frame: outermost + source language c. + Arglist at 0x7fffffffd610, args: + Locals at 0x7fffffffd610, Previous frame's sp is 0x7fffffffd620 + Saved registers: + rbp at 0x7fffffffd610 +-(gdb) PASS: gdb.dwarf2/dw2-undefined-ret-addr.exp: info frame ++(gdb) FAIL: gdb.dwarf2/dw2-undefined-ret-addr.exp: info frame + +It happens on normal native Fedora 23 x86_64. + +I am not completely sure about the reasons but it looks to me GDB behavior has +just changed. + +OK for check-in? + + +Thanks, +Jan + +--oyUTqETQ0mS9luUI +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline; filename=1 + +gdb/testsuite/ChangeLog +2016-04-08 Jan Kratochvil + + * gdb.dwarf2/dw2-undefined-ret-addr.exp: Expect . + +diff --git a/gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.exp b/gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.exp +index c666584..e43054b 100644 +--- a/gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.exp ++++ b/gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.exp +@@ -48,7 +48,7 @@ gdb_test "up" \ + # doesn't cause an error, and shows "". + gdb_test "info frame" [multi_line \ + "Stack level 0, frame at $hex\:" \ +- " rip = $hex in stop_frame \\(dw2-undefined-ret-addr\\.c:22\\); saved rip = " \ ++ " rip = $hex in stop_frame \\(dw2-undefined-ret-addr\\.c:22\\); saved rip = " \ + " Outermost frame: outermost" \ + " source language c\\." \ + " Arglist at $hex, args\: " \ + +--oyUTqETQ0mS9luUI-- + diff --git a/gdb-testsuite-readline63-sigint-revert.patch b/gdb-testsuite-readline63-sigint-revert.patch new file mode 100644 index 0000000..c5e1b2e --- /dev/null +++ b/gdb-testsuite-readline63-sigint-revert.patch @@ -0,0 +1,33 @@ +diff --git b/gdb/testsuite/gdb.gdb/selftest.exp a/gdb/testsuite/gdb.gdb/selftest.exp +index 7e6a4e1..969797a 100644 +--- b/gdb/testsuite/gdb.gdb/selftest.exp ++++ a/gdb/testsuite/gdb.gdb/selftest.exp +@@ -451,25 +451,9 @@ proc test_with_self { executable } { + } + + set description "send SIGINT signal to child process" +- gdb_test_multiple "signal SIGINT" "$description" { +- -re "^signal SIGINT\r\nContinuing with signal SIGINT.\r\nQuit\r\n" { +- pass "$description" +- } +- } +- +- set description "send ^C to child process again" +- send_gdb "\003" +- gdb_expect { +- -re "(Thread .*|Program) received signal SIGINT.*$gdb_prompt $" { +- pass "$description" +- } +- -re ".*$gdb_prompt $" { +- fail "$description" +- } +- timeout { +- fail "$description (timeout)" +- } +- } ++ gdb_test "signal SIGINT" \ ++ "Continuing with signal SIGINT.*" \ ++ "$description" + + # Switch back to the GDB thread if Guile support is linked in. + # "signal SIGINT" could also switch the current thread. diff --git a/gdb-upstream.patch b/gdb-upstream.patch index c261e75..d718502 100644 --- a/gdb-upstream.patch +++ b/gdb-upstream.patch @@ -2055,3 +2055,334 @@ Date: Thu Mar 31 19:28:47 2016 +0100 - one_jit_test 1 "${hex} jit_function_0000" + one_jit_test 1 "${hex} jit_function_0000" 0 } + + + +commit 2d35e871274a48331c4d6c7b3e4fbee42b901f33 +Author: Jan Kratochvil +Date: Thu Apr 7 22:18:49 2016 +0200 + + testsuite: Fix false FAILs with .bashrc GDBHISTFILE=... + + $ GDBHISTFILE=/tmp/gdbhistfile runtest gdb.base/gdbhistsize-history.exp gdb.base/gdbinit-history.exp + Running ./gdb.base/gdbinit-history.exp ... + FAIL: gdb.base/gdbinit-history.exp: home=gdbinit-history/unlimited gdbhistsize=1000: show commands + FAIL: gdb.base/gdbinit-history.exp: home=gdbinit-history/unlimited gdbhistsize=foo: show commands + Running ./gdb.base/gdbhistsize-history.exp ... + FAIL: gdb.base/gdbhistsize-history.exp: histsize=: show commands + FAIL: gdb.base/gdbhistsize-history.exp: histsize=20: show commands + FAIL: gdb.base/gdbhistsize-history.exp: histsize= 20 : show commands + FAIL: gdb.base/gdbhistsize-history.exp: histsize=-5: show commands + FAIL: gdb.base/gdbhistsize-history.exp: histsize=not_an_integer: show commands + FAIL: gdb.base/gdbhistsize-history.exp: histsize=10zab: show commands + FAIL: gdb.base/gdbhistsize-history.exp: histsize=-5ab: show commands + FAIL: gdb.base/gdbhistsize-history.exp: histsize=99999999999999999999999999999999999: show commands + FAIL: gdb.base/gdbhistsize-history.exp: histsize=50: show commands + + This happens for my setup due to my: + $ grep GDB ~/.bashrc + export GDBHISTFILE="$HOME/.gdb_history" + + gdb/testsuite/ChangeLog + 2016-04-07 Jan Kratochvil + + * gdb.base/gdbhistsize-history.exp: Save and unset GDBHISTFILE and + GDBHISTSIZE prior to the tests. + * gdb.base/gdbinit-history.exp: Likewise. + +### a/gdb/testsuite/ChangeLog +### b/gdb/testsuite/ChangeLog +## -1,4 +1,10 @@ +-2015-04-07 Pedro Alves ++2016-04-07 Jan Kratochvil ++ ++ * gdb.base/gdbhistsize-history.exp: Save and unset GDBHISTFILE and ++ GDBHISTSIZE prior to the tests. ++ * gdb.base/gdbinit-history.exp: Likewise. ++ ++2016-04-07 Pedro Alves + + * gdb.compile/compile.exp: Use gdb_compile with "shlib=" option + instead of build_executable. Use gdb_load_shlibs. +--- a/gdb/testsuite/gdb.base/gdbhistsize-history.exp ++++ b/gdb/testsuite/gdb.base/gdbhistsize-history.exp +@@ -32,7 +32,13 @@ if { [is_remote host] } { + proc test_histsize_history_setting { histsize size { env_var "GDBHISTSIZE" } } { + global env + +- save_vars { env($env_var) } { ++ save_vars { env(GDBHISTFILE) env(GDBHISTSIZE) env($env_var) } { ++ # These environment variables take precedence over whatever ++ # history size is set in .gdbinit. Make sure the former is not ++ # set. ++ unset -nocomplain env(GDBHISTFILE) ++ unset -nocomplain env(GDBHISTSIZE) ++ + set env($env_var) $histsize + + with_test_prefix "histsize=$histsize" { +--- a/gdb/testsuite/gdb.base/gdbinit-history.exp ++++ b/gdb/testsuite/gdb.base/gdbinit-history.exp +@@ -36,12 +36,13 @@ proc test_gdbinit_history_setting { home size { gdbhistsize_val "-" } } { + global srcdir + global subdir + +- save_vars { INTERNAL_GDBFLAGS env(GDBHISTSIZE) env(HOME) } { ++ save_vars { INTERNAL_GDBFLAGS env(GDBHISTFILE) env(GDBHISTSIZE) env(HOME) } { + set env(HOME) "$srcdir/$subdir/$home" + +- # The GDBHISTSIZE environment variable takes precedence over whatever ++ # These environment variables take precedence over whatever + # history size is set in .gdbinit. Make sure the former is not + # set. ++ unset -nocomplain env(GDBHISTFILE) + unset -nocomplain env(GDBHISTSIZE) + + if { $gdbhistsize_val != "-" } { +@@ -77,10 +78,11 @@ proc test_no_truncation_of_unlimited_history_file { } { + global env + global INTERNAL_GDBFLAGS + +- save_vars { INTERNAL_GDBFLAGS env(GDBHISTSIZE) } { +- # The GDBHISTSIZE environment variable takes precedence over whatever ++ save_vars { INTERNAL_GDBFLAGS env(GDBHISTFILE) env(GDBHISTSIZE) } { ++ # These environment variables take precedence over whatever + # history size is set in .gdbinit. Make sure the former is not + # set. ++ unset -nocomplain env(GDBHISTFILE) + unset -nocomplain env(GDBHISTSIZE) + + set temp_gdbinit [standard_output_file "gdbinit-history.gdbinit"] + + + +commit 065005336492337c92d06e87544646635a5b9566 +Author: Jan Kratochvil +Date: Fri Apr 8 15:38:53 2016 +0200 + + testsuite: Fix for gcc-4.8: gdb.base/jit.exp gdb.base/jit-so.exp + + on CentOS-7.2 I get + + Running /home/jkratoch/redhat/gdb-test-reg/gdb/testsuite/gdb.base/jit.exp ... + FAIL: gdb.base/jit.exp: one_jit_test-1: continue to breakpoint: break here 2 (the program exited) + FAIL: gdb.base/jit.exp: one_jit_test-2: continue to breakpoint: break here 2 (the program exited) + FAIL: gdb.base/jit.exp: attach: one_jit_test-2: continue to breakpoint: break here 2 (the program exited) + FAIL: gdb.base/jit.exp: attach: one_jit_test-2: break here 2: set var wait_for_gdb = 1 + FAIL: gdb.base/jit.exp: attach: one_jit_test-2: break here 2: detach (the program is no longer running) + FAIL: gdb.base/jit.exp: attach: one_jit_test-2: break here 2: attach + FAIL: gdb.base/jit.exp: attach: one_jit_test-2: break here 2: set var wait_for_gdb = 0 + FAIL: gdb.base/jit.exp: PIE: one_jit_test-1: continue to breakpoint: break here 2 (the program exited) + Running /home/jkratoch/redhat/gdb-test-reg/gdb/testsuite/gdb.base/jit-so.exp ... + FAIL: gdb.base/jit-so.exp: one_jit_test-1: continue to breakpoint: break here 2 (the program exited) + FAIL: gdb.base/jit-so.exp: one_jit_test-2: continue to breakpoint: break here 2 (the program exited) + + since: + + 85af34ee0211eedf8d30a5c44dfc59dddf8b512a is the first bad commit + commit 85af34ee0211eedf8d30a5c44dfc59dddf8b512a + Author: Pedro Alves + Date: Thu Mar 31 19:28:47 2016 +0100 + Add regression test for PR gdb/19858 (JIT code registration on attach) + + The compiled code's .debug_line is wrong (for the simplistic approach of GDB + to put a breakpoint on the first address belonging to that source line) and so + GDB misses the breakpoint at the last line: + WAIT_FOR_GDB; return 0; /* gdb break here 2 */ + + Most of the patch is just about reindentation, no changes there. + + gdb/testsuite/ChangeLog + 2016-04-08 Jan Kratochvil + + Fix compatibility with gcc-4.8.5-4.el7.x86_64. + * gdb.base/jit-main.c: Use exit after usage. + +### a/gdb/testsuite/ChangeLog +### b/gdb/testsuite/ChangeLog +## -1,3 +1,8 @@ ++2016-04-08 Jan Kratochvil ++ ++ Fix compatibility with gcc-4.8.5-4.el7.x86_64. ++ * gdb.base/jit-main.c: Use exit after usage. ++ + 2016-04-07 Jan Kratochvil + + * gdb.base/gdbhistsize-history.exp: Save and unset GDBHISTFILE and +--- a/gdb/testsuite/gdb.base/jit-main.c ++++ b/gdb/testsuite/gdb.base/jit-main.c +@@ -138,7 +138,8 @@ MAIN (int argc, char *argv[]) + { + /* These variables are here so they can easily be set from jit.exp. */ + const char *libname = NULL; +- int count = 0; ++ int count = 0, i, fd; ++ struct stat st; + + alarm (300); + +@@ -147,90 +148,89 @@ MAIN (int argc, char *argv[]) + count = count; /* gdb break here 0 */ + + if (argc < 2) +- usage (argv[0]); +- else + { +- int i, fd; +- struct stat st; ++ usage (argv[0]); ++ exit (1); ++ } + +- if (libname == NULL) +- /* Only set if not already set from GDB. */ +- libname = argv[1]; ++ if (libname == NULL) ++ /* Only set if not already set from GDB. */ ++ libname = argv[1]; + +- if (argc > 2 && count == 0) +- /* Only set if not already set from GDB. */ +- count = atoi (argv[2]); ++ if (argc > 2 && count == 0) ++ /* Only set if not already set from GDB. */ ++ count = atoi (argv[2]); + +- printf ("%s:%d: libname = %s, count = %d\n", __FILE__, __LINE__, +- libname, count); ++ printf ("%s:%d: libname = %s, count = %d\n", __FILE__, __LINE__, ++ libname, count); + +- if ((fd = open (libname, O_RDONLY)) == -1) +- { +- fprintf (stderr, "open (\"%s\", O_RDONLY): %s\n", libname, +- strerror (errno)); +- exit (1); +- } ++ if ((fd = open (libname, O_RDONLY)) == -1) ++ { ++ fprintf (stderr, "open (\"%s\", O_RDONLY): %s\n", libname, ++ strerror (errno)); ++ exit (1); ++ } + +- if (fstat (fd, &st) != 0) +- { +- fprintf (stderr, "fstat (\"%d\"): %s\n", fd, strerror (errno)); +- exit (1); +- } ++ if (fstat (fd, &st) != 0) ++ { ++ fprintf (stderr, "fstat (\"%d\"): %s\n", fd, strerror (errno)); ++ exit (1); ++ } + +- for (i = 0; i < count; ++i) +- { +- const void *const addr = mmap (0, st.st_size, PROT_READ|PROT_WRITE, +- MAP_PRIVATE, fd, 0); +- struct jit_code_entry *const entry = calloc (1, sizeof (*entry)); +- +- if (addr == MAP_FAILED) +- { +- fprintf (stderr, "mmap: %s\n", strerror (errno)); +- exit (1); +- } +- +- update_locations (addr, i); +- +- /* Link entry at the end of the list. */ +- entry->symfile_addr = (const char *)addr; +- entry->symfile_size = st.st_size; +- entry->prev_entry = __jit_debug_descriptor.relevant_entry; +- __jit_debug_descriptor.relevant_entry = entry; +- +- if (entry->prev_entry != NULL) +- entry->prev_entry->next_entry = entry; +- else +- __jit_debug_descriptor.first_entry = entry; +- +- /* Notify GDB. */ +- __jit_debug_descriptor.action_flag = JIT_REGISTER_FN; +- __jit_debug_register_code (); +- } ++ for (i = 0; i < count; ++i) ++ { ++ const void *const addr = mmap (0, st.st_size, PROT_READ|PROT_WRITE, ++ MAP_PRIVATE, fd, 0); ++ struct jit_code_entry *const entry = calloc (1, sizeof (*entry)); ++ ++ if (addr == MAP_FAILED) ++ { ++ fprintf (stderr, "mmap: %s\n", strerror (errno)); ++ exit (1); ++ } ++ ++ update_locations (addr, i); ++ ++ /* Link entry at the end of the list. */ ++ entry->symfile_addr = (const char *)addr; ++ entry->symfile_size = st.st_size; ++ entry->prev_entry = __jit_debug_descriptor.relevant_entry; ++ __jit_debug_descriptor.relevant_entry = entry; ++ ++ if (entry->prev_entry != NULL) ++ entry->prev_entry->next_entry = entry; ++ else ++ __jit_debug_descriptor.first_entry = entry; ++ ++ /* Notify GDB. */ ++ __jit_debug_descriptor.action_flag = JIT_REGISTER_FN; ++ __jit_debug_register_code (); ++ } + +- WAIT_FOR_GDB; i = 0; /* gdb break here 1 */ ++ WAIT_FOR_GDB; i = 0; /* gdb break here 1 */ + +- /* Now unregister them all in reverse order. */ +- while (__jit_debug_descriptor.relevant_entry != NULL) +- { +- struct jit_code_entry *const entry = +- __jit_debug_descriptor.relevant_entry; +- struct jit_code_entry *const prev_entry = entry->prev_entry; +- +- if (prev_entry != NULL) +- { +- prev_entry->next_entry = NULL; +- entry->prev_entry = NULL; +- } +- else +- __jit_debug_descriptor.first_entry = NULL; +- +- /* Notify GDB. */ +- __jit_debug_descriptor.action_flag = JIT_UNREGISTER_FN; +- __jit_debug_register_code (); +- +- __jit_debug_descriptor.relevant_entry = prev_entry; +- free (entry); +- } ++ /* Now unregister them all in reverse order. */ ++ while (__jit_debug_descriptor.relevant_entry != NULL) ++ { ++ struct jit_code_entry *const entry = ++ __jit_debug_descriptor.relevant_entry; ++ struct jit_code_entry *const prev_entry = entry->prev_entry; ++ ++ if (prev_entry != NULL) ++ { ++ prev_entry->next_entry = NULL; ++ entry->prev_entry = NULL; ++ } ++ else ++ __jit_debug_descriptor.first_entry = NULL; ++ ++ /* Notify GDB. */ ++ __jit_debug_descriptor.action_flag = JIT_UNREGISTER_FN; ++ __jit_debug_register_code (); ++ ++ __jit_debug_descriptor.relevant_entry = prev_entry; ++ free (entry); + } ++ + WAIT_FOR_GDB; return 0; /* gdb break here 2 */ + } diff --git a/gdb.spec b/gdb.spec index 5d08151..c9ee37c 100644 --- a/gdb.spec +++ b/gdb.spec @@ -27,7 +27,7 @@ Version: 7.11 # 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: 66%{?dist} +Release: 67%{?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 @@ -549,6 +549,7 @@ Patch1073: gdb-opcodes-clflushopt-test.patch # [testsuite] Fix false selftest.exp FAIL from system readline-6.3+ (Patrick Palka). Patch1075: gdb-testsuite-readline63-sigint.patch +Patch1119: gdb-testsuite-readline63-sigint-revert.patch # [aarch64] Fix hardware watchpoints (RH BZ 1261564). #=fedoratest @@ -560,6 +561,9 @@ Patch1117: gdb-rhbz1318049-gdb-p-container-internal-error.patch # Add messages suggesting more recent RHEL gdbserver (RH BZ 1321114). Patch1118: gdb-container-rh-pkg.patch +# [testsuite] Fix 7.11 regression: gdb.dwarf2/dw2-undefined-ret-addr.exp +Patch1120: gdb-testsuite-dw2-undefined-ret-addr.patch + %if 0%{!?rhel:1} || 0%{?rhel} > 6 # RL_STATE_FEDORA_GDB would not be found for: # Patch642: gdb-readline62-ask-more-rh.patch @@ -864,12 +868,14 @@ find -name "*.info*"|xargs rm -f %patch642 -p1 %patch337 -p1 %patch331 -p1 -%patch1075 -p1 %patch1113 -p1 %patch1117 -p1 %patch1118 -p1 +%patch1120 -p1 +%patch1075 -p1 %if 0%{?rhel:1} && 0%{?rhel} <= 7 +%patch1119 -p1 %patch1044 -p1 %endif @@ -1385,6 +1391,9 @@ then fi %changelog +* Fri Apr 8 2016 Jan Kratochvil - 7.11-67.fc24 +- [testsuite] Fix several false FAILs. + * Wed Apr 6 2016 Jan Kratochvil - 7.11-66.fc24 - Import upstream 7.11 branch stable fixes.