aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2021-01-28gdb: rename get_type_arch to type::archSimon Marchi30-110/+101
... and update all users. gdb/ChangeLog: * gdbtypes.h (get_type_arch): Rename to... (struct type) <arch>: ... this, update all users. Change-Id: I0e3ef938a0afe798ac0da74a9976bbd1d082fc6f
2021-01-28gdb: rename type::{arch,objfile} -> type::{arch_owner,objfile_owner}Simon Marchi12-50/+58
I think this makes the names of the methods clearer, especially for the arch. The type::arch method (which gets the arch owner, or NULL if the type is not arch owned) is easily confused with the get_type_arch method (which returns an arch no matter what). The name "arch_owner" will make it intuitive that the method returns NULL if the type is not arch-owned. Also, this frees the type::arch name, so we will be able to morph the get_type_arch function into the type::arch method. gdb/ChangeLog: * gdbtypes.h (struct type) <arch>: Rename to... <arch_owner>: ... this, update all users. <objfile>: Rename to... <objfile_owner>: ... this, update all users. Change-Id: Ie7c28684c7b565adec05a7619c418c69429bd8c0
2021-01-28Improve windres's handling of pathnames containing special characters on ↵Eli Zaretskii2-3/+34
Windows platforms. PR 4356 * windres.c (quot): Use double quotes to protect strings on Windows platforms.
2021-01-28ld: Add a test for PR ld/27259H.J. Lu3-0/+27
PR ld/27259 * testsuite/ld-elf/pr27259.d: New file. * testsuite/ld-elf/pr27259.s: Likewise.
2021-01-28Fix binutils tools so that they can cope with the special /dev/null file ↵Eli Zaretskii3-0/+36
when run on Windows systems. PR 27252 * bucomm.c (get_file_size): Add code to handle /dev/null on Windows systems. * elfedit.c (check_file): Likewise.
2021-01-28gold: Skip address size and segment selector for DWARF5H.J. Lu2-0/+10
The .debug_line secton in DWARF5 has a byte for address size and a byte for segment selector after DWARF version. Skip them for DWARF5. PR gold/27246 * dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog): Skip address size and segment selector for DWARF5.
2021-01-28gdb/testsuite: unset XDG_CONFIG_HOMEAndrew Burgess2-0/+11
Since this commit: commit 64aaad6349d2b2c45063a5383f877ce9a3a0c354 Date: Fri Sep 25 14:50:56 2020 +0100 gdb: use get_standard_config_dir when looking for .gdbinit GDB has been checking for ${XDG_CONFIG_HOME}/gdb/gdbinit on startup. Most tests pass -nx to GDB to block loading of gdbinit files, but there are a few tests (e.g. gdb.base/gdbinit-history.exp) that don't use -nx and instead setup a fake HOME directory containing a gdbinit file. However, since the above commit, if XDG_CONFIG_HOME is set then once -nx is no longer being passed GDB will load any gdbinit file it finds in that directory, which could cause the test to fail. As a concrete example: $ mkdir -p fake_xdg_config_home/gdb/ $ cat <<EOF >fake_xdg_config_home/gdb/gdbinit echo goodbye\n quit EOF $ export XDG_CONFIG_HOME=$PWD/fake_xdg_config_home $ make check-gdb TESTS="gdb.base/gdbinit-history.exp" Should result in the test failing. The solution I propose is to unset XDG_CONFIG_HOME in default_gdb_init, we already unset a bunch of environment variables in this proc. gdb/testsuite/ChangeLog: * lib/gdb.exp (default_gdb_init): Unset XDG_CONFIG_HOME.
2021-01-28gdb: update comment for execute_command_to_stringAndrew Burgess3-6/+12
The function execute_command_to_string had two header comments, one in gdbcmd.h and one in top.c. This commit merges the two comments into one and places this comment in gdbcmd.h. The comment in top.c is updated to just reference gdbcmd.h. gdb/ChangeLog: * gdbcmd.h (execute_command_to_string): Update comment. * top.c (execute_command_to_string): Update header comment.
2021-01-28[gdb/breakpoints] Fix longjmp master breakpoint with separate debug infoTom de Vries2-74/+118
When running test-case gdb.base/longjmp.exp with target board unix/-m32, we run into: ... (gdb) next^M Warning:^M Cannot insert breakpoint 0.^M Cannot access memory at address 0x7dbf7353^M ^M __libc_siglongjmp (env=0x804a040 <env>, val=1) at longjmp.c:28^M 28 longjmps++;^M (gdb) FAIL: gdb.base/longjmp.exp: next over longjmp(1) ... The failure to access memory happens in i386_get_longjmp_target and is due to glibc having pointer encryption (aka "pointer mangling" or "pointer guard") of the long jump buffer. This is a known problem. In create_longjmp_master_breakpoint (which attempts to install a master longjmp breakpoint) a preference scheme is present, which installs a probe breakpoint if a libc:longjmp probe is present, and otherwise falls back to setting breakpoints at the names in the longjmp_names array. But in fact, both the probe breakpoint and the longjmp_names breakpoints are set. The latter ones are set when processing libc.so.debug, and the former one when processing libc.so. In other words, this is the longjmp variant of PR26881, which describes the same problem for master exception breakpoints. This problem only triggers when the glibc debug info package is installed, which is not due to the debug info itself in libc.so.debug, but due to the minimal symbols (because create_longjmp_master_breakpoint uses minimal symbols to translate the longjmp_names to addresses). The problem doesn't trigger for -m64, because there tdep->jb_pc_offset is not set. Fix this similar to commit 1940319c0ef (the fix for PR26881): only install longjmp_names breakpoints in libc.so/libc.so.debug if installing the libc:longjmp probe in libc.so failed. Tested on x86_64-linux. gdb/ChangeLog: 2021-01-28 Tom de Vries <tdevries@suse.de> PR breakpoints/27205 * breakpoint.c (create_longjmp_master_breakpoint_probe) (create_longjmp_master_breakpoint_names): New function, factored out of ... (create_longjmp_master_breakpoint): ... here. Only try to install longjmp_names breakpoints in libc.so/libc.so.debug if installing probe breakpoint in libc.so failed.
2021-01-28PR27259, SHF_LINK_ORDER self-linkAlan Modra4-15/+42
This stops ld from endless looping on SHF_LINK_ORDER sh_link loops. bfd/ PR 27259 * elflink.c (_bfd_elf_gc_mark_extra_sections): Use linker_mark to prevent endless looping of linked-to sections. ld/ PR 27259 * ldelf.c (ldelf_before_place_orphans): Use linker_mark to prevent endless looping of linked-to sections.
2021-01-28[gdb/testsuite] Fix gdb.ada/out_of_line_in_inlined.exp with -m32 and gcc-10Tom de Vries2-2/+5
When running test-case gdb.ada/out_of_line_in_inlined.exp with target board unix/-m32 on a system with gcc-10 default compiler, we run into: ... (gdb) break foo_o224_021.child1.child2^M Breakpoint 1 at 0x804ba59: foo_o224_021.child1.child2. (3 locations)^M (gdb) FAIL: gdb.ada/out_of_line_in_inlined.exp: scenario=all: \ break foo_o224_021.child1.child2 ... The test does not expect the "3 locations" part. Fix this by using gdb_breakpoint instead of gdb_test. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2021-01-28 Tom de Vries <tdevries@suse.de> * gdb.ada/out_of_line_in_inlined.exp: Use gdb_breakpoint.
2021-01-28[gdb/testsuite] Fix ERROR in gdb.dwarf2/dw2-out-of-range-end-of-seq.expTom de Vries2-3/+10
When running test-case gdb.dwarf2/dw2-out-of-range-end-of-seq.exp on a system with debug packages installed, I run into: ... (gdb) maint info line-table^M ... <lots of output> ... ERROR: internal buffer is full. UNRESOLVED: gdb.dwarf2/dw2-out-of-range-end-of-seq.exp: \ END with address 1 eliminated ... Fix this by limiting the output of the command using a regexp. I also noticed that when making the regexp match nothing, meaning the command has no output, the test didn't FAIL. Fixed this by adding a PASS pattern. I also noticed that the FAIL pattern didn't work with -m32, fixed that as well. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2021-01-28 Tom de Vries <tdevries@suse.de> * gdb.dwarf2/dw2-out-of-range-end-of-seq.exp: Add regexp to "maint info line-table". Make PASS pattern more specific. Make FAIL pattern work for -m32.
2021-01-28Automatic date update in version.inGDB Administrator1-1/+1
2021-01-27Avoid use after free with logging and debug redirect.Lancelot SIX4-0/+30
This patch addresses PR gdb/27133. Before it, the following succession of commands would cause gdb to crash: set logging redirect on set logging debugredirect on set logging on The problem eventually comes down to a use after free. The function cli_interp_base::set_logging is called with a unique_ptr argument that holds a pointer to the redirection file. In the problematic use case, no-one ever took ownership of that pointer (as far as unique_ptr is concerned), so the call to its dtor at the end of the function causes the file object to be deleted. Any later use of the pointer to the redirection file is therefore an error. This patch ensures that the unique_ptr is released when required (so it does not assume ownership anymore). The internal logic of cli_interp_base::set_logging takes care of freeing the ui_file when it is not necessary anymore using the saved_output.file_to_delete field. gdb/ChangeLog: PR gdb/27133 * cli/cli-interp.c (cli_interp_base::set_logging): Ensure the unique_ptr is released when the wrapped pointer is kept for later use. gdb/testsuite/ChangeLog: PR gdb/27133 * gdb.base/ui-redirect.exp: Add test case that ensures that redirecting both logging and debug does not cause gdb to crash.
2021-01-27GDB: aarch64: Add ability to displaced step over a BR/BLR instructionMatthew Malcomson5-6/+114
Enable displaced stepping over a BR/BLR instruction Displaced stepping over an instruction executes a instruction in a scratch area and then manually fixes up the PC address to leave execution where it would have been if the instruction were in its original location. The BR instruction does not need modification in order to run correctly at a different address, but the displaced step fixup method should not manually adjust the PC since the BR instruction sets that value already. The BLR instruction should also avoid such a fixup, but must also have the link register modified to point to just after the original code location rather than back to the scratch location. This patch adds the above functionality. We add this functionality by modifying aarch64_displaced_step_others rather than by adding a new visitor method to aarch64_insn_visitor. We choose this since it seems that visitor approach is designed specifically for PC relative instructions (which must always be modified when executed in a different location). It seems that the BR and BLR instructions are more like the RET instruction which is already handled specially in aarch64_displaced_step_others. This also means the gdbserver code to relocate an instruction when creating a fast tracepoint does not need to be modified, since nothing special is needed for the BR and BLR instructions there. Regression tests showed nothing untoward on native aarch64 (though it took a while for me to get the testcase to account for PIE). ------##### Original observed (mis)behaviour before was that displaced stepping over a BR or BLR instruction would not execute the function they called. Most easily seen by putting a breakpoint with a condition on such an instruction and a print statement in the functions they called. When run with the breakpoint enabled the function is not called and "numargs called" is not printed. When run with the breakpoint disabled the function is called and the message is printed. --- GDB Session ~ [15:57:14] % gdb ../using-blr Reading symbols from ../using-blr...done. (gdb) disassemble blr_call_value Dump of assembler code for function blr_call_value: ... 0x0000000000400560 <+28>: blr x2 ... 0x00000000004005b8 <+116>: ret End of assembler dump. (gdb) break *0x0000000000400560 Breakpoint 1 at 0x400560: file ../using-blr.c, line 22. (gdb) condition 1 10 == 0 (gdb) run Starting program: /home/matmal01/using-blr [Inferior 1 (process 33279) exited with code 012] (gdb) disable 1 (gdb) run Starting program: /home/matmal01/using-blr numargs called [Inferior 1 (process 33289) exited with code 012] (gdb) Test program: ---- using-blr ---- \#include <stdio.h> typedef int (foo) (int, int); typedef void (bar) (int, int); struct sls_testclass { foo *x; bar *y; int left; int right; }; __attribute__ ((noinline)) int blr_call_value (struct sls_testclass x) { int retval = x.x(x.left, x.right); if (retval % 10) return 100; return 9; } __attribute__ ((noinline)) int blr_call (struct sls_testclass x) { x.y(x.left, x.right); if (x.left % 10) return 100; return 9; } int numargs (__attribute__ ((unused)) int left, __attribute__ ((unused)) int right) { printf("numargs called\n"); return 10; } void altfunc (__attribute__ ((unused)) int left, __attribute__ ((unused)) int right) { printf("altfunc called\n"); } int main(int argc, char **argv) { struct sls_testclass x = { .x = numargs, .y = altfunc, .left = 1, .right = 2 }; if (argc > 2) { blr_call (x); } else blr_call_value (x); return 10; }
2021-01-27Remove extra space after @pxref in gdb.texinfoTom Tromey2-1/+5
Internally at AdaCore, documentation is still built with Texinfo 4.13. This version gave an error when building gdb.texinfo: ../../../binutils-gdb/gdb/doc/gdb.texinfo:27672: @pxref expected braces. ../../../binutils-gdb/gdb/doc/gdb.texinfo:27672: ` {dotdebug_gdb_scripts section,,The @cod...' is too long for expansion; not expanded. ... followed by many more spurious errors that were caused by this one. This patch fix the problem by removing the extra space. I don't know whether it's advisable to try to support this ancient version of Texinfo (released in 2008 apparently); but in this particular case the fix is trivial, so I'm checking it in. gdb/doc/ChangeLog 2021-01-27 Tom Tromey <tromey@adacore.com> * gdb.texinfo (Auto-loading extensions): Remove extraneous space.
2021-01-27ld: depend on libctfNick Alcock3-0/+7
Since ld may depend on libctf (if present), and libctf may be relinked by the installation process, libctf must be installed before ld is, or the relink may fail if it calls on symbols or symbol versions that do not exist in any libctf already present on the system. (If none is present, the copy in the build tree will be automatically used, but if one *is* present, it may take precedence and break things.) (This is a maybe- dependency, so it will work even if libctf is disabled.) ChangeLog 2021-01-26 Nick Alcock <nick.alcock@oracle.com> PR 27250 * Makefile.def: Add install-libctf dependency to install-ld. * Makefile.in: Regenerated.
2021-01-27Simplify the code at the end of objcopy's main() function.Nick Clifton2-24/+15
* objcopy.c (copy_main): Remove conditional control of the calls to free, simplifying the code and making it easier to detect typos.
2021-01-26ld: Fix a typo in testsuite/ld-x86-64/bnd-plt-1.dH.J. Lu2-2/+6
Pass -mx86-used-note=no to assembler. * testsuite/ld-x86-64/bnd-plt-1.d: Fix a typo.
2021-01-27Automatic date update in version.inGDB Administrator1-1/+1
2021-01-26nios2: Don't disable relaxation with --gdwarf-NH.J. Lu4-4/+38
GCC 11 passes --gdwarf-5 to assembler to enable DWARF5 debug info. Don't disable relaxation when --gdwarf-N is specified. The assembler generated debug information will treat the sequence of the relaxed instructions as a single instruction. PR gas/27243 * config/tc-nios2.c (md_begin): Don't disable relaxation with --gdwarf-N. * testsuite/gas/nios2/relax.d: New file. * testsuite/gas/nios2/relax.s: Likewise.
2021-01-26Use debug_prefixed_printf_cond in windows-nat.cTom Tromey3-68/+89
This changes windows-nat.c and nat/windows-nat.c to use the new debug_prefixed_printf_cond facility. I tried this out on a Windows build and I think it makes the output look a little nicer. 2021-01-26 Tom Tromey <tromey@adacore.com> * windows-nat.c (DEBUG_EXEC, DEBUG_EVENTS, DEBUG_MEM) (DEBUG_EXCEPT): Use debug_prefixed_printf_cond. (windows_init_thread_list, windows_nat::handle_load_dll) (windows_nat::handle_unload_dll, windows_nat_target::resume) (windows_nat_target::resume) (windows_nat_target::get_windows_debug_event) (windows_nat_target::interrupt, windows_xfer_memory) (windows_nat_target::close): Update. * nat/windows-nat.c (DEBUG_EVENTS): Use debug_prefixed_printf_cond. (matching_pending_stop, fetch_pending_stop) (continue_last_debug_event): Update.
2021-01-26bfd: add elfcore_write_file_noteMihails Strasuns5-5/+23
Adds a trivial wrapper over elfcore_write_note, primarily to be more consistent with other ELF note helper functions and highlight NT_FILE as one of notes handled by gdb. bfd/ChangeLog: 2020-12-17 Mihails Strasuns <mihails.strasuns@intel.com> * bfd-elf.h (elfcore_write_file_note): New function. * elf.c (elfcore_write_file_note): New function. gdb/ChangeLog: 2020-12-17 Mihails Strasuns <mihails.strasuns@intel.com> * linux-tdep.c (linux_make_mappings_corefile_notes): Start using elfcore_write_file_note.
2021-01-26Segmentation fault i386-genAlan Modra2-0/+7
A case of inst->next being uninitialised. * i386-gen.c (parse_template): Ensure entire template_instance is initialised.
2021-01-26PR27226, ld.bfd contains huge .rodata sectionAlan Modra15-11/+148
This makes it possible to build ld without any compiled-in scripts, by setting COMPILE_IN=no in the environment. pe, beos and pdp11 targets didn't support scripts from the file system, with pdp11 nastily editing the ld/ldscripts file so that the built-in script didn't match. PR 27226 * emulparams/alphavms.sh: Don't set COMPILE_IN. * emulparams/elf64_ia64_vms.sh: Likewise. * emulparams/elf64mmix.sh: Likewise. * emulparams/elf_iamcu.sh: Likewise. * emulparams/elf_k1om.sh: Likewise. * emulparams/elf_l1om.sh: Likewise. * emulparams/mmo.sh: Likewise. * emulparams/pdp11.sh: Set DATA_SEG_ADDR. * scripttempl/pdp11.sc: Use it. * emultempl/pdp11.em: Don't edit .xn script for separate_code, instead use .xe script. Support scripts from file system. * emultempl/beos.em: Support scripts from file system. * emultempl/pe.em: Likewise. * emultempl/pep.em: Likewise. * testsuite/ld-bootstrap/bootstrap.exp: Make tmpdir/ldscripts link.
2021-01-26gas testsuite tidyAlan Modra29-31/+64
This replaces skip and notarget in a number of gas tests with xfail, the idea being that running tests might expose segmentation faults or other serious errors even when we don't expect a test to pass. Doing so showed a number of cases where tests now pass, which is another reason to avoid profligate use of notarget and skip. * testsuite/gas/all/local-label-overflow.d: Use xfail rather than notarget all except hppa. Comment. * testsuite/gas/all/sleb128-2.d: Use xfail rather than notarget. * testsuite/gas/all/sleb128-4.d: Likewise. Don't skip msp430. * testsuite/gas/all/sleb128-5.d: Use xfail rather than notarget. * testsuite/gas/all/sleb128-7.d: Likewise. * testsuite/gas/all/sleb128-9.d: Likewise. * testsuite/gas/elf/bignums.d: Likewise. * testsuite/gas/elf/group0c.d: Likewise. * testsuite/gas/elf/group1a.d: Likewise. * testsuite/gas/elf/section-symbol-redef.d: Likewise. * testsuite/gas/elf/section15.d: Likewise. * testsuite/gas/elf/section4.d: Likewise. * testsuite/gas/elf/section7.d: Likewise. * testsuite/gas/macros/irp.d: Likewise. * testsuite/gas/macros/repeat.d: Likewise. * testsuite/gas/macros/rept.d: Likewise. * testsuite/gas/macros/test2.d: Likewise. * testsuite/gas/macros/vararg.d: Likewise. * testsuite/gas/all/string.d: Use xfail rather than skip. * testsuite/gas/elf/missing-build-notes.d: Likewise. * testsuite/gas/elf/section0.d: Likewise. * testsuite/gas/elf/section1.d: Likewise. * testsuite/gas/elf/section10.d: Likewise. * testsuite/gas/elf/section11.d: Likewise. * testsuite/gas/elf/section6.d: Likewise. * testsuite/gas/elf/symtab.d: Use xfail rather than skip, adjust hppa. * testsuite/gas/elf/symtab.s: Don't start directives in first column. * testsuite/gas/macros/test3.d: Don't notarget nds32.
2021-01-26gas byte testAlan Modra5-14/+7
skip *-*-* is a little silly, delete the test. * testsuite/gas/all/byte.d, * testsuite/gas/all/byte.l, * testsuite/gas/all/byte.s: Delete. * testsuite/gas/all/gas.exp: Don't run byte test.
2021-01-26pr27228 testcaseAlan Modra5-4/+15
This failed on ft32, hppa, and mips-irix targets. In the case of ft32 the problem was iterating over an array in reverse and not using the proper condition, so BFD_RELOC_NONE was not recognised. bfd/ * elf32-ft32.c (ft32_reloc_type_lookup): Don't miss ft32_reloc_map[0]. gas/ PR 27282 * testsuite/gas/all/none.d: Replace skip with xfail, don't xfail ft32. * testsuite/gas/elf/pr27228.d: xfail hppa and allow OBJECT match.
2021-01-26gdb: Add default reggroups for ARCShahab Vahedi2-0/+23
There is no reggroups set in ARC. If a "maintenance print reggroups" command is issued, the default register set is dumped (which is fine). However, if a new group is added via an XML file, then that will become the _only_ group. This behavior causes gdb.xml/tdesc-regs.exp to fail. Fixes gdb.xml/tdesc-regs.exp on ARC. gdb/ChangeLog: * arc-tdep.c (arc_add_reggroups): New function. (arc_gdbarch_init): Call arc_add_reggroups.
2021-01-26Fix the date for the last entry in gdb/ChangeLogShahab Vahedi1-1/+1
The previous patch [1] sets the date incorrectly in the ChangeLog. Sorry for the inconvenience. [1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=d56834cbfb7c1
2021-01-26Fix thinko in objcopy's memory freeing code.Frederic Cambus2-1/+7
* objcopy.c (copy_main): Fix a double free happening when both --localize-symbols and --globalize-symbols options are invoked together.
2021-01-26arc: Log "pc" value in "arc_skip_prologue"Anton Kolesov2-1/+5
Log the "pc" address upon entering "arc_skip_prologue". gdb/ChangeLog: * arc-tdep.c (arc_skip_prologue): Log "pc" address.
2021-01-26[gdb/testsuite] Fix gdb.threads/killed-outside.exp with -m32Tom de Vries2-0/+7
When running test-case gdb.threads/killed-outside.exp with target board unix/-m32, we run into: ... (gdb) PASS: gdb.threads/killed-outside.exp: get pid of inferior Executing on target: kill -9 10969 (timeout = 300) spawn -ignore SIGHUP kill -9 10969^M continue^M Continuing.^M [Thread 0xf7cb4b40 (LWP 10973) exited]^M ^M Program terminated with signal SIGKILL, Killed.^M The program no longer exists.^M (gdb) FAIL: gdb.threads/killed-outside.exp: prompt after first continue ... Fix this by allowing this output. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2021-01-26 Tom de Vries <tdevries@suse.de> * gdb.threads/killed-outside.exp: Allow regular output.
2021-01-26[gdb/testsuite] Fix gdb.opt/solib-intra-step.exp with -m32Tom de Vries2-17/+42
When running test-case gdb.opt/solib-intra-step.exp with target board unix/-m32, we run into: ... (gdb) step^M __x86.get_pc_thunk.bx () at ../sysdeps/i386/crti.S:66^M 66 ../sysdeps/i386/crti.S: No such file or directory.^M (gdb) FAIL: gdb.opt/solib-intra-step.exp: first-hit (optimized) ... The thunk is a helper function for PIC, and given that we have line info for it, we step into. Fix this by allowing the step into the thunk, and stepping out of it. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2021-01-26 Tom de Vries <tdevries@suse.de> * gdb.opt/solib-intra-step.exp: Handle stepping into thunk.
2021-01-26Automatic date update in version.inGDB Administrator1-1/+1
2021-01-25[gdb/symtab] Handle DW_AT_ranges with DW_FORM_sec_off in partial DIETom de Vries5-2/+53
While looking into a failure in gdb.go/package.exp with gcc-11, I noticed that gdb shows some complaints when loading the executable (also with gcc-10, where the test-case passes): ... $ gdb -batch -iex "set complaints 100" package.10 -ex start During symbol reading: Attribute value is not a constant (DW_FORM_sec_offset) Temporary breakpoint 1 at 0x402ae6: file gdb.go/package1.go, line 8. During symbol reading: Attribute value is not a constant (DW_FORM_sec_offset) During symbol reading: Invalid .debug_rnglists data (no base address) ... Fix this by using as_unsigned () to read DW_AT_ranges in the partial DIE reader, similar to how that is done in dwarf2_get_pc_bounds. Tested on x86_64-linux. gdb/ChangeLog: 2021-01-25 Bernd Edlinger <bernd.edlinger@hotmail.de> Simon Marchi <simon.marchi@polymtl.ca> Tom de Vries <tdevries@suse.de> * dwarf2/read.c (partial_die_info::read): Use as_unsigned () for DW_AT_ranges. gdb/testsuite/ChangeLog: 2021-01-25 Tom de Vries <tdevries@suse.de> * gdb.dwarf2/dw2-ranges-psym.exp (gdb_load_no_complaints): New proc. * lib/gdb.exp: Use gdb_load_no_complaints.
2021-01-25gdb/docs: add parentheses in Python examples using printMarco Barisione2-9/+13
This makes the examples work both in Python 2 and 3. gdb/doc/ChangeLog: * python.texi: Add parentheses to print statements/functions. Change-Id: I8571f2ee005acd96c7bb43f9882d19b00b2aa3db
2021-01-25Fix fixed-point regression with recent GCCTom Tromey6-19/+65
A recent version of GCC changed how fixed-point types are described. For example, a denominator in one test case now looks like: GNU_denominator (exprloc) [ 0] implicit_value: 16 byte block: 00 00 b8 9d 0d 69 55 a0 01 00 00 00 00 00 00 00 ... the difference being that this now uses exprloc and emits a DW_OP_implicit_value for the 16-byte block. (DWARF 5 still uses DW_FORM_data16.) This change was made here: https://gcc.gnu.org/pipermail/gcc-patches/2020-December/560897.html This patch updates gdb to handle this situation. Note that, before GCC 11, this test would not give the same answer. Earlier versions of GCC fell back to GNAT encodings for this case. gdb/ChangeLog 2021-01-25 Tom Tromey <tromey@adacore.com> * dwarf2/read.c (get_mpz): New function. (get_dwarf2_rational_constant): Use it. gdb/testsuite/ChangeLog 2021-01-25 Tom Tromey <tromey@adacore.com> * gdb.ada/fixed_points.exp: Add regression test. * gdb.ada/fixed_points/fixed_points.adb (FP5_Var): New variable. * gdb.ada/fixed_points/pck.adb (Delta5, FP5_Type): New.
2021-01-25Specially handle array contexts in Ada expression resolutionTom Tromey4-3/+32
A user noticed that the Ada expression code in gdb did not automatically disambiguate an enumerator in an array context. That is, an expression like "print array(enumerator)" is not ambiguous, even if "enumerator" is declared in multiple enumerations, because the correct one can be found by examining the array's index type. This patch changes the Ada expression resolution code to handle this case. gdb/ChangeLog 2021-01-25 Tom Tromey <tromey@adacore.com> * ada-lang.c (resolve_subexp): Handle array context. gdb/testsuite/ChangeLog 2021-01-25 Tom Tromey <tromey@adacore.com> * gdb.ada/local-enum.exp: Add enumerator resolution test.
2021-01-25Add test case for symbol menu for local enumeratorsTom Tromey3-0/+116
Ada will normally present a menu to the user to allow manual disambiguation of symbols. The AdaCore internal GDB had a bug that prevented this from happening. Although this bug is not in the FSF GDB, it seemed worthwhile to write a test case to ensure this. gdb/testsuite/ChangeLog 2021-01-25 Tom Tromey <tromey@adacore.com> * gdb.ada/local-enum.exp: New file. * gdb.ada/local-enum/local.adb: New file.
2021-01-25Add some more DWARF-5 sectionsFangrui Song2-3/+10
2021-01-25gdb/doc: move @menu blocks to the end of their enclosing @nodeAndrew Burgess2-35/+44
The @menus should be at the end of a @node. We mostly get this right, but there's a few places where we don't. This commit fixes the 5 places we get this wrong. I manually checked the info page and read each of the offending nodes after this change and I believe they all still make sense with the menu moved. gdb/doc/ChangeLog: * gdb.texinfo (Specify Location): Move menu to the end of the node. (Auto-loading): Likewise. (Extending GDB): Likewise. (TUI): Likewise. (Operating System Information): Likewise.
2021-01-25Update linker scripts with the names of new DWARF-5 debug sections.Nick Clifton2-7/+17
* scripttempl/DWARF.sc: Add .debug_loclists, .debug_rnglists, .debug_line_str and .debug_str_offsets. Move .debug_macro and .debug_addr into DWARF-5 section.
2021-01-25Automatic date update in version.inGDB Administrator1-1/+1
2021-01-24DWARF-5: Ignore empty range in DWARF-5 line number tablesH.J. Lu2-3/+6
The DWARF5 spec does indeed explicitly say: "A bounded range entry whose beginning and ending address offsets are equal (including zero) indicates an empty range and may be ignored." Since arange_add already ignores empty ranges, remove the whole check which is equivalent to the check plus explicit continue. PR binutils/27231 * dwarf2.c (read_rnglists): Ignore empty range when parsing line number tables.
2021-01-24gas: Add a testcase for PR gas/27228H.J. Lu4-0/+21
PR gas/27228 * testsuite/gas/elf/elf.exp: Run pr27228. * testsuite/gas/elf/pr27228.d: New file. * testsuite/gas/elf/pr27228.s: Likewise.
2021-01-24Minor updates to the 'how to make a release' documentNick Clifton2-11/+17
2021-01-24PR27228, .reloc wrong symbol emitted for undefined local symbolAlan Modra2-1/+9
Local symbols are of course supposed to be defined by their object file, but in other cases a local symbol is promoted to global by gas if undefined and referenced. This patch stops gas wrongly replacing a local undefined symbol with the undefined section symbol, resulting in a .reloc undefined local symbol being emitted as global. PR 27228 * write.c (resolve_reloc_expr_symbols): Don't assume local symbol is defined.
2021-01-23Avoid crash when "compile" expression uses cooked registerTom Tromey2-2/+22
If the "compile" command is used with an expression that happens to require a cooked register, then GDB can crash. This patch does not fix the bug, but at least turns the crash into an error instead. 2021-01-23 Tom Tromey <tom@tromey.com> PR compile/25575 * compile/compile-loc2c.c (note_register): New function. (pushf_register_address, pushf_register): Use it.
2021-01-23Use std::vector for "registers_used" in compile featureTom Tromey9-26/+51
This changes the GDB compile code to use std::vector<bool> when computing which registers are used. This is a bit more idiomatic, but the main benefit is that it also adds some checking when the libstd++ debug mode is enabled. 2021-01-23 Tom Tromey <tom@tromey.com> * symtab.h (struct symbol_computed_ops) <generate_c_location>: Change type of "registers_used". * dwarf2/loc.h (dwarf2_compile_property_to_c): Update. * dwarf2/loc.c (dwarf2_compile_property_to_c) (locexpr_generate_c_location, loclist_generate_c_location): Change type of "registers_used". * compile/compile.h (compile_dwarf_expr_to_c) (compile_dwarf_bounds_to_c): Update. * compile/compile-loc2c.c (pushf_register_address) (pushf_register, do_compile_dwarf_expr_to_c) (compile_dwarf_expr_to_c, compile_dwarf_bounds_to_c): Change type of "registers_used". * compile/compile-c.h (generate_c_for_variable_locations): Update. * compile/compile-c-symbols.c (generate_vla_size) (generate_c_for_for_one_variable): Change type of "registers_used". (generate_c_for_variable_locations): Return std::vector. * compile/compile-c-support.c (generate_register_struct): Change type of "registers_used". (compute): Update.