aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-08-03Automatic date update in version.inGDB Administrator1-1/+1
2019-08-02support Ada EH ABI v1Alexandre Oliva2-3/+57
A new pair of hooks used by Ada exception handlers, for correct release of reraised exception occurrences, involves the introduction of new v1 symbols that GDB should use when available. The older, v0 ABI remains available in newer runtimes for bootstrapping purposes only. for gdb/ChangeLog * ada-lang.c (exception_support_info_v0): Renamed from... (default_exception_support_info): ... this. Create new definition for v1. (ada_has_this_exception_support): Look up catch_handlers_sym. (ada_exception_support_info_sniffer): Try v0 after default.
2019-08-02[GOLD] PowerPC64 pc-relative TLS supportAlan Modra4-68/+359
Gold version of git commit c213164ad2. elfcpp/ * powerpc.h (R_PPC64_TPREL34, R_PPC64_DTPREL34), (R_PPC64_GOT_TLSGD34, R_PPC64_GOT_TLSLD34), (R_PPC64_GOT_TPREL34, R_PPC64_GOT_DTPREL34): Define. gold/ * powerpc.cc (Target_powerpc::Scan::get_reference_flags): Set flags for new relocations, and some missing older relocs. (Target_powerpc::Scan::local): Handle new pcrel tls relocs. Call set_has_static_tls for tprel relocs. (Target_powerpc::Scan::global): Likewise. (Target_powerpc::Relocate::relocate): Handle new pcrel tls relocs.
2019-08-02[GOLD] PowerPC relocation signed overflow checkAlan Modra2-4/+17
Relocations with right shifts were calculating wrong overflow status. Since the addr34 split-field reloc is implemented as an 18-bit high part with value shifted right by 16 and a 16-bit low part, most of the pc-relative relocs were affected. * powerpc.cc (Powerpc_relocate_functions::rela, rela_ua): Perform signed right shift for signed overflow check.
2019-08-02PR24871, readelf segv in dump_ia64_unwindAlan Modra2-7/+21
PR 24871 * readelf.c (ABSADDR): Delete. (dump_ia64_unwind): Expand ABSADDR. Check validity of info.section.
2019-08-02PowerPC tlsie test fixAlan Modra2-2/+6
* testsuite/ld-powerpc/tlsie.s: Correct medium model ELF sequence.
2019-08-02Automatic date update in version.inGDB Administrator1-1/+1
2019-08-01RISC-V: Fix lui relax failure with relro.Jim Wilson2-2/+12
bfd/ChangeLog Ilia Diachkov <ilia.diachkov@optimitech.com> * elfnn-riscv.c (_bfd_riscv_relax_lui): Set lui relax safety area to two pages in relro presence.
2019-08-01Remove directory names from gdb.base/batch-exit-status.expPedro Franco de Carvalho2-12/+26
Adjust gdb.base/batch-exit-status.exp so that test prefixes don't show directory names for the source scripts passed with -x, to make test results from different build directories comparable. gdb/testsuite/ChangeLog: 2019-08-01 Pedro Franco de Carvalho <pedromfc@linux.ibm.com> * gdb.base/batch-exit-status.exp: Call test_exit_status with prefix argument. (test_exit_status): Add prefix argument.
2019-08-01xtensa: bfd: add special case to loop alignment checkMax Filippov2-0/+72
check_loop_aligned is used during link time relaxation to only allow transformations that don't violate loop body alignment requirements. Assembler can relax loops that have too long body by adding instructions between the loop instruction and the loop body. check_loop_aligned must check alignment of the first instruction of the actual loop body. Detect loop / rsr.lend / wsr.lbeg sequence used in assembly time relaxation and adjust alignment check when it's detected. bfd/ 2019-08-01 Max Filippov <jcmvbkbc@gmail.com> * elf32-xtensa.c (insn_num_slots, get_rsr_lend_opcode) (get_wsr_lbeg_opcode): New functions. (check_loop_aligned): Detect relaxed loops and adjust loop_len and insn_len for the first actual instruction of the loop.
2019-08-01Fix the ia64 libunwind buildTom Tromey2-0/+7
This fixes the ia64 libunwind build. gdb/ChangeLog 2019-08-01 Tom Tromey <tromey@adacore.com> * ia64-libunwind-tdep.h (struct libunwind_descr): Include gdbarch.h.
2019-08-01Include s12z-opc.h using ../opcodes.Christian Biesinger2-1/+5
This file exists in binutils-gdb/opcodes, and nothing in Makefile.in adds this to the include path. Default builds work because in-tree readline adds binutils-gdb/ to the include path (!). However, this is broken when compiling with system readline. Other files already use this way to include files in opcodes: ./gdb/lm32-tdep.c:#include "../opcodes/lm32-desc.h" ./gdb/or1k-tdep.h:#include "../opcodes/or1k-desc.h" ./gdb/mep-tdep.c:#include "../opcodes/mep-desc.h" etc. gdb/ChangeLog: 2019-08-01 Christian Biesinger <cbiesinger@google.com> * s12z-tdep.c: Fix include path for s12z-opc.h.
2019-08-01Require GNU make 3.82Alan Hayward2-0/+9
Gdbserver has failed to build with GNU make 3.81 since commit 08f10e02be. Update the NEWS file to state that versions earlier than 3.82 are not supported. 3.82 was released in 2010, 3.81 was released 2006. A quick investigation of the default GNU make version provided across various distros found the earliest provided version to be 3.82: *RHEL 7, Centos 6 - make 3.82 *Fedora 27 - make 4.2.1 *OpenSuse 42.2, SLES11 - make 4.2.1 *Ubuntu 16.04/18.04 - make 4.1 *Debian Jessie - make 4.0 Note that Glibc requires at least 4.0, whereas GCC still allows 3.81. gdb/ChangeLog: * NEWS: Require GNU make 3.82.
2019-08-01[gdb/testsuite] Fix gdb.threads/fork-plus-threads.exp timeout with check-run1Tom de Vries2-0/+14
With gdb.threads/fork-plus-threads.exp and check-run1 we get: ... FAIL: gdb.threads/fork-plus-threads.exp: detach-on-fork=off: \ inferior 1 exited (timeout) ... Fix this by calling exp_continue for new thread and thread exited messages. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-08-01 Tom de Vries <tdevries@suse.de> PR testsuite/24863 * gdb.threads/fork-plus-threads.exp: Fix check-run1 timeout by calling exp_continue for new thread and thread exited messages.
2019-08-01[gdb/testsuite] Fix gdb.base/structs.exp timeout with check-read1Tom de Vries3-1/+44
With gdb.base/structs.exp and check-read1 we get: ... FAIL: gdb.base/structs.exp: p chartest (timeout) ... Fix this by using gdb_test_sequence. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-08-01 Tom de Vries <tdevries@suse.de> PR testsuite/24863 * gdb.base/structs.exp: Fix check-read1 timeout using gdb_test_sequence. * lib/gdb.exp (tcl_version_at_least, lrepeat): New proc.
2019-08-01[gdb/testsuite] Fix gdb.base/break-interp.exp timeout with check-read1Tom de Vries2-0/+14
With gdb.base/break-interp.exp and check-read1, we run get: ... FAIL: gdb.base/break-interp.exp: LDprelinkNOdebugNO: \ BINprelinkNOdebugNOpieNO: symbol-less: info files (timeout) FAIL: gdb.base/break-interp.exp: LDprelinkNOdebugNO: \ BINprelinkNOdebugNOpieYES: symbol-less: info files (timeout) FAIL: gdb.base/break-interp.exp: LDprelinkNOdebugIN: \ BINprelinkNOdebugNOpieNO: symbol-less: info files (timeout) FAIL: gdb.base/break-interp.exp: LDprelinkNOdebugIN: \ BINprelinkNOdebugNOpieYES: symbol-less: info files (timeout) ... Fix this by calling exp_continue after each "info files" line. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-08-01 Tom de Vries <tdevries@suse.de> PR testsuite/24863 * gdb.base/break-interp.exp: Use exp_continue after each "info files" line.
2019-08-01[gdb/testsuite] Fix gdb.base/signals.exp timeout with check-read1Tom de Vries2-2/+20
With gdb.base/signals.exp and check-read1 we get: ... FAIL: gdb.base/signals.exp: info signals (timeout) ... Fix this by using gdb_test_sequence. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-08-01 Tom de Vries <tdevries@suse.de> PR testsuite/24863 * gdb.base/signals.exp: Fix check-read1 timeout using gdb_test_sequence.
2019-08-01PR24806, Linking with -T inside --start-group/--end-groupAlan Modra3-15/+45
This patch processes INSERT AFTER and INSERT BEFORE in a user -T script when such a script is invoked on the command line inside --start-group/--end-group. Also, ld now warns when the user simply forgot --end-group. PR 24806 * ldlang.c (process_insert_statements): Add start of list parameter. Use rather than lang_os_list.head. Process insert statements inside group statements with a recursive call. (lang_process): Adjust process_insert_statements call. * lexsup.c (parse_args): Warn when adding missing --end-group.
2019-08-01Rename lang_output_section_statement to lang_os_listAlan Modra10-43/+47
The idea is to make it a little easier to find uses of this list, so searches don't hit occurrences of lang_output_section_statement_type and lang_output_section_statement_enum. * ldlang.h (lang_os_list): Rename from lang_output_section_statement. * ldlang.c: Likewise throughout file. * emultempl/alphaelf.em: Likewise. * emultempl/elf32.em: Likewise. * emultempl/mmo.em: Likewise. * emultempl/pe.em: Likewise. * emultempl/pep.em: Likewise. * emultempl/ppc32elf.em: Likewise. * emultempl/spuelf.em: Likewise.
2019-08-01Automatic date update in version.inGDB Administrator1-1/+1
2019-07-31Automatic date update in version.inGDB Administrator1-1/+1
2019-07-30Don't declare tui_copy_win or tui_box_winTom Tromey2-2/+5
tui_copy_win and tui_box_win are not implemented, so don't declare them. gdb/ChangeLog 2019-07-16 Tom Tromey <tom@tromey.com> * tui/tui-wingeneral.h (tui_copy_win, tui_box_win): Don't declare.
2019-07-30RISC-V: Fix minor issues with FP csr instructions.Jim Wilson7-17/+95
Mel Chen <mel.chen@sifive.com> gas/ * testsuite/gas/riscv/alias-csr.s: Add testcase for CSR-access alias instructions. * testsuite/gas/riscv/no-aliases-csr.d: Run testcase alias-csr.s with -Mno-aliases. * testsuite/gas/riscv/alias-csr.d: Run testcase alias-csr.s. * testsuite/gas/riscv/priv-reg.d: Update. opcodes/ * riscv-opc.c (riscv_opcodes): Set frsr, fssr, frcsr, fscsr, frrm, fsrm, fsrmi, frflags, fsflags, fsflagsi to alias instructions. * riscv-opc.c (riscv_opcodes): Adjust order of frsr, frcsr, fssr, fscsr.
2019-07-30Allow nested function displaysTom Tromey7-4/+113
In Ada, it's possible to have nested functions. However, block.c:contained_in does not recognize this. Normally, this is no problem, but if gdb is stopped inside a nested function, then you can end up in the unexpected situation that "print" of an expression will work, whereas "display" of the same expression will not -- because contained_in returns 0. This patch simply removes the BLOCK_FUNCTION check from contained_in. The rationale here is that in languages without nested functions, this will not cause any issues. gdb/ChangeLog 2019-07-30 Tom Tromey <tromey@adacore.com> * block.c (contained_in): Remove BLOCK_FUNCTION check. gdb/testsuite/ChangeLog 2019-07-30 Tom Tromey <tromey@adacore.com> * gdb.ada/display_nested.exp: New file. * gdb.ada/display_nested/foo.adb: New file. * gdb.ada/display_nested/pack.adb: New file. * gdb.ada/display_nested/pack.ads: New file.
2019-07-30Allow display of negative offsets in print_address_symbolic()Kevin Buettner2-6/+8
When examining addresses associated with blocks with non-contiguous address ranges, it's not uncommon to see large positive offsets which, for some address width, actually represent a smaller negative offset. Here's an example taken from the test case (using the dw2-ranges-func-lo-cold executable): (gdb) x/5i foo_cold 0x40110d <foo+4294967277>: push %rbp 0x40110e <foo+4294967278>: mov %rsp,%rbp 0x401111 <foo+4294967281>: callq 0x401106 <baz> 0x401116 <foo+4294967286>: nop 0x401117 <foo+4294967287>: pop %rbp This commit, in conjuction with an earlier patch from this series, causes cases like the above to be displayed like this (below) instead: (gdb) x/5i foo_cold 0x40110d <foo_cold>: push %rbp 0x40110e <foo-18>: mov %rsp,%rbp 0x401111 <foo-15>: callq 0x401106 <baz> 0x401116 <foo-10>: nop 0x401117 <foo-9>: pop %rbp Note that the address of foo_cold is now (due to another patch) being displayed as <foo_cold> instead of <foo+BigOffset>. The subsequent lines are shown as negative offsets from foo. Disassembly using the "disassemble" command is somewhat affected by these changes: Before: (gdb) disassemble foo_cold Dump of assembler code for function foo: Address range 0x401120 to 0x40113b: 0x0000000000401120 <+0>: push %rbp 0x0000000000401121 <+1>: mov %rsp,%rbp 0x0000000000401124 <+4>: callq 0x401119 <bar> 0x0000000000401129 <+9>: mov 0x2ef1(%rip),%eax # 0x404020 <e> 0x000000000040112f <+15>: test %eax,%eax 0x0000000000401131 <+17>: je 0x401138 <foo+24> 0x0000000000401133 <+19>: callq 0x40110d <foo+4294967277> 0x0000000000401138 <+24>: nop 0x0000000000401139 <+25>: pop %rbp 0x000000000040113a <+26>: retq Address range 0x40110d to 0x401119: 0x000000000040110d <+-19>: push %rbp 0x000000000040110e <+-18>: mov %rsp,%rbp 0x0000000000401111 <+-15>: callq 0x401106 <baz> 0x0000000000401116 <+-10>: nop 0x0000000000401117 <+-9>: pop %rbp 0x0000000000401118 <+-8>: retq End of assembler dump. After: (gdb) disassemble foo_cold Dump of assembler code for function foo: Address range 0x401120 to 0x40113b: 0x0000000000401120 <+0>: push %rbp 0x0000000000401121 <+1>: mov %rsp,%rbp 0x0000000000401124 <+4>: callq 0x401119 <bar> 0x0000000000401129 <+9>: mov 0x2ef1(%rip),%eax # 0x404020 <e> 0x000000000040112f <+15>: test %eax,%eax 0x0000000000401131 <+17>: je 0x401138 <foo+24> 0x0000000000401133 <+19>: callq 0x40110d <foo_cold> 0x0000000000401138 <+24>: nop 0x0000000000401139 <+25>: pop %rbp 0x000000000040113a <+26>: retq Address range 0x40110d to 0x401119: 0x000000000040110d <-19>: push %rbp 0x000000000040110e <-18>: mov %rsp,%rbp 0x0000000000401111 <-15>: callq 0x401106 <baz> 0x0000000000401116 <-10>: nop 0x0000000000401117 <-9>: pop %rbp 0x0000000000401118 <-8>: retq End of assembler dump. Note that negative offsets are now displayed without the leading "+". Also, the callq to foo_cold is now displayed as such instead of a callq to foo with a large positive offset. gdb/ChangeLog: * printcmd.c (print_address_symbolic): Print negative offsets. (build_address_symbolic): Force signed arithmetic when computing offset.
2019-07-30[PR/24474] Add gdb.lookup_static_symbol to the python APIChristian Biesinger10-0/+116
Similar to lookup_global_symbol, except that it checks the STATIC_SCOPE. gdb/ChangeLog: 2019-07-30 Christian Biesinger <cbiesinger@google.com> PR/24474: Add a function to lookup static variables. * NEWS: Mention this new function. * python/py-symbol.c (gdbpy_lookup_static_symbol): New function. * python/python-internal.h (gdbpy_lookup_static_symbol): New function. * python/python.c (python_GdbMethods): Add new function. gdb/doc/ChangeLog: 2019-07-30 Christian Biesinger <cbiesinger@google.com> * python.texi (Symbols In Python): Document new function gdb.lookup_static_symbol. gdb/testsuite/ChangeLog: 2019-07-30 Christian Biesinger <cbiesinger@google.com> * gdb.python/py-symbol.c: Add a static variable and one in an anonymous namespace. * gdb.python/py-symbol.exp: Test gdb.lookup_static_symbol.
2019-07-30Add missing changelog entryChristian Biesinger1-0/+4
I forgot to commit the change before pushing commit 25ec8924842a215e7f684d3a5076607409ac822f
2019-07-30[gdb/testsuite] Work around tcl bug in libsegfault.exp with check-read1Tom de Vries2-1/+10
When running libsegfault.exp with check-read1, I get: ... Running gdb/testsuite/gdb.base/libsegfault.exp ... ERROR: tcl error sourcing gdb/testsuite/gdb.base/libsegfault.exp. ERROR: no such variable (read trace on "env(LD_PRELOAD)") invoked from within "set env(LD_PRELOAD)" ("uplevel" body line 1) invoked from within "uplevel 1 [list set $var]" invoked from within "if [uplevel 1 [list array exists $var]] { set saved_arrays($var) [uplevel 1 [list array get $var]] } else { set saved_scalars($var) [uplevel ..." invoked from within "if [uplevel 1 [list info exists $var]] { if [uplevel 1 [list array exists $var]] { set saved_arrays($var) [uplevel 1 [list array get $var]] ..." (procedure "save_vars" line 11) invoked from within "save_vars { env(LD_PRELOAD) } { if { ![info exists env(LD_PRELOAD) ] || $env(LD_PRELOAD) == "" } { set env(LD_PRELOAD) "$lib" } else { ..." (procedure "gdb_spawn_with_ld_preload" line 4) invoked from within "gdb_spawn_with_ld_preload $libsegfault """ ... There are several things here interacting with environment variable LD_PRELOAD: - the expect "binary" build/gdb/testsuite/expect-read1 with does export LD_PRELOAD=build/gdb/testsuite/read1.so before calling native expect - read1.so which does unsetenv ("LD_PRELOAD") upon first call to read - the test-case, which wants to set or append libSegFault.so to LD_PRELOAD The error occurs when accessing $env(LD_PRELOAD), in a branch where "info exists env(LD_PRELOAD)" returns true. AFAIU, this is https://core.tcl-lang.org/tcl/tktview?name=67fd4f973a "incorrect results of 'info exists' when unset env var in one interp and check for existence from another interp". Work around the tcl bug by not unsetting the variable, but setting it to "" instead: ... - unsetenv ("LD_PRELOAD"); + setenv ("LD_PRELOAD", "", 1); ... Verified that reverting commit de28a3b72e "[gdb/testsuite, 2/2] Fix gdb.linespec/explicit.exp with check-read1" reintroduced the check-read1 failure in gdb.linespec/explicit.exp. This fixes a similar error in attach-slow-waitpid.exp, which also sets LD_PRELOAD. Tested on x86_64-linux with check-read1. gdb/testsuite/ChangeLog: 2019-07-30 Tom de Vries <tdevries@suse.de> * lib/read1.c (read): Don't use unsetenv (v), use setenv (v, "", 1) instead.
2019-07-30[gdb/testsuite] Fail in gdb_compile if nopie results in PIE executableTom de Vries2-0/+24
When running gdb.base/dump.exp with --target_board=unix/-fPIE/-pie, we get: ... Running gdb/testsuite/gdb.base/dump.exp ... FAIL: gdb.base/dump.exp: dump array as value, intel hex ... The FAIL happens because although the test specifies nopie, the exec is in fact compiled as PIE. The "-fPIE -pie" options specified using the target_board are interpreted by dejagnu as multilib_flags, and end up overriding the nopie flags. Fix this by checking in gdb_compile if the resulting exec is PIE despite of a nopie setting, and if so return an error: ... Running gdb/testsuite/gdb.base/dump.exp ... gdb compile failed, nopie failed to prevent PIE executable === gdb Summary === nr of untested testcases 1 ... Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-30 Tom de Vries <tdevries@suse.de> PR testsuite/24834 * lib/gdb.exp (gdb_compile): Fail if nopie results in PIE executable. (exec_is_pie): New proc.
2019-07-30Re: Support .gnu.lto_.lto section in ELF filesAlan Modra3-1/+10
PR 24768 * bfd.c (struct bfd): Add lto_slim_object flag. * bfd-in2.h: Regenerate.
2019-07-29Fix misspelling (nonexistant -> nonexistent)Christian Biesinger1-2/+2
gdb/testsuite/ChangeLog: 2019-07-29 Christian Biesinger <cbiesinger@google.com> * gdb.python/py-objfile.exp: Fix misspelling (nonexistant -> nonexistent)
2019-07-29Add Objfile.lookup_{global,static}_symbol functionsChristian Biesinger8-0/+133
This is essentially the inverse of Symbol.objfile. This allows handling different symbols with the same name (but from different objfiles) and can also be faster if the objfile is known. gdb/ChangeLog: 2019-07-29 Christian Biesinger <cbiesinger@google.com> * NEWS: Mention new functions Objfile.lookup_{global,static}_symbol. * python/py-objfile.c (objfpy_lookup_global_symbol): New function. (objfpy_lookup_static_symbol): New function. (objfile_object_methods): Add new functions. gdb/doc/ChangeLog: 2019-07-29 Christian Biesinger <cbiesinger@google.com> * python.texi (Objfiles In Python): Document new functions Objfile.lookup_{global,static}_symbol. gdb/testsuite/ChangeLog: 2019-07-29 Christian Biesinger <cbiesinger@google.com> * gdb.python/py-objfile.c: Add global and static vars. * gdb.python/py-objfile.exp: Test new functions Objfile. lookup_global_symbol and lookup_static_symbol.
2019-07-30Automatic date update in version.inGDB Administrator1-1/+1
2019-07-29Two fixes for test suite's terminalTom Tromey2-1/+31
Exactly which escape sequences are emitted by gdb in TUI mode are determined largely by the curses implementation. Testing my latest (as yet unsubmitted) series to refactor the TUI showed a couple of failures that I tracked to the test suite's terminal implementation. In particular, the CSI "@" sequence was not implemented; and the CSI "X" sequence was implemented incorrectly. This patch fixes both of these problems. Tested on x86-64 Fedora 28. gdb/testsuite/ChangeLog 2019-07-29 Tom Tromey <tom@tromey.com> * lib/tuiterm.exp (Term::_csi_@): New proc. (Term::_csi_X): Don't move cursor.
2019-07-29Document 'set print frame-info|frame-arguments presence'.Philippe Waroquiers4-3/+93
gdb/ChangeLog 2019-06-19 Philippe Waroquiers <philippe.waroquiers@skynet.be> * NEWS: Mention 'set|show print frame-info'. Mention new 'presence' value for 'frame-arguments'. Mention new '-frame-info' backtrace argument. Mention that python frame filtering code is now consistent with what 'backtrace' command prints. gdb/doc/ChangeLog 2019-07-29 Philippe Waroquiers <philippe.waroquiers@skynet.be> * gdb.texinfo (Backtrace): Document the new '-frame-info' backtrace option. Reference 'set print frame-info'. (Print Settings): Document 'set|show print frame-info'. Document new 'presence' value for 'set print frame-arguments.
2019-07-29Test 'set print frame-info|frame-arguments presence'.Philippe Waroquiers5-5/+144
Updated tests to test the new options and new values. Test the default for print_what in python frame filtering. Updated the tests impacted by the default in python frame filtering which is now consistent with the backtrace command. gdb/testsuite/ChangeLog 2019-07-29 Philippe Waroquiers <philippe.waroquiers@skynet.be> * gdb.base/options.exp: Update backtrace - completion to new option -frame-info. * gdb.base/frame-args.exp: Test new 'frame-arguments presence'. Test new 'set print frame-info'. Test backtrace -frame-info overriding 'set print frame-info'. * gdb.python/py-framefilter.exp: Test new 'frame-arguments presence'. Test new 'set print frame-info'. Verify consistency of backtrace with and without filters, with and without -no-filters. * gdb.python/py-framefilter-invalidarg.exp: Update to new print_what default.
2019-07-29Implement 'set print frame-info|frame-arguments presence'.Philippe Waroquiers6-40/+263
New settings allow to better control what frame information is printed. 'set print frame-info' allows to override the default frame information printed when a GDB command prints a frame. The backtrace command has a new option -frame-info to override this global setting. It is now possible to have very short frame information by using the new 'set print frame-arguments presence' and 'set print frame-info short-location'. Combined with 'set print address off', a backtrace will only show the essential information to see the function call chain, e.g.: (gdb) set print address off (gdb) set print frame-arguments presence (gdb) set print frame-info short-location (gdb) bt #0 break_me () #1 call_me (...) #2 main () (gdb) This is handy in particular for big backtraces with functions having many arguments. Python frame filter printing logic has been updated to respect the new setting in non MI mode. Also, the default frame information printed was inconsistent when backtrace was printing the frame information itself, or when the python frame filtering code was printing the frame information. This patch changes the default of python frame filtering to have a consistent behaviour regarding printed frame-information, whatever the presence/activity/matches of python filters. 2019-07-29 Philippe Waroquiers <philippe.waroquiers@skynet.be> * frame.h (enum print_what): New value 'SHORT_LOCATION', update comments. (print_frame_info_auto, print_frame_info_source_line, print_frame_info_location, print_frame_info_source_and_location, print_frame_info_location_and_address, print_frame_info_short_location): New declarations. (struct frame_print_options): New member print_frame_info. * extension.h (enum ext_lang_frame_args): New value CLI_PRESENCE. * stack.h (get_user_print_what_frame_info): New declaration. (frame_show_address): New declaration. * stack.c (print_frame_arguments_choices): New value 'presence'. (print_frame_info_auto, print_frame_info_source_line, print_frame_info_location, print_frame_info_source_and_location, print_frame_info_location_and_address, print_frame_info_short_location, print_frame_info_choices, print_frame_info_print_what): New definitions. (print_frame_args): Only print dots for args if print frame-arguments is 'presence'. (frame_print_option_defs): New element for "frame-info". (get_user_print_what_frame_info): New function. (frame_show_address): Make non static. Move comment to stack.h. (print_frame_info_to_print_what): New function. (print_frame_info): Update comment. Use fp_opts.print_frame_info to decide what to print. (backtrace_command_1): Handle the new print_frame_arguments_presence value. (_initialize_stack): Call add_setshow_enum_cmd for frame-info. * python/py-framefilter.c (py_print_args): Handle CLI_PRESENCE. (py_print_frame): In non-mi mode, use LOCATION as default for print_what, similarly to frame information printed directly by backtrace command. Handle frame-info user option in non MI mode.
2019-07-29[gdb/testsuite, 2/2] Fix gdb.linespec/explicit.exp with check-read1Tom de Vries2-1/+6
When running gdb.linespec/explicit.exp with check-read1, we get: ... (gdb) PASS: gdb.linespec/explicit.exp: set max-completions unlimited break  -function ... top (gdb) PASS: gdb.linespec/explicit.exp: complete with no arguments break -function ... top (gdb) FAIL: gdb.linespec/explicit.exp: complete with no arguments (clearing input line) ... The problem is that the send_gdb "\t\t" triggers completion twice: ... set tst "complete with no arguments" send_gdb "break \t" gdb_test_multiple "" $tst { "break \\\x07" { send_gdb "\t\t" gdb_test_multiple "" $tst { ... } clear_input_line $tst ... but the following gdb_test_multiple only parses it once, so the second completion is left for clear_input_line, which fails. Fix this by triggering completion only once. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-29 Tom de Vries <tdevries@suse.de> * gdb.linespec/explicit.exp: Fix completion trigger for "complete with no arguments".
2019-07-29[gdb/testsuite, 1/2] Fix gdb.linespec/explicit.exp with check-read1Tom de Vries2-14/+6
When running gdb.linespec/explicit.exp with check-read1, we get: ... (gdb) PASS: gdb.linespec/explicit.exp: complete unique file name: break -source "3explicit.c" break -source exp^Glicit^G^M explicit.c explicit2.c ^M (gdb) FAIL: gdb.linespec/explicit.exp: complete non-unique file name ... The problem is that we have a gdb_test_multiple where we match two regexps: ... set tst "complete non-unique file name" send_gdb "break -source exp\t" gdb_test_multiple "" $tst { -re "break -source exp\\\x07licit" { ... } -re "break -source exp\\\x07l" { # This pattern may occur when glibc debuginfo is installed. ... } } ... but since second is a substring of the first, we'll usually match the first, but with check-read1 we'll match the second. Fix this by using a single regexp and merging the related code. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-29 Tom de Vries <tdevries@suse.de> * gdb.linespec/explicit.exp: Fix gdb_test_multiple regexps where second is a substring of the first for "complete non-unique file name".
2019-07-29[gdb/testsuite] Fix python.exp with check-read1Tom de Vries2-2/+7
when running python/python.exp with check-read1, we get: ... (gdb) PASS: gdb.python/python.exp: prompt substitution readline - end python gdb.prompt_hook = error_prompt^M Python Exception <type 'exceptions.RuntimeError'> Python exception calledPASS: gdb.python/python.exp: set hook : ^M (gdb) PASS: gdb.python/python.exp: set the hook to default python gdb.prompt_hook = None^M (gdb) PASS: gdb.python/python.exp: set print-stack full for prompt error test set python print-stack full^M (gdb) FAIL: gdb.python/python.exp: set the hook python gdb.prompt_hook = error_prompt^M Traceback (most recent call last):^M File "<string>", line 3, in error_prompt^M RuntimeError: Python exception called^M (gdb) FAIL: gdb.python/python.exp: set the hook to default ... The problem is that gdb_test_multiple here: ... gdb_test_multiple "python gdb.prompt_hook = error_prompt" "set the hook" { -re "Python Exception (exceptions.RuntimeError|<(type 'exceptions.|class ')RuntimeError'>) Python excepti on called.*" { pass "set hook" } } ... specifies a regexp that ends with ".*" but doesn't specify the expected $gdb_prompt. Consequently, due to check-read1, the ".*" is matched to "" and the remaining $gdb_prompt is read by the the following gdb_py_test_silent_cmd, which has its own $gdb_prompt read by the following gdb_py_test_silent_cmd, which has its own $gdb_prompt causing a mismatch for the following gdb_test_multiple: ... gdb_test_multiple "python gdb.prompt_hook = error_prompt" "set the hook" { -re "Traceback.*File.*line.*RuntimeError.*Python exception called.*" { pass "set hook" } } ... which causes both FAILs. The second gdb_test_multiple has the same problem as the first, but it happens not to cause a FAIL because it's followed by a gdb_py_test_silent_cmd and a clean_restart. Fix the regexps in both gdb_test_multiple calls. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-29 Tom de Vries <tdevries@suse.de> * gdb.python/python.exp: Don't terminate gdb_test_multiple regexp with ".*".
2019-07-29[gdb/testsuite] Fix mi-catch-cpp-exceptions.exp and mi-nonstop.exp with ↵Tom de Vries2-2/+7
check-read1 With check-read1 we get: ... FAIL: gdb.mi/mi-catch-cpp-exceptions.exp: check for stap probe in libstdc++ FAIL: gdb.mi/mi-nonstop.exp: probe for target remote ... In both cases this is due to using gdb_test_multiple (which expects $gdb_prompt by default) in combination with gdb using $gdb_mi_prompt, similar to the problem fixed by commit d17725d72f "Don't expect gdb_prompt in mi_skip_python_test". Fix this by adding the $prompt_regexp argument to the gdb_test_multiple calls. gdb/testsuite/ChangeLog: 2019-07-29 Tom de Vries <tdevries@suse.de> * lib/gdb.exp (skip_libstdcxx_probe_tests_prompt, gdb_is_target_1): Pass prompt_regexp parameter to gdb_test_multiple calls.
2019-07-29[gdb/testsuite] Fix gdb.base/maint.exp with check-read1Tom de Vries2-3/+8
With gdb.base/maint.exp and check-read1, we get: ... FAIL: gdb.base/maint.exp: maint print registers ... Using this patch: ... diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp index a7675ea215..b81d7ec660 100644 --- a/gdb/testsuite/gdb.base/maint.exp +++ b/gdb/testsuite/gdb.base/maint.exp @@ -81,7 +81,9 @@ gdb_test_multiple $test $test { exp_continue } -re "$gdb_prompt $" { - gdb_assert { $saw_registers && $saw_headers } $test + gdb_assert { $saw_headers } "$test: saw headers" + gdb_assert { $saw_registers } "$test: saw registers" + pass "$test: got prompt" } } ... We get more information: ... PASS: gdb.base/maint.exp: maint print registers: saw headers FAIL: gdb.base/maint.exp: maint print registers: saw registers PASS: gdb.base/maint.exp: maint print registers: got prompt ... The problem is that when matching: ... (gdb) maint print registers^M Name Nr Rel Offset Size Type ^M rax 0 0 0 8 int64_t ^M ... the regexp for $saw_headers ends in "\[\r\n\]+", which allows it to match only the "\r". The remaining "\n" then start the next line to be matched, which doesn't match for the $saw_registers regexp since it starts with "^\[^\r\n\]+". Fix this by ending the regexps with "\r\n". Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-29 Tom de Vries <tdevries@suse.de> * gdb.base/maint.exp: Use "\r\n" instead of "\[\r\n\]+" in "maint print registers" regexps.
2019-07-29[gdb/testsuite] Fix gdb.base/define.exp with check-read1Tom de Vries2-1/+5
When running gdb.base/define.exp with check-read1, we get: ... show prompt^M Gdb's prompt is "(gdb) ".^M (gdb) PASS: gdb.base/define.exp: save gdb_prompt set prompt \(blah\) ^M (blah) PASS: gdb.base/define.exp: set gdb_prompt set prompt (gdb) PASS: gdb.base/define.exp: reset gdb_prompt ^M (gdb) FAIL: gdb.base/define.exp: define do-define ... The problem is that the "$gdb_prompt $" regexp here: ... gdb_test_multiple "set prompt $prior_prompt " "reset gdb_prompt" { -re "$gdb_prompt $" { pass "reset gdb_prompt" } } ... triggers for the echoing of the command "set prompt $prior_prompt " rather than for the prompt after the command has executed. Fix this by changing the regexp to "\r\n$gdb_prompt $". Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-29 Tom de Vries <tdevries@suse.de> * gdb.base/define.exp: Add "\r\n" to "reset gdb_prompt" regexp.
2019-07-29[gdb/testsuite] Don't expect gdb_prompt in mi_skip_python_testTom de Vries2-13/+26
When running gdb.python/py-mi-events.exp with make check-read1, we get: ... (gdb) ^M python print ('test')^M &"python print ('test')\n"^M ~"test\n"^M ^done^M (gdb) FAIL: gdb.python/py-mi-events.exp: verify python support ^M python print (sys.version_info[0])^M &"python print (sys.version_info[0])\n"^M ~"2\n"^M ^done^M (gdb) FAIL: gdb.python/py-mi-events.exp: check if python 3 ^M ... The FAILs happen as follows. On one hand, skip_python_tests_prompt uses the prompt_regexp parameter for the user_code argument of gdb_test_multiple: ... proc skip_python_tests_prompt { prompt_regexp } { global gdb_py_is_py3k gdb_test_multiple "python print ('test')" "verify python support" { -re "not supported.*$prompt_regexp" { unsupported "Python support is disabled." return 1 } -re "$prompt_regexp" {} } gdb_test_multiple "python print (sys.version_info\[0\])" "check if python 3" { -re "3.*$prompt_regexp" { set gdb_py_is_py3k 1 } -re ".*$prompt_regexp" { set gdb_py_is_py3k 0 } } ... On the other hand, gdb_test_multiple itself uses $gdb_prompt: ... -re "\r\n$gdb_prompt $" { if ![string match "" $message] then { fail "$message" } set result 1 } ... So when mi_skip_python_test calls skip_python_tests_prompt with prompt_regexp set to $mi_gdb_prompt: ... proc mi_skip_python_tests {} { global mi_gdb_prompt return [skip_python_tests_prompt "$mi_gdb_prompt$"] } ... and expect reads "(gdb) " and tries to match it (due to the READ1=1 setting), the user_code regexps using $prompt_regexp (set to $mi_gdb_prompt) don't match, but the $gdb_prompt regexp in gdb_test_multiple does match. Fix this by adding a prompt_regexp parameter to gdb_test_multiple, and using the parameter in skip_python_tests_prompt. Tested gdb.python/py-mi-events.exp with make check READ1=1 x86_64-linux. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-29 Tom de Vries <tdevries@suse.de> PR gdb/24855 * lib/gdb.exp (gdb_test_multiple): Add prompt_regexp parameter. (skip_python_tests_prompt): Add prompt_regexp argument to gdb_test_multiple calls.
2019-07-29Support .gnu.lto_.lto section in ELF files (PR 24768).Martin Liska11-14/+157
bfd/ChangeLog: 2019-07-22 Martin Liska <mliska@suse.cz> PR 24768 * archive.c (_bfd_compute_and_write_armap): Come up with report_plugin_err variable. * bfd-in2.h (struct bfd): Add lto_slim_object flag. * elf.c (struct lto_section): New. (_bfd_elf_make_section_from_shdr): Parse content of .gnu_lto_.lto section. * elflink.c: Report error for a missing LTO plugin. * linker.c (_bfd_generic_link_add_one_symbol): Likewise. binutils/ChangeLog: 2019-07-22 Martin Liska <mliska@suse.cz> PR 24768 * nm.c (filter_symbols): Set report_plugin_err if error is reported. (display_rel_file): Report error for a missing LTO plugin. gold/ChangeLog: 2019-07-22 Martin Liska <mliska@suse.cz> PR 24768 * layout.h (class Layout): Add is_lto_slim_object and set_lto_slim_object. * object.cc (struct lto_section): Add lto_slim_object_. (big_endian>::do_layout): Parse content of .gnu_lto_.lto section. (big_endian>::do_add_symbols): Report error for a missing LTO plugin.
2019-07-29Automatic date update in version.inGDB Administrator1-1/+1
2019-07-28PR24857, ld: error adding symbols: bad valueAlan Modra2-5/+24
This fixes two cases where elf_link_add_object_symbols returns an error, setting the catch-all bfd_error_bad_value without explaining the error. The second one is an internal error that can only be caused by a target elf_add_symbol_hook, so make that one abort. The first one is my PR24339 fix. PR24339 is another of those fuzzing bugs and the fix I made catches the problem when loading symbols, rather than when symbols are used in relocs. While ld is correct to reject the object file as not complying with the ELF standard, let's be a little more forgiving for dynamic objects. PR 24857 PR 24339 * elflink.c (elf_link_add_object_symbols): Report an informative error on finding local symbols with index equal or greater than symbol table sh_info. Correct comment. Allow such symbols in dynamic objects. Abort on NULL section for symbol.
2019-07-27Add test that "file" shows "main"Tom Tromey2-0/+38
This adds a new test that checks that the "file" command will show the program's "main". gdb/testsuite/ChangeLog 2019-07-27 Tom Tromey <tom@tromey.com> * gdb.tui/main.exp: New file.
2019-07-27Add test case for empty TUI windowsTom Tromey3-3/+117
My original intent here was to add a test case to test that empty TUI windows re-render their contents after a resize. However, this seems pretty broken at the moment, so a lot of the test is actually disabled. gdb/testsuite/ChangeLog 2019-07-27 Tom Tromey <tom@tromey.com> * lib/tuiterm.exp (Term::clean_restart): Make "executable" optional. * gdb.tui/empty.exp: New file.
2019-07-27Add TUI resizing testTom Tromey3-0/+93
This adds a test case that resizes the terminal and then checks that the TUI updates properly. gdb/testsuite/ChangeLog 2019-07-27 Tom Tromey <tom@tromey.com> * lib/tuiterm.exp (spawn): New proc. (Term::resize): New proc. * gdb.tui/resize.exp: New file.