commit 2c29df25b7c2ff006b45afd80ee6dd734ebbd47c Author: Sergio Durigan Junior Date: Sun Sep 11 16:53:09 2016 -0400 Fix false FAIL on gdb.base/stap-probe.exp, due to ICF optimization GCC 6's ICF optimization pass is making the declaration of 'm1' and 'm2', on gdb.base/stap-probe.c, to be unified. However, this leads to only one instance of the probe 'two' being created, which causes a failure on the testsuite (which expects a multi-location breakpoint to be inserted on the probe). This patch fixes this failure by declaring a dummy variable on 'm1', and using it as an argument to m1's version of probe 'two'. Since we do not care about the contents of the functions nor about the arguments of each probe 'two', this is OK. gdb/testsuite/ChangeLog: 2016-09-11 Sergio Durigan Junior Jan Kratochvil * gdb.base/stap-probe.c (m1): New variable 'dummy', necessary to make m1's definition to be different from m2's. Use 'dummy' as an argument for probe 'two'. ### a/gdb/testsuite/ChangeLog ### b/gdb/testsuite/ChangeLog ## -1,3 +1,10 @@ +2016-09-11 Sergio Durigan Junior + Jan Kratochvil + + * gdb.base/stap-probe.c (m1): New variable 'dummy', necessary to + make m1's definition to be different from m2's. Use 'dummy' as an + argument for probe 'two'. + 2016-09-10 Jon Beniston * lib/mi-support.exp (mi_gdb_target_load): Use target_sim_options --- a/gdb/testsuite/gdb.base/stap-probe.c +++ b/gdb/testsuite/gdb.base/stap-probe.c @@ -53,8 +53,13 @@ struct funcs static void m1 (void) { + /* m1 and m2 are equivalent, but because of some compiler + optimizations we have to make each of them unique. This is why + we have this dummy variable here. */ + volatile int dummy = 0; + if (TEST2) - STAP_PROBE (test, two); + STAP_PROBE1 (test, two, dummy); } static void commit f389f6fef76d7cf8e8beb7061edff2155c284898 Author: Jan Kratochvil Date: Wed Oct 5 21:56:46 2016 +0200 testsuite: Fix recent GCC FAIL: gdb.arch/i386-signal.exp gcc-6.2.1-2.fc24.x86_64 (gdb) backtrace 10^M (gdb) FAIL: gdb.arch/i386-signal.exp: backtrace 10 (gdb) disas/s Dump of assembler code for function main: .../gdb/testsuite/gdb.arch/i386-signal.c: 30 { 0x000000000040057f <+0>: push %rbp 0x0000000000400580 <+1>: mov %rsp,%rbp 31 setup (); 0x0000000000400583 <+4>: callq 0x400590 => 0x0000000000400588 <+9>: mov $0x0,%eax 32 } 0x000000000040058d <+14>: pop %rbp 0x000000000040058e <+15>: retq End of assembler dump. The .exp patch is an obvious typo fix I think. The regex was written to accept "ADDR in main" and I find it OK as checking .debug_line validity is not the purpose of this testfile. gcc-4.8.5-11.el7.x86_64 did not put the 'mov $0x0,%eax' instruction there at all so there was no problem with .debug_line. gdb/testsuite/ChangeLog 2016-10-05 Jan Kratochvil * gdb.arch/i386-signal.exp (backtrace 10): Fix #2 typo. ### a/gdb/testsuite/ChangeLog ### b/gdb/testsuite/ChangeLog ## -1,3 +1,7 @@ +2016-10-05 Jan Kratochvil + + * gdb.arch/i386-signal.exp (backtrace 10): Fix #2 typo. + 2016-10-05 Yao Qi * lib/gdb.exp (support_complex_tests): Return zero if --- a/gdb/testsuite/gdb.arch/i386-signal.exp +++ b/gdb/testsuite/gdb.arch/i386-signal.exp @@ -35,6 +35,6 @@ gdb_load ${binfile} runto func gdb_test "backtrace 10" \ - "#0 ($hex in )?func.*\r\n#1 \r\n#2 ($hex in)?main.*" + "#0 ($hex in )?func.*\r\n#1 \r\n#2 ($hex in )?main.*" gdb_test "finish" "Run till exit from \#0 func.*" commit 20c2c024c1e89e402a57e8c3577fb9777709d9a4 Author: Carl E. Love Date: Fri Aug 19 11:06:38 2016 -0700 Fix missing files for ld when test suite not compiled in the source directory This patch fixes an issues with six test suite expect files that do not run correctly when the test suite is not built in the source directory. The issue is these tests are not using the current "standard_testfile" call but rather using the older set command to initialize the "testfile", "srcfile" and "binprefix" variables or are missing the set for the "binprefix" variable. ----------------------------------------------- gdb/testsuite/ChangeLog 2016-08-19 Carl Love * gdb.arch/altivec-regs.exp: Use standard_testfile instead of maintaining separate logic for constructing the output path. * gdb.arch/powerpc-d128-regs.exp: Likewise. * gdb.arch/ppc-dfp.exp: Likewise. * gdb.arch/ppc-fp.exp: Likewise. * gdb.arch/vsx-regs.exp: Likewise. * gdb.arch/altivec-abi.exp: Likewise, plus added local variable binprefix for generating the additional binary files. ### a/gdb/testsuite/ChangeLog ### b/gdb/testsuite/ChangeLog ## -1,3 +1,14 @@ +2016-08-19 Carl Love + + * gdb.arch/altivec-regs.exp: Use standard_testfile instead of + maintaining separate logic for constructing the output path. + * gdb.arch/powerpc-d128-regs.exp: Likewise. + * gdb.arch/ppc-dfp.exp: Likewise. + * gdb.arch/ppc-fp.exp: Likewise. + * gdb.arch/vsx-regs.exp: Likewise. + * gdb.arch/altivec-abi.exp: Likewise, plus added local variable + binprefix for generating the additional binary files. + 2016-08-19 Pedro Alves * gdb.trace/mi-trace-frame-collected.exp --- a/gdb/testsuite/gdb.arch/altivec-abi.exp +++ b/gdb/testsuite/gdb.arch/altivec-abi.exp @@ -26,9 +26,7 @@ if {![istarget "powerpc*"] || [skip_altivec_tests]} then { return } -set testfile "altivec-abi" -set binfile ${objdir}/${subdir}/${testfile} -set srcfile ${testfile}.c +standard_testfile if [get_compiler_info] { warning "get_compiler failed" @@ -146,6 +144,8 @@ proc altivec_abi_tests { extra_flags force_abi } { } if [test_compiler_info gcc*] { + set binprefix ${binfile} + with_test_prefix "default ABI, auto" { altivec_abi_tests "additional_flags=-maltivec" "auto" } @@ -156,23 +156,23 @@ if [test_compiler_info gcc*] { # On 64-bit GNU/Linux with GCC 4.1 and 4.2, -mabi=no-altivec # was broken, so skip those tests there. if { ![is_lp64_target] || ![test_compiler_info "gcc-4-\[12\]-*"] } { - set binfile ${objdir}/${subdir}/${testfile}-ge-ge + set binfile ${binprefix}-ge-ge with_test_prefix "generic ABI, forced" { altivec_abi_tests "additional_flags=-maltivec additional_flags=-mabi=no-altivec" "generic" } - set binfile ${objdir}/${subdir}/${testfile}-ge-auto + set binfile ${binprefix}-ge-auto with_test_prefix "generic ABI, auto" { altivec_abi_tests "additional_flags=-maltivec additional_flags=-mabi=no-altivec" "auto" } } - set binfile ${objdir}/${subdir}/${testfile}-av-av + set binfile ${binprefix}-av-av with_test_prefix "AltiVec ABI, forced" { altivec_abi_tests "additional_flags=-maltivec additional_flags=-mabi=altivec" "altivec" } - set binfile ${objdir}/${subdir}/${testfile}-av-auto + set binfile ${binprefix}-av-auto with_test_prefix "AltiVec ABI, auto" { altivec_abi_tests "additional_flags=-maltivec additional_flags=-mabi=altivec" "auto" } --- a/gdb/testsuite/gdb.arch/altivec-regs.exp +++ b/gdb/testsuite/gdb.arch/altivec-regs.exp @@ -27,9 +27,7 @@ if {![istarget "powerpc*"] || [skip_altivec_tests]} then { return } -set testfile "altivec-regs" -set binfile ${objdir}/${subdir}/${testfile} -set srcfile ${testfile}.c +standard_testfile set compile_flags {debug nowarnings} if [get_compiler_info] { --- a/gdb/testsuite/gdb.arch/powerpc-d128-regs.exp +++ b/gdb/testsuite/gdb.arch/powerpc-d128-regs.exp @@ -25,9 +25,7 @@ if ![istarget "powerpc64*-*"] then { return } -set testfile "powerpc-d128-regs" -set srcfile ${testfile}.c -set binfile ${objdir}/${subdir}/${testfile} +standard_testfile if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {quiet debug}] != "" } { untested powerpc-d128-regs.exp --- a/gdb/testsuite/gdb.arch/ppc-dfp.exp +++ b/gdb/testsuite/gdb.arch/ppc-dfp.exp @@ -21,9 +21,7 @@ if ![istarget "powerpc*"] then { return } -set testfile "ppc-dfp" -set binfile ${objdir}/${subdir}/${testfile} -set srcfile ${testfile}.c +standard_testfile if [get_compiler_info] { warning "get_compiler failed" --- a/gdb/testsuite/gdb.arch/ppc-fp.exp +++ b/gdb/testsuite/gdb.arch/ppc-fp.exp @@ -21,9 +21,7 @@ if ![istarget "powerpc*"] then { return } -set testfile "ppc-fp" -set binfile ${objdir}/${subdir}/${testfile} -set srcfile ${testfile}.c +standard_testfile if [get_compiler_info] { warning "get_compiler failed" --- a/gdb/testsuite/gdb.arch/vsx-regs.exp +++ b/gdb/testsuite/gdb.arch/vsx-regs.exp @@ -24,9 +24,7 @@ if {![istarget "powerpc*"] || [skip_vsx_tests]} then { return } -set testfile "vsx-regs" -set binfile ${objdir}/${subdir}/${testfile} -set srcfile ${testfile}.c +standard_testfile set compile_flags {debug nowarnings quiet} if [get_compiler_info] { http://sourceware.org/ml/gdb-patches/2016-10/msg00258.html Subject: [testsuite obv] Use standard_output_file From: Jan Kratochvil Date: Tue, 11 Oct 2016 16:43:58 +0200 Subject: [PATCH] testsuite: Use standard_output_file Subject: [PATCH] testsuite: Use standard_output_file gdb/testsuite/ChangeLog 2016-10-11 Jan Kratochvil * gdb.arch/powerpc-prologue.exp: Use standard_output_file. * gdb.arch/ppc64-symtab-cordic.exp: Likewise. * gdb.arch/vsx-regs.exp: Likewise. --- gdb/testsuite/ChangeLog | 6 ++++++ gdb/testsuite/gdb.arch/powerpc-prologue.exp | 2 +- gdb/testsuite/gdb.arch/ppc64-symtab-cordic.exp | 4 ++-- gdb/testsuite/gdb.arch/vsx-regs.exp | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 9c7df29..b6ba0ec 100644 ### a/gdb/testsuite/ChangeLog ### b/gdb/testsuite/ChangeLog ## -1,3 +1,9 @@ +2016-10-11 Jan Kratochvil + + * gdb.arch/powerpc-prologue.exp: Use standard_output_file + * gdb.arch/ppc64-symtab-cordic.exp: Likewise. + * gdb.arch/vsx-regs.exp: Likewise. + 2016-10-07 Yao Qi * gdb.xml/tdesc-regs.exp: Set regdir to "arm/". diff --git a/gdb/testsuite/gdb.arch/powerpc-prologue.exp b/gdb/testsuite/gdb.arch/powerpc-prologue.exp index 341ae02..0c74d7e 100644 --- a/gdb/testsuite/gdb.arch/powerpc-prologue.exp +++ b/gdb/testsuite/gdb.arch/powerpc-prologue.exp @@ -24,7 +24,7 @@ if {[istarget *-*-aix*] || ![istarget "powerpc-*-*"]} then { set testfile "powerpc-prologue" set srcfile ${testfile}.c -set binfile ${objdir}/${subdir}/${testfile} +set binfile [standard_output_file ${testfile}] # Don't use "debug", so that we don't have line information for the assembly # fragments. diff --git a/gdb/testsuite/gdb.arch/ppc64-symtab-cordic.exp b/gdb/testsuite/gdb.arch/ppc64-symtab-cordic.exp index c8cb429..3fdc490 100644 --- a/gdb/testsuite/gdb.arch/ppc64-symtab-cordic.exp +++ b/gdb/testsuite/gdb.arch/ppc64-symtab-cordic.exp @@ -21,9 +21,9 @@ if {![istarget "powerpc*"] || ![is_lp64_target]} { standard_testfile set kobz2file ${srcdir}/${subdir}/cordic.ko.bz2 -set kofile ${objdir}/${subdir}/cordic.ko +set kofile [standard_output_file cordic.ko] set kodebugbz2file ${srcdir}/${subdir}/cordic.ko.debug.bz2 -set kodebugfile ${objdir}/${subdir}/cordic.ko.debug +set kodebugfile [standard_output_file cordic.ko.debug] if {[catch "system \"bzip2 -dc ${kobz2file} >${kofile}\""] != 0} { untested "failed bzip2 for ${kobz2file}" diff --git a/gdb/testsuite/gdb.arch/vsx-regs.exp b/gdb/testsuite/gdb.arch/vsx-regs.exp index 307f12a..31e58e6 100644 --- a/gdb/testsuite/gdb.arch/vsx-regs.exp +++ b/gdb/testsuite/gdb.arch/vsx-regs.exp @@ -152,7 +152,7 @@ for {set i 0} {$i < 32} {incr i 1} { # later when loading the core file (i.e., different register values for different # vector register banks). -set corefile "${objdir}/${subdir}/vsx-core.test" +set corefile [standard_output_file vsx-core.test] set core_supported [gdb_gcore_cmd "$corefile" "Save a VSX-enabled corefile"] # Now run the F32~F63/VR0~VR31 tests. -- 2.7.4 http://sourceware.org/ml/gdb-patches/2016-10/msg00268.html Subject: [testsuite obv] Fix gdb.arch/powerpc-prologue.c compilation From: Jan Kratochvil Date: Tue, 11 Oct 2016 19:09:05 +0200 Subject: [PATCH] testsuite: Fix gdb.arch/powerpc-prologue.c compilation Subject: [PATCH] testsuite: Fix gdb.arch/powerpc-prologue.c compilation gcc-6.2.1 gdb compile failed, gdb/testsuite/gdb.arch/powerpc-prologue.c: In function 'main': gdb/testsuite/gdb.arch/powerpc-prologue.c:32:3: warning: implicit declaration of function 'optimized_1' [-Wimplicit-function-declaration] optimized_1 (); ^~~~~~~~~~~ gdb/testsuite/ChangeLog 2016-10-11 Jan Kratochvil * gdb.arch/powerpc-prologue.c (optimized_1): New declaration. --- gdb/testsuite/ChangeLog | 4 ++++ gdb/testsuite/gdb.arch/powerpc-prologue.c | 1 + 2 files changed, 5 insertions(+) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index b6ba0ec..b4ccd4a 100644 ### a/gdb/testsuite/ChangeLog ### b/gdb/testsuite/ChangeLog ## -1,5 +1,9 @@ 2016-10-11 Jan Kratochvil + * gdb.arch/powerpc-prologue.c (optimized_1): New declaration. + +2016-10-11 Jan Kratochvil + * gdb.arch/powerpc-prologue.exp: Use standard_output_file * gdb.arch/ppc64-symtab-cordic.exp: Likewise. * gdb.arch/vsx-regs.exp: Likewise. diff --git a/gdb/testsuite/gdb.arch/powerpc-prologue.c b/gdb/testsuite/gdb.arch/powerpc-prologue.c index 6c10dfc..a1b8065 100644 --- a/gdb/testsuite/gdb.arch/powerpc-prologue.c +++ b/gdb/testsuite/gdb.arch/powerpc-prologue.c @@ -24,6 +24,7 @@ #endif void gdb2029 (void); +void optimized_1 (void); int main (void) -- 2.7.4 http://sourceware.org/ml/gdb-patches/2016-10/msg00613.html Subject: [testsuite patch] Fix gcc_compiled for gcc 6 & 7 --IS0zKkzwUGydFO0o Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi, OK for check-in? Jan --IS0zKkzwUGydFO0o Content-Type: text/plain; charset=us-ascii Content-Disposition: inline; filename=1 gdb/testsuite/ChangeLog 2016-10-20 Jan Kratochvil * lib/gdb.exp (get_compiler_info): Generalize gcc_compile regexp. diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 378eea0..7d9b198 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -3290,12 +3290,8 @@ proc get_compiler_info {{arg ""}} { } # Set the legacy symbols. - set gcc_compiled 0 - if { [regexp "^gcc-1-" "$compiler_info" ] } { set gcc_compiled 1 } - if { [regexp "^gcc-2-" "$compiler_info" ] } { set gcc_compiled 2 } - if { [regexp "^gcc-3-" "$compiler_info" ] } { set gcc_compiled 3 } - if { [regexp "^gcc-4-" "$compiler_info" ] } { set gcc_compiled 4 } - if { [regexp "^gcc-5-" "$compiler_info" ] } { set gcc_compiled 5 } + set gcc_compiled 0 + regexp "^gcc-(\[0-9\]+)-" "$compiler_info" matchall gcc_compiled # Log what happened. verbose -log "get_compiler_info: $compiler_info" --IS0zKkzwUGydFO0o-- http://sourceware.org/ml/gdb-patches/2017-02/msg00226.html Subject: [OB PATCH] Fix NULL pointer dereference This commit fixes a segmentation fault on tab completion when certain debuginfo is installed: https://bugzilla.redhat.com/show_bug.cgi?id=1398387 gdb/ChangeLog: * symtab.c (add_symtab_completions): Prevent NULL pointer dereference. --- gdb/ChangeLog | 5 +++++ gdb/symtab.c | 3 +++ 2 files changed, 8 insertions(+) diff --git a/gdb/symtab.c b/gdb/symtab.c index 356f480..2c141e5 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -5163,6 +5163,9 @@ add_symtab_completions (struct compunit_symtab *cust, struct block_iterator iter; int i; + if (cust == NULL) + return; + for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++) { QUIT; -- 1.8.3.1 commit 6e5d74e74756fafe59e8198c4cc462cf7c57e12c Author: Pedro Alves Date: Wed Mar 8 11:41:35 2017 +0000 Fix PR 21218: GDB dumps core when escaping newline in multi-line command With commit 3b12939dfc2399 ("Replace the sync_execution global with a new enum prompt_state tristate"), GDB started aborting if you try splitting an input line with a continuation char (backslash) while in a multi-line command: (gdb) commands Type commands for breakpoint(s) 1, one per line. End with a line saying just "end". >print \ (gdb) 1 # note "(gdb)" incorrectly printed here. >end readline: readline_callback_read_char() called with no handler! $ That abort is actually a symptom of an old problem introduced when gdb_readline_wrapper was rewritten to use asynchronous readline, back in 2007. Note how the "(gdb)" prompt is printed above in the "(gdb) 1" line. Clearly it shouldn't be there, but it already was before the commit mentioned above. Fixing that also fixes the readline abort shown above. The problem starts when command_line_input passes a NULL prompt to gdb_readline_wrapper when it finds previous incomplete input due to a backslash, trying to fetch more input without printing another ">" secondary prompt. That itself should not be a problem, because passing NULL to gdb_readline_wrapper has the same meaning as passing a pointer to empty string, since gdb_readline_wrapper exposes the same interface as 'readline(char *)'. However, gdb_readline_wrapper passes the prompt argument directly to display_gdb_prompt, and for the latter, a NULL prompt argument has a different meaning - it requests printing the primary prompt. Before commit 782a7b8ef9c096 (which rewrote gdb_readline_wrapper to use asynchronous readline), GDB behaved like this: (gdb) commands [....] >print \ 1 >end (gdb) The above is what this commit restores GDB back to. New test included. gdb/ChangeLog: 2017-03-08 Pedro Alves PR cli/21218 * top.c (gdb_readline_wrapper): Avoid passing NULL to display_gdb_prompt. (command_line_input): Add comment. gdb/testsuite/ChangeLog: 2017-03-08 Pedro Alves Jan Kratochvil PR cli/21218 * gdb.base/commands.exp (backslash_in_multi_line_command_test): New proc. (top level): Call it. ### a/gdb/ChangeLog ### b/gdb/ChangeLog ## -1,5 +1,12 @@ 2017-03-08 Pedro Alves + PR cli/21218 + * top.c (gdb_readline_wrapper): Avoid passing NULL to + display_gdb_prompt. + (command_line_input): Add comment. + +2017-03-08 Pedro Alves + PR tui/21216 * tui/tui-file.c (tui_file::write): New. * tui/tui-file.h (tui_file): Override "write". ### a/gdb/testsuite/ChangeLog ### b/gdb/testsuite/ChangeLog ## -1,4 +1,12 @@ 2017-03-08 Pedro Alves + Jan Kratochvil + + PR cli/21218 + * gdb.base/commands.exp (backslash_in_multi_line_command_test): + New proc. + (top level): Call it. + +2017-03-08 Pedro Alves PR tui/21216 * gdb.tui/tui-nl-filtered-output.exp: New file. --- a/gdb/testsuite/gdb.base/commands.exp +++ b/gdb/testsuite/gdb.base/commands.exp @@ -759,6 +759,34 @@ proc redefine_backtrace_test {} { "execute bt command in redefine_backtrace_test" } +# Test an input line split with a continuation character (backslash) +# while entering a multi-line command (in a secondary prompt). + +proc backslash_in_multi_line_command_test {} { + gdb_breakpoint "main" + + gdb_test_multiple "commands" "commands" { + -re "End with a line saying just \"end\"\\.\r\n>$" { + pass "commands" + } + } + + set test "input line split with backslash" + send_gdb "print \\\nargc\n" + gdb_test_multiple "" $test { + -re "^print \\\\\r\nargc\r\n>$" { + pass $test + } + } + + gdb_test_no_output "end" + + # Input any command, just to be sure the readline state is sane. + # In PR 21218, this would trigger the infamous: + # readline: readline_callback_read_char() called with no handler! + gdb_test "print 1" "" "run command" +} + gdbvar_simple_if_test gdbvar_simple_while_test gdbvar_complex_if_while_test @@ -1027,5 +1055,6 @@ recursive_source_test if_commands_test error_clears_commands_left redefine_hook_test +backslash_in_multi_line_command_test # This one should come last, as it redefines "backtrace". redefine_backtrace_test --- a/gdb/top.c +++ b/gdb/top.c @@ -1030,8 +1030,11 @@ gdb_readline_wrapper (const char *prompt) if (cleanup->target_is_async_orig) target_async (0); - /* Display our prompt and prevent double prompt display. */ - display_gdb_prompt (prompt); + /* Display our prompt and prevent double prompt display. Don't pass + down a NULL prompt, since that has special meaning for + display_gdb_prompt -- it indicates a request to print the primary + prompt, while we want a secondary prompt here. */ + display_gdb_prompt (prompt != NULL ? prompt : ""); if (ui->command_editing) rl_already_prompted = 1; @@ -1307,6 +1310,9 @@ command_line_input (const char *prompt_arg, int repeat, char *annotation_suffix) if (cmd != NULL) break; + /* Got partial input. I.e., got a line that ends with a + continuation character (backslash). Suppress printing the + prompt again. */ prompt = NULL; }