aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2023-02-22debug_link duplicate file size checksAlan Modra1-6/+2
bfd_malloc_and_get_section does these checks. * opncls.c (bfd_get_debug_link_info_1): Don't check section size against file size. (bfd_get_alt_debug_link_info): Likewise.
2023-02-21Issue error on erroneous expressionTom Tromey2-1/+9
A while back I discovered that this does not issue an error: (gdb) p $x = (void * ) 57 $3 = (void *) 0x39 (gdb) p $x + 7 = 3 $6 = (void *) 0x3 This patch fixes the bug. Regression tested on x86-64 Fedora 36. Reviewed-By: Bruno Larsen <blarsen@redhat.com> Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=19312
2023-02-21gdb: add --with-curses to --configuration outputPhilippe Blain4-9/+22
'gdb --configuration' does not mention if GDB was built with curses. Since b5075fb68d4 (Rename to allow_tui_tests, 2023-01-08) it does show --enable-tui (or --disable-tui), but one might want to know if GDB was built with curses independently of the availability of the TUI. Since configure.ac uses AC_SEARCH_LIBS to check for the curses library, we do not get an automatically defined HAVE_LIBCURSES symbol in config.in. We do have symbols defined by AC_CHECK_HEADERS (HAVE_CURSES_H, etc.) but it would be cumbersome to use those in print_gdb_configuration because we would have to check for all 6 symbols corresponding the 6 headers listed. This would also increase the maintenance burden if support for other variations of curses are added. Instead, define 'HAVE_LIBCURSES' ourselves by adding an 'action-if-found' argument to AC_SEARCH_LIBS, and use it in print_gdb_configuration. While at it, remove the condition on 'ac_cv_search_waddstr' and set 'curses_found' directly in 'action-if-found'. Change-Id: Id90e3d73990e169cee51bcc3e1d52072cfacd5b8 Approved-By: Simon Marchi <simon.marchi@efficios.com>
2023-02-21[gdb/testsuite] Require compilation flags in two gdb.arch/aarch64 test-casesTom de Vries2-0/+4
With test-cases gdb.arch/aarch64-mte-core.exp and gdb.arch/aarch64-pauth.exp I run into compilation errors due to unsupported compilation flags. Fix this by requiring the compilation flags, such that I have instead: ... UNSUPPORTED: gdb.arch/aarch64-mte-core.exp: require failed: \ have_compile_flag -march=armv8.5-a+memtag UNSUPPORTED: gdb.arch/aarch64-pauth.exp: require failed: \ have_compile_flag -mbranch-protection=pac-ret+leaf ... Tested on aarch64-linux.
2023-02-21[gdb/testsuite] Require istarget x86* in ↵Tom de Vries1-0/+2
gdb.reverse/step-indirect-call-thunk.exp On aarch64-linux, I run into: ... Running gdb.reverse/step-indirect-call-thunk.exp ... gdb compile failed, gcc: error: unrecognized command line option \ '-mindirect-branch=thunk'; did you mean '-findirect-inlining'? gcc: error: unrecognized command line option '-mfunction-return=thunk'; \ did you mean '-Wfunction-elimination'? UNTESTED: gdb.reverse/step-indirect-call-thunk.exp: failed to prepare ... Fix this by requiring istarget "x86*", similar to what was added in gdb.base/step-indirect-call-thunk.exp by commit 43127ae5714 ("Fix gdb.base/step-indirect-call-thunk.exp"), such that we have instead: ... UNSUPPORTED: gdb.reverse/step-indirect-call-thunk.exp: require failed: \ istarget "x86* ... Tested on x86_64-linux and aarch64-linux.
2023-02-21[gdb/testsuite] Require -fsplit-stack in gdb.base/morestack.expTom de Vries2-0/+10
On aarch64-linux, I run into: ... gdb compile failed, cc1: error: '-fsplit-stack' is not supported by this \ compiler configuration UNTESTED: gdb.base/morestack.exp: failed to prepare ... Fix this by requiring -fsplit-stack, such that we have instead: ... UNSUPPORTED: gdb.base/morestack.exp: require failed: \ expr [have_compile_flag -fsplit-stack] ... Tested on x86_64-linux and aarch64-linux.
2023-02-21[gdb/testsuite] Require syscall time in gdb.reverse/time-reverse.expTom de Vries2-0/+13
On aarch64-linux, I run into: ... Running gdb.reverse/time-reverse.exp ... gdb compile failed, gdb.reverse/time-reverse.c: In function 'main': gdb.reverse/time-reverse.c:39:12: error: 'SYS_time' undeclared \ (first use in this function); did you mean 'SYS_times'? syscall (SYS_time, &time_global); ^~~~~~~~ SYS_times gdb.reverse/time-reverse.c:39:12: note: each undeclared identifier is \ reported only once for each function it appears in UNTESTED: gdb.reverse/time-reverse.exp: failed to prepare ... Fix this by adding a new proc have_syscall, and requiring syscall time, such that we have instead: ... UNSUPPORTED: gdb.reverse/time-reverse.exp: require failed: \ expr [have_syscall time] ... Tested on x86_64-linux and aarch64-linux.
2023-02-21[gdb/testsuite] Require python in gdb.dap/basic-dap.expTom de Vries1-0/+2
When running test-case gdb.dap/basic-dap.exp with a gdb without python support, I run into: ... builtin_spawn gdb -nw -nx -iex set height 0 -iex set width 0 \ -data-directory data-directory -iex set debug dap-log-file dap.log.1 -q \ -i=dap >>> {"seq": 1, "type": "request", "command": "initialize"} Interpreter `dap' unrecognized ERROR: eof reading json header ... Fix this by requiring python in the test-case. Tested on x86_64-linux, both with a gdb without and with python.
2023-02-21Update the description of the bfd_fill_in_gnu_debuglink_section functionNick Clifton2-8/+8
2023-02-21Updated translatios for the bfd and gprof directories.Nick Clifton3-1448/+1564
2023-02-21gas/testsuite: adjust a test for case insensitive file systemsClément Chigot2-7/+7
When dealing with case insensitive file systems, ".file line.s" and ".file Line.s" are identical and thus gas won't change the current input file. However, in line.l test, it's expecting to trigger an input file switch. As the second filename doesn't matter in it, change it to fit for those file systems. gas/ChangeLog: * testsuite/gas/elf/line.l: Change Line.s to Line2.s. * testsuite/gas/elf/line.s: Adjust output.
2023-02-21[aarch64] Enable pointer authentication support for aarch64 bare ↵Luis Machado4-51/+100
metal/kernel mode addresses At the moment GDB only handles pointer authentication (pauth) for userspace addresses and if we're debugging a Linux-hosted program. The Linux Kernel can be configured to use pauth instructions for some additional security hardening, but GDB doesn't handle this well. To overcome this limitation, GDB needs a couple things: 1 - The target needs to advertise pauth support. 2 - The hook to remove non-address bits from a pointer needs to be registered in aarch64-tdep.c as opposed to aarch64-linux-tdep.c. There is a patch for QEMU that addresses the first point, and it makes QEMU's gdbstub expose a couple more pauth mask registers, so overall we will have up to 4 pauth masks (2 masks or 4 masks): pauth_dmask pauth_cmask pauth_dmask_high pauth_cmask_high pauth_dmask and pauth_cmask are the masks used to remove pauth signatures from userspace addresses. pauth_dmask_high and pauth_cmask_high masks are used to remove pauth signatures from kernel addresses. The second point is easily addressed by moving code around. When debugging a Linux Kernel built with pauth with an unpatched GDB, we get the following backtrace: #0 __fput (file=0xffff0000c17a6400) at /repos/linux/fs/file_table.c:296 #1 0xffff8000082bd1f0 in ____fput (work=<optimized out>) at /repos/linux/fs/file_table.c:348 #2 0x30008000080ade30 [PAC] in ?? () #3 0x30d48000080ade30 in ?? () Backtrace stopped: previous frame identical to this frame (corrupt stack?) With a patched GDB, we get something a lot more meaningful: #0 __fput (file=0xffff0000c1bcfa00) at /repos/linux/fs/file_table.c:296 #1 0xffff8000082bd1f0 in ____fput (work=<optimized out>) at /repos/linux/fs/file_table.c:348 #2 0xffff8000080ade30 [PAC] in task_work_run () at /repos/linux/kernel/task_work.c:179 #3 0xffff80000801db90 [PAC] in resume_user_mode_work (regs=0xffff80000a96beb0) at /repos/linux/include/linux/resume_user_mode.h:49 #4 do_notify_resume (regs=regs@entry=0xffff80000a96beb0, thread_flags=4) at /repos/linux/arch/arm64/kernel/signal.c:1127 #5 0xffff800008fb9974 [PAC] in prepare_exit_to_user_mode (regs=0xffff80000a96beb0) at /repos/linux/arch/arm64/kernel/entry-common.c:137 #6 exit_to_user_mode (regs=0xffff80000a96beb0) at /repos/linux/arch/arm64/kernel/entry-common.c:142 #7 el0_svc (regs=0xffff80000a96beb0) at /repos/linux/arch/arm64/kernel/entry-common.c:638 #8 0xffff800008fb9d34 [PAC] in el0t_64_sync_handler (regs=<optimized out>) at /repos/linux/arch/arm64/kernel/entry-common.c:655 #9 0xffff800008011548 [PAC] in el0t_64_sync () at /repos/linux/arch/arm64/kernel/entry.S:586 Backtrace stopped: Cannot access memory at address 0xffff80000a96c0c8
2023-02-21ld/testsuite: don't output to /dev/nullClément Chigot1-1/+3
Mingw doesn't have /dev/null and thus "-o /dev/null" will fail. Currently, all the options are checked using this "-o /dev/null", resulting in them being disabled on mingw hosts. Fix that by outputting to a real file for all targets. ld/ChangeLog: * testsuite/config/default.exp: Replace "-o /dev/null" by a file.
2023-02-21Both FAIL and PASS "check sections 2"?Alan Modra1-9/+10
* testsuite/ld-checks/checks.exp (check sections 2): Don't continue on with rest of test past first fail.
2023-02-21ld-libs test on alpha-vmsAlan Modra1-0/+5
* testsuite/ld-libs/libs.exp: Don't run for alpha-vms.
2023-02-21alpha-*-vms missing librariesAlan Modra1-1/+1
For this: ./ld-new: cannot find -limagelib: No such file or directory ./ld-new: cannot find -lstarlet: No such file or directory ./ld-new: cannot find -lsys$public_vectors: No such file or directory the logs showed creating dummy tmpdir/libimagelib: creating dummy No creating dummy such etc. So rubbish instead of tmpdir/libimagelib.a and the other required libs. * testsuite/config/default.exp: Correct regex detecting missing libraries automatically searched by alpha-dec-vms-ld.
2023-02-21Automatic date update in version.inGDB Administrator1-1/+1
2023-02-20Redefine FUNCTION in doc.strTom Tromey2-9/+5
FUNCTION is identical to func, so simplify doc.str. 2023-02-17 Tom Tromey <tom@tromey.com> * doc/doc.str (FUNCTION): Call func.
2023-02-20Hoist the SECTION comment in opncls.cTom Tromey2-8/+12
The opening and closing node in BFD starts: File: bfd.info, [...] /* Set to N to open the next N BFDs using an alternate id space. */ extern unsigned int bfd_use_reserved_id; 2.13 Opening and closing BFDs ============================= That is, there's a stray C comment and declaration before any other text or subsections. This occurs because the code fragment for bfd_use_reserved_id comes before the SECTION comment. Hoisting it makes this a little nicer. 2023-02-17 Tom Tromey <tom@tromey.com> * opncls.c: Hoist the SECTION comment.
2023-02-20Don't use chew comments for static functionsTom Tromey2-119/+58
I found a few static functions in the BFD manual. These can't be called by any user of the library, so I don't think it's useful to put them in the manual. This patch removes the chew markup from their comments. 2023-02-17 Tom Tromey <tom@tromey.com> * opncls.c (bfd_get_debug_link_info_1, separate_debug_file_exists) (separate_alt_debug_file_exists, find_separate_debug_file) (get_build_id, get_build_id_name, check_build_id_file): Don't use chew comments.
2023-02-20Fix formatting of long function description in chew outputTom Tromey3-0/+41
Currently, if a function description spans a line, the resulting info can look like this: -- Function: long bfd_canonicalize_reloc (bfd *abfd, asection *sec, arelent **loc, asymbol **syms); Call the back end associated with the open BFD ABFD and translate the external form of the relocation information attached to SEC into the internal canonical form. Place the table into memory at LOC, That is, the function prototype runs together with the text in an ugly way. This patch fixes this by introducing a new primitive, so that the generated Texinfo can be a bit nicer. Now this output looks like: -- Function: long bfd_canonicalize_reloc (bfd *abfd, asection *sec, arelent **loc, asymbol **syms); Call the back end associated with the open BFD ABFD and translate the external form of the relocation information attached to SEC 2023-02-17 Tom Tromey <tom@tromey.com> * doc/doc.str (SYNOPSIS): Use collapse_whitespace. * doc/chew.c (collapse_whitespace): New function. (main): Register collapse_whitespace.
2023-02-20opcodes: style m68k disassembler outputAndreas Schwab1-116/+238
2023-02-20gdb: revert one erroneous bool-ification changeSimon Marchi1-1/+1
Commit 42c13555ff88 ("Change value::m_stack to bool") erroneously changed a `0` to `false` in this call to read_value_memory. This parameter is `LONGEST bit_offset`, it should stay `0`. Change-Id: I128df6834cf8055ec6a7051e237e379978d3d651
2023-02-20ld/testsuite: handle Windows drive letter in a noinit testClément Chigot1-2/+2
The regexp in "noinit sections (ld -r)" is skipping the file path before the first ":". However, on Windows, a path can start with "C:". Adjust the regexp to allow such cases. ld/ChangeLog: * testsuite/ld-elf/noinit-sections-2.l: Allow Windows paths (starting with C:).
2023-02-20ld/testsuite: adjust to Windows path separator.Clément Chigot7-7/+7
In some tests, the path reported on Windows will have a \ instead of a /. This occurs when a file is concatened with the search path in ldfile.c.: "ld -Ltmpdir -ltext" will result into "tmpdir\libtext.a". ld/ChangeLog: * testsuite/ld-elf/retain5.map: Allow \ path separator. * testsuite/ld-plugin/plugin-10.d: Likewise. * testsuite/ld-plugin/plugin-11.d: Likewise. * testsuite/ld-plugin/plugin-18.d: Likewise. * testsuite/ld-plugin/plugin-19.d: Likewise. * testsuite/ld-plugin/plugin-20.d: Likewise. * testsuite/ld-plugin/plugin-22.d: Likewise.
2023-02-20gdb/doc: Consistency fixes for GDB/MI documentationAndrew Burgess1-27/+27
I noticed two inconsistencies in the GDB/MI documentation, which this commit addresses: 1. Each MI command is introduced like this: @subheading The @code{-command-name} Command Except for a few of the tracing command, which just use: @subheading -command-name In this commit I've updated all these trace commands to use the more common format. 2. Each MI command starts with a @subheading, and then the details of that command are split up using multiple @subsubheading entries. Except for a few commands which use @subheading for the top-level command, and then continue to use @subheading for each part of the command description. In this commit I've updated these to use @subsubheading where appropriate.
2023-02-20So the linker from producing an export data table when run with ↵Nick Clifton2-1/+8
--exclude-all-symbols. PR 30004 * pe-dll.c (pe_dll_build_sections): Do not build an edata section if all symbols are being excluded.
2023-02-20[gdb/symtab] Trust epilogue unwind info for unknown or non-gcc producerTom de Vries1-1/+7
Currently we only trust epilogue unwind info only for gcc >= 4.5.0. This has the effect that we don't trust epilogue unwind info for: - unknown producers (CU without DW_AT_producer attribute) - non-gcc producers (say, clang). Instead, only distrust epilogue unwind info only for gcc < 4.5.0.
2023-02-20[gdb/symtab] Trust epilogue unwind info for unknown producer (-g0 case)Tom de Vries3-2/+108
For a -g0 -fasynchronous-unwind-tables exec (without .debug_info but with .eh_frame section), start using the dwarf2 unwinder instead of the "amd64 epilogue override" unwinder, by returning true in compunit_epilogue_unwind_valid for cust == nullptr. This has effect both on the amd64 and i386 targets, but only add amd64 test-case gdb.base/unwind-on-each-insn-amd64-2.exp.
2023-02-20[gdb/tdep] Add amd64/i386 epilogue override unwindersTom de Vries2-14/+103
For amd64 the current frame-unwinders are: ... $ gdb -q -batch -ex "set arch i386:x86-64" -ex "maint info frame-unwinders" The target architecture is set to "i386:x86-64". dummy DUMMY_FRAME dwarf2 tailcall TAILCALL_FRAME inline INLINE_FRAME python NORMAL_FRAME amd64 epilogue NORMAL_FRAME dwarf2 NORMAL_FRAME dwarf2 signal SIGTRAMP_FRAME amd64 sigtramp SIGTRAMP_FRAME amd64 prologue NORMAL_FRAME ... For a -g0 -fasynchronous-unwind-tables exec (without .debug_info but with .eh_frame section), we'd like to start using the dwarf2 unwinder instead of the "amd64 epilogue" unwinder, by returning true in compunit_epilogue_unwind_valid for cust == nullptr. But we'd run into the following problem for a -g0 -fno-asynchronous-unwind-tables (without .debug_info and .eh_frame section) exec: - the "amd64 epilogue" unwinder would not run (because compunit_epilogue_unwind_valid () == true) - the dwarf2 unwinder would also not run (because there's no .eh_frame info). Fix this by: - renaming the "amd64 epilogue" unwinder to "amd64 epilogue override", and - adding a fallback "amd64 epilogue" after the dwarf unwinders, while making sure that only one of the two is active. Likewise for i386. NFC. For amd64, this results in this change: ... $ gdb -q -batch -ex "set arch i386:x86-64" -ex "maint info frame-unwinders" The target architecture is set to "i386:x86-64". dummy DUMMY_FRAME dwarf2 tailcall TAILCALL_FRAME inline INLINE_FRAME python NORMAL_FRAME -amd64 epilogue NORMAL_FRAME +amd64 epilogue override NORMAL_FRAME dwarf2 NORMAL_FRAME dwarf2 signal SIGTRAMP_FRAME +amd64 epilogue NORMAL_FRAME amd64 sigtramp SIGTRAMP_FRAME amd64 prologue NORMAL_FRAME ... And for i386: ... $ gdb -q -batch -ex "set arch i386" -ex "maint info frame-unwinders" The target architecture is set to "i386". dummy DUMMY_FRAME dwarf2 tailcall TAILCALL_FRAME iline INLINE_FRAME -i386 epilogue NORMAL_FRAME +i386 epilogue override NORMAL_FRAME dwarf2 NORMAL_FRAME dwarf2 signal SIGTRAMP_FRAME +i386 epilogue NORMAL_FRAME i386 stack tramp NORMAL_FRAME i386 sigtramp SIGTRAMP_FRAME i386 prologue NORMAL_FRAME ...
2023-02-20[gdb/tdep] Fix amd64/i386_stack_frame_destroyed_pTom de Vries2-15/+24
The use of compunit_epilogue_unwind_valid in both amd64_stack_frame_destroyed_p and i386_stack_frame_destroyed_p is problematic, in the sense that the functions no longer match their documented behaviour. Fix this by moving the use of compunit_epilogue_unwind_valid to amd64_epilogue_frame_sniffer and i386_epilogue_frame_sniffer. No functional changes.
2023-02-20[gdb/symtab] Factor out compunit_epilogue_unwind_validTom de Vries3-6/+15
Factor out compunit_epilogue_unwind_valid from both amd64_stack_frame_destroyed_p and i386_stack_frame_destroyed_p. No functional changes. Also add a comment in the new function about the assumption that in absence of producer information, epilogue unwind info is invalid. Approved-By: Tom Tromey <tom@tromey.com>
2023-02-20[gdb/testsuite] Add xfail case in gdb.python/py-record-btrace.expTom de Vries1-1/+6
I came across: ... gdb) PASS: gdb.python/py-record-btrace.exp: prepare record: stepi 100 python insn = r.instruction_history^M warning: Non-contiguous trace at instruction 1 (offset = 0x3e10).^M (gdb) FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.i\ nstruction_history ... I'm assuming it's the same root cause as for the already present XFAIL. Fix this by recognizing above warning in the xfail regexp. Tested on x86_64-linux, although sofar I was not able to trigger the warning again. Approved-By: Markus T. Metzger <markus.t.metzger@intel.com>
2023-02-20[gdb/testsuite] Fix gdb.threads/schedlock.exp for gcc 4.8.5Tom de Vries1-3/+2
Since commit 9af467b8240 ("[gdb/testsuite] Fix gdb.threads/schedlock.exp on fast cpu"), the test-case fails for gcc 4.8.5. The problem is that for gcc 4.8.5, the commit turned a two-line loop: ... (gdb) next 78 while (*myp > 0) (gdb) next 81 MAYBE_CALL_SOME_FUNCTION(); (*myp) ++; (gdb) next 78 while (*myp > 0) ... into a three-line loop: ... (gdb) next 83 MAYBE_CALL_SOME_FUNCTION(); (*myp) ++; (gdb) next 84 cnt++; (gdb) next 85 } (gdb) next 83 MAYBE_CALL_SOME_FUNCTION(); (*myp) ++; (gdb) ... and the test-case doesn't expect this. Fix this by reverting back to the original loop shape as much as possible by: - removing the cnt++ line - replacing "while (1)" with "while (one)", where one is a volatile variable set to 1. Tested on x86_64-linux, using compilers: - gcc 4.8.5, 7.5.0, 12.2.1 - clang 4.0.1, 13.0.1
2023-02-20In-memory nested archivesAlan Modra1-0/+6
alpha-linuxecoff has compressed archives that are decompressed to a bfd-in-memory. We'd need to handle quite a lot of corner cases to support nesting of such archives, so just stop it before we run into segfaults later. * opncls.c (_bfd_new_bfd_contained_in): Prohibit nested archives in memory.
2023-02-20Automatic date update in version.inGDB Administrator1-1/+1
2023-02-19Convert contained_in to methodTom Tromey8-22/+20
This converts contained_in to be a method of block.
2023-02-19Make block members 'private'Tom Tromey1-6/+6
This changes block to make the data members 'private'.
2023-02-19Remove allocate_block and allocate_global_blockTom Tromey5-35/+10
This removes allocate_block and allocate_global_block in favor of simply calling 'new'.
2023-02-19Have global_block inherit from blockTom Tromey2-8/+2
This changes global_block to inherit from block, which is what was always intended.
2023-02-19Use 'new' for block and global_blockTom Tromey2-14/+12
This changes block and global_block to add initializers, and then to use 'new' for allocation.
2023-02-19Fix memory leak in mdebugread.cTom Tromey1-10/+9
mdebugread.c allocates blocks on the heap. However, this is a memory leak if the corresponding objfile is ever destroyed. This patch changes this code to use allocate_block instead, fixing a FIXME from 2003. I don't know how to test this patch.
2023-02-19Remove ALL_BLOCK_SYMBOLSTom Tromey12-84/+35
This removes ALL_BLOCK_SYMBOLS in favor of foreach.
2023-02-19Remove ALL_BLOCK_SYMBOLS_WITH_NAMETom Tromey5-41/+13
This removes ALL_BLOCK_SYMBOLS_WITH_NAME in favor of foreach.
2023-02-19Convert explicit iterator uses to foreachTom Tromey3-17/+5
This converts most existing explicit uses of block_iterator to use foreach with the range iterator instead.
2023-02-19Introduce a block iterator wrapperTom Tromey1-0/+50
This introduces a C++-style iterator that wraps the existing block_iterator. It also adds a range adapter. These will be used in a later patch.
2023-02-19Combine both styles of block iteratorTom Tromey3-56/+32
This merges the two styles of block iterator, having the initialization API decide which to use based on an optional parameter.
2023-02-19Store 'name' in block_iteratorTom Tromey3-15/+19
This changes the block_iterator to store the 'name' that is used by block_iter_match_next. This avoids any problem where the name could be passed inconsistently, and also makes the subsequent patches easier to understand.
2023-02-19Convert block_static_link to methodTom Tromey3-16/+18
This converts block_static_link to be a method. This was mostly written by script.
2023-02-19Convert set_block_compunit_symtab to methodTom Tromey4-9/+10
This converts set_block_compunit_symtab to be a method. This was mostly written by script.