aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2023-03-29gprofng: Add version symbols to libgprofng.verVladimir Mezentsev2-42/+62
gprofng/ChangeLog 2023-03-29 Vladimir Mezentsev <vladimir.mezentsev@oracle.com> PR gprofng/30089 * libcollector/libgprofng.ver: Add version symbols. * libcollector/synctrace.c: Fix typo for pthread_mutex_lock.
2023-03-30Setting sh_link for SHT_REL/SHT_RELAAlan Modra1-14/+16
It's wrong to have an alloc reloc section trying to use a non-alloc symbol table. * elf.c (assign_section_numbers <SHT_REL, SHT_RELA>): Correct comment. Always set sh_link to .dynsym for alloc reloc sections and to .symtab for non-alloc.
2023-03-30Fix memory leak in bfd_get_debug_link_info_1Alan Modra2-13/+9
* opncls.c (bfd_get_alt_debug_link_info): Don't bother freeing after bfd_malloc_and_get_section failure. (get_build_id): Likewise. (bfd_get_debug_link_info_1): Likewise. Free section contents when crc not present. * section.c (bfd_malloc_and_get_section): Document that the buffer is NULL on error return.
2023-03-30Tidy leaked objcopy memoryAlan Modra2-22/+31
* objcopy.c (delete_symbol_htabs): Also free symbols. (write_debugging_info): Free strings and syms once written. * wrstabs.c (write_stabs_in_sections_debugging_info): memset entire info struct. Free hash tables before returning. Free syms on error return.
2023-03-30Tidy memory on addr2line failuresAlan Modra1-0/+3
* addr2line.c (process_file): Close bfd on error paths.
2023-03-29Fix typo in ld manual --enable-non-contiguous-regions exampleRoland McGrath1-1/+1
2023-03-30Automatic date update in version.inGDB Administrator1-1/+1
2023-03-30RISC-V: PR28789, Reject R_RISCV_PCREL relocations with ABS symbol in PIC/PIE.Palmer Dabbelt9-0/+111
The non-preemptible SHN_ABS symbol with a pc-relative relocation should be disallowed when generating shared object (pic and pie). Generally, the following cases, which refer to pr25749, will cause a symbol be non-preemptible, * -pie, or -shared with -symbolic * STV_HIDDEN, STV_INTERNAL, STV_PROTECTED * Have dynamic symbol table, but without the symbol * VER_NDX_LOCAL However, PCREL_HI20/LO12 relocs are always bind locally when generating shared object, so not only the non-preemptible absolute symbol need to be disallowed, all absolute symbol references need but except that they are defined in linker script. If we also disallow the absolute symbol in linker script, then the glibc-linux toolchain build failed, so regard them as pc-relative symbols, just like what x86 did. Maybe we should add this check for all pc-relative relocations, rather than just handle in R_RISCV_PCREL relocs. Ideally, since the value of SHN_ABS symbol is a constant, only S - A relocations should be allowed in the shared object, so only BFD_RELOC_8/16/32/64 are allowed, which means R_RISCV_32/R_RISCV_64. bfd/ PR 28789 * elfnn-riscv.c (riscv_elf_check_relocs): The absolute symbol cannot be referneced with pc-relative relocation when generating shared object. ld/ PR 28789 * ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp: Updated. * ld/testsuite/ld-riscv-elf/pcrel-reloc*: New testcases.
2023-03-30RISC-V: Clarify link behaviors of R_RISCV_32/64 relocations with ABS symbol.Nelson Chu14-10/+236
There are two improvements, which are all referenced to aarch64, * R_RISCV_32 with non ABS symbol cannot be used under RV64 when making shard objects. * Don't need dynamic relocation for R_RISCV_32/64 under RV32/RV64 when making shared objects, if the referenced symbol is local ABS symbol. However, considering this link, https://github.com/riscv-non-isa/riscv-elf-psabi-doc/issues/341 Seems like we should makes all R_RISCV_32/64 relocs with ABS symbol that don't need any dynamic relocations when making the shared objects. But anyway, I just sync the current behavior as aarch64 ld, in case there are any unexpected behaviors happen. Passed the gcc/binutils regressions in riscv-gnu-toolchain. bfd/ * elfnn-riscv.c (riscv_elf_check_relocs): Only allow R_RISCV_32 with ABS symbol under RV64. (riscv_elf_relocate_section): R_RISCV_32/64 with local ABS symbol under RV32/RV64 doesn't need any dynamic relocation when making shared objects. I just make the implementations similar to other targets, so that will be more easy to mainatain. ld/ * testsuite/ld-riscv-elf/data-reloc*: New testcases. * testsuite/ld-riscv-elf/ld-riscv-elf.exp: Added new data-reloc* testcases, and need to make ifunc-seperate* testcases work for rv32. * testsuite/ld-riscv-elf/ifunc-seperate-caller-nonplt.s: Likewise. * testsuite/ld-riscv-elf/ifunc-seperate-caller-plt.s: Likewise.
2023-03-30RISC-V: Extract the ld code which are too complicated, and may be reused.Nelson Chu1-74/+82
These types of codes are different for each target, I am not sure what are the best for RISC-V, so extract them out may be more easy to compare what's the difference. bfd/ * elfnn-riscv.c (RISCV_NEED_DYNAMIC_RELOC): New defined. Extracted from riscv_elf_check_relocs, to see if dynamic reloc is needed for the specific relocation. (RISCV_GENERATE_DYNAMIC_RELOC): New defined. Extracted from riscv_elf_relocate_section, to see if R_RISCV_32/64 need to generate dynamic relocation. (RISCV_COPY_INPUT_RELOC): New defined. Extracted from riscv_elf_relocate_section, to see if R_RISCV_32/64 need to copy itslef tp output file. (RISCV_RESOLVED_LOCALLY): New defined. Extracted from riscv_elf_relocate_section, to see if R_RISCV_GOT_HI20 can be resolved locally.
2023-03-29Use the correct frame when evaluating a dynamic propertyTom Tromey4-2/+88
The test case in this patch shows an unusual situation: an Ada array has a dynamic bound, but the bound comes from a frame that's referred to by the static link. This frame is correctly found when evaluating the array variable itself, but is lost when evaluating the array's bounds. This patch fixes the problem by passing this frame through to value_at_lazy in the DWARF expression evaluator.
2023-03-29Pass a frame to value_at_lazy and value_from_contents_and_addressTom Tromey3-11/+20
This patch adds a 'frame' parameter to value_at_lazy and ensures that it is passed down to the call to resolve_dynamic_type. This required also adding a frame parameter to value_from_contents_and_address. Nothing passes this parameter to value_at_lazy yet, so this patch should have no visible effect.
2023-03-29Add frame parameter to resolve_dynamic_typeTom Tromey2-29/+48
This adds a frame parameter to resolve_dynamic_type and arranges for it to be passed through the call tree and, in particular, to all calls to dwarf2_evaluate_property. Nothing passes this parameter yet, so this patch should have no visible effect. A 'const frame_info_ptr *' is used here to avoid including frame.h from gdbtypes.h.
2023-03-29Remove version_at_leastTom Tromey1-15/+3
version_at_least is a less capable variant of version_compare, so this patch removes it.
2023-03-29Rewrite version_compare and rust_at_leastTom Tromey2-50/+23
This rewrites version_compare to allow the input lists to have different lengths, then rewrites rust_at_least to use version_compare.
2023-03-29Introduce rust_at_least helper procTom Tromey4-15/+28
This adds a 'rust_at_least' helper proc, for checking the version of the Rust compiler in use. It then changes various tests to use this with 'require'.
2023-03-29[gdb/testsuite] Require gnatmake 11 for gdb.ada/verylong.expTom de Vries1-0/+1
With test-case gdb.ada/verylong.exp and gnatmake 7.5.0 I run into: ... compilation failed: gcc ... $src/gdb/testsuite/gdb.ada/verylong/prog.adb prog.adb:16:11: warning: file name does not match unit name, should be "main.adb" prog.adb:17:08: "Long_Long_Long_Integer" is undefined (more references follow) gnatmake: "prog.adb" compilation error FAIL: gdb.ada/verylong.exp: compilation prog.adb ... AFAICT, support for Long_Long_Long_Integer was added in gcc 11. Fix this by requiring gnatmake version 11 or higher in the test-case. Tested on x86_64-linux.
2023-03-29doc: fix informations typo in gdb.texinfoNils-Christian Kempke1-2/+2
Co-Authored-By: Christina Schimpe <christina.schimpe@intel.com>
2023-03-29gdb, infcmd: remove redundant ERROR_NO_INFERIOR in continue_commandNils-Christian Kempke1-1/+0
The ERROR_NO_INFERIOR macro is already called at the beginning of the function continue_command. Since target/inferior are not switched in-between, the second call to it is redundant. Co-Authored-By: Christina Schimpe <christina.schimpe@intel.com>
2023-03-29gdb: move displaced_step_dump_bytes into gdbsupport (and rename)Andrew Burgess10-31/+42
It was pointed out during review of another patch that the function displaced_step_dump_bytes really isn't specific to displaced stepping, and should really get a more generic name and move into gdbsupport/. This commit does just that. The function is renamed to bytes_to_string and is moved into gdbsupport/common-utils.{cc,h}. The function implementation doesn't really change. Much... ... I have updated the function to take an array view, which makes it slightly easier to call in a couple of places where we already have a gdb::bytes_vector. I've then added an inline wrapper to convert a raw pointer and length into an array view, which is used in places where we don't easily have a gdb::bytes_vector (or similar). Updated all users of displaced_step_dump_bytes. There should be no user visible changes after this commit. Finally, I ended up having to add an include of gdb_assert.h into array-view.h. When I include array-view.h into common-utils.h I ran into build problems because array-view.h calls gdb_assert. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2023-03-29gdb: more debug output for displaced steppingAndrew Burgess1-17/+68
While investigating a displaced stepping issue I wanted an easy way to see what GDB thought the original instruction was, and what instruction GDB replaced that with when performing the displaced step. We do print out the address that is being stepped, so I can track down the original instruction, I just need to go find the information myself. And we do print out the bytes of the new instruction, so I can figure out what the replacement instruction was, but it's not really easy. Also, the code that prints the bytes of the replacement instruction only prints 4 bytes, which clearly isn't always going to be correct. In this commit I remove the existing code that prints the bytes of the replacement instruction, and add two new blocks of code to displaced_step_prepare_throw. This new code prints the original instruction, and the replacement instruction. In each case we print both the bytes that make up the instruction and the completely disassembled instruction. Here's an example of what the output looks like on x86-64 (this is with 'set debug displaced on'). The two interesting lines contain the strings 'original insn' and 'replacement insn': (gdb) step [displaced] displaced_step_prepare_throw: displaced-stepping 2892655.2892655.0 now [displaced] displaced_step_prepare_throw: original insn 0x401030: ff 25 e2 2f 00 00 jmp *0x2fe2(%rip) # 0x404018 <puts@got.plt> [displaced] prepare: selected buffer at 0x401052 [displaced] prepare: saved 0x401052: 1e fa 31 ed 49 89 d1 5e 48 89 e2 48 83 e4 f0 50 [displaced] fixup_riprel: %rip-relative addressing used. [displaced] fixup_riprel: using temp reg 2, old value 0x7ffff7f8a578, new value 0x401036 [displaced] amd64_displaced_step_copy_insn: copy 0x401030->0x401052: ff a1 e2 2f 00 00 68 00 00 00 00 e9 e0 ff ff ff [displaced] displaced_step_prepare_throw: prepared successfully thread=2892655.2892655.0, original_pc=0x401030, displaced_pc=0x401052 [displaced] displaced_step_prepare_throw: replacement insn 0x401052: ff a1 e2 2f 00 00 jmp *0x2fe2(%rcx) [displaced] finish: restored 2892655.2892655.0 0x401052 [displaced] amd64_displaced_step_fixup: fixup (0x401030, 0x401052), insn = 0xff 0xa1 ... [displaced] amd64_displaced_step_fixup: restoring reg 2 to 0x7ffff7f8a578 0x00007ffff7e402c0 in puts () from /lib64/libc.so.6 (gdb) One final note. For many targets that support displaced stepping (in fact all targets except ARM) the replacement instruction is always a single instruction. But on ARM the replacement could actually be a series of instructions. The debug code tries to handle this by disassembling the entire displaced stepping buffer. Obviously this might actually print more than is necessary, but there's (currently) no easy way to know how many instructions to disassemble; that knowledge is all locked in the architecture specific code. Still I don't think it really hurts, if someone is looking at this debug then hopefully they known what to expect. Obviously we can imagine schemes where the architecture specific displaced stepping code could communicate back how many bytes its replacement sequence was, and then our debug print code could use this to limit the disassembly. But this seems like a lot of effort just to save printing a few additional instructions in some debug output. I'm not proposing to do anything about this issue for now. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2023-03-29[gdb/testsuite] Fix gdb.guile/scm-symbol.exp for remote hostTom de Vries2-5/+10
Fix test-case gdb.guile/scm-symbol.exp for remote host by making a regexp less strict. Likewise in gdb.guile/scm-symtab.exp. Tested on x86_64-linux.
2023-03-29[gdb/testsuite] Fix /gdb.guile/scm-parameter.exp for remote hostTom de Vries1-2/+9
Fix test-case gdb.guile/scm-parameter.exp for remote host by taking into account that gdb_reinitialize_dir has no effect for remote host. Tested on x86_64-linux.
2023-03-29[gdb/testsuite] Fix gdb.guile/scm-objfile-script.exp for remote hostTom de Vries1-2/+2
Fix test-case gdb.guile/scm-objfile-script.exp using gdb_remote_download. Tested on x86_64-linux.
2023-03-29[gdb/testsuite] Fix gdb.guile/scm-objfile-script.exp for remote hostTom de Vries1-1/+1
Fix test-case gdb.guile/scm-objfile-script.exp using host_standard_output_file. Tested on x86_64-linux.
2023-03-29[gdb/testsuite] Fix gdb.guile/scm-cmd.exp without readlineTom de Vries1-8/+11
Fix test-case gdb.guile/scm-cmd.exp using readline_is_used. Tested on x86_64-linux.
2023-03-29[gdb/testsuite] Fix gdb.guile/guile.exp for remote hostTom de Vries1-17/+21
Fix test-case gdb.guile/guile.exp for remote host using gdb_remote_download. Tested on x86_64-linux.
2023-03-29Sanity check section size in bfd_init_section_compress_statusAlan Modra1-1/+2
This function doesn't just initialise for compression, it actually compresses. This patch sanity checks section size before allocating buffers for the uncompressed contents. * compress.c (bfd_init_section_compress_status): Sanity check section size.
2023-03-29Re: Fix an aout memory leakAlan Modra1-2/+3
We have way too much duplicated code in bfd. Apply dd3a3d0af9f6 and 920581c57e08 to pdp11.c. * pdp11.c (bfd_free_cached_info): Free line_buf. Return true if tdata.aout_data is NULL.
2023-03-29ld testsuite CFLAGS_FOR_TARGETAlan Modra2-11/+7
run_host_cmd adds $gcc_B_opt and $ld_L_opt to the command line if it detects the program being run is a compiler. Since the program being run in lto.exp linking pr28138 is "sh", we need to add these by hand. This isn't exactly as run_host_cmd does, as it lacks reordering of any user -B option in $CC_FOR_TARGET, but it's better than ignoring gcc_B_opt. This fixes a mips64 testsuite fail. ld_compile adds CFLAGS_FOR_TARGET and other flags as well, so there is no need for the ld_compile command line to include CFLAGS_FOR_TARGET. Fixing this is just a tidy. * testsuite/ld-plugin/lto.exp: Add gcc_B_opt, CFLAGS_FOR_TARGET and $ld_L_opt to pr28138 link line. * testsuite/lib/ld-lib.exp (run_ld_link_tests): Don't pass unnecessary flags to ld_compile. (run_ld_link_exec_tests, run_cc_link_tests): Likewise.
2023-03-29Automatic date update in version.inGDB Administrator1-1/+1
2023-03-28Rename "raw" to "unrelocated"Tom Tromey15-61/+63
Per an earlier discussion, this patch renames the existing "raw" APIs to use the word "unrelocated" instead.
2023-03-28Use unrelocated_addr in minimal symbolsTom Tromey18-86/+109
This changes minimal symbols to use unrelocated_addr. I believe this detected a latent bug in add_pe_forwarded_sym.
2023-03-28Use unrelocated_addr in psymbolsTom Tromey7-45/+93
This changes psymbols themselves to use unrelocated_addr. This transform is largely mechanical. I don't think it finds any bugs.
2023-03-28Use unrelocated_addr in partial symbol tablesTom Tromey7-69/+89
This changes partial symbol tables to use unrelocated_addr for the text_high and text_low members. This revealed some latent bugs in ctfread.c, which are fixed here.
2023-03-28Move definition of unrelocated_addr earlierTom Tromey1-6/+6
This moves the definition of unrelocated_addr a bit earlier in symtab.h, so that it can be used elsewhere in the file.
2023-03-28Use function_view in gdb_bfd_lookup_symbolTom Tromey5-57/+40
This changes gdb_bfd_lookup_symbol to use a function_view. This simplifies the code a little bit.
2023-03-28[gdb/testsuite] Fix gdb.btrace/multi-inferior.exp for remote hostTom de Vries1-2/+4
Fix test-case gdb.btrace/multi-inferior.exp for remote host using gdb_remote_download. Tested on x86_64-linux.
2023-03-28[gdb/testsuite] Fix gdb.btrace/gcore.exp for remote hostTom de Vries1-1/+1
Fix test-case gdb.btrace/gcore.exp for remote host using host_standard_output. Tested on x86_64-linux.
2023-03-28[gdb/testsuite] Fix gdb.btrace/reconnect.exp for remote targetTom de Vries1-1/+3
Fix test-case gdb.btrace/reconnect.exp for target board remote-gdbserver-on-localhost using gdb_remote_download. Tested on x86_64-linux.
2023-03-28Put pretty-printers to_string output in varobj resultTom Tromey4-35/+26
PR mi/11335 points out that an MI varobj will not display the result of a pretty-printer's "to_string" method. Instead, it always shows "{...}". This does not seem very useful, and there have been multiple complaints about it over the years. This patch changes varobj to emit this string when possible, and updates the test suite. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=11335
2023-03-28gdb/testsuite: allow "require" callbacks to provide a reasonSimon Marchi2-12/+33
When an allow_* proc returns false, it can be a bit difficult what check failed exactly, if the procedure does multiple checks. To make investigation easier, I propose to allow the "require" callbacks to be able to return a list of two elements: the zero/non-zero value, and a reason string. Use the new feature in allow_hipcc_tests to demonstrate it (it's also where I hit actually hit this inconvenience). On my computer (where GDB is built with amd-dbgapi support but where I don't have a suitable GPU target), I get: UNSUPPORTED: gdb.rocm/simple.exp: require failed: allow_hipcc_tests (no suitable amdgpu targets found) vs before: UNSUPPORTED: gdb.rocm/simple.exp: require failed: allow_hipcc_tests Change-Id: Id1966535b87acfcbe9eac99f49dc1196398c6578 Approved-By: Tom de Vries <tdevries@suse.de>
2023-03-28[gdb/testsuite] Fix gdb.server/server-kill-python.exp for remote hostTom de Vries1-1/+5
Fix test-case gdb.server/server-kill-python.exp for remote host using gdb_remote_download. Tested on x86_64-linux.
2023-03-28[gdb/testsuite] Fix gdb.server/sysroot.exp for remote hostTom de Vries1-2/+7
Fix test-case gdb.server/sysroot.exp for remote host, by: - using gdb_remote_download, and - disabling the "local" scenario for remote host/target, unless remote host == remote target. Tested on x86_64-linux.
2023-03-28[gdb/testsuite] Require non-remote host for gdb.server/multi-ui-errors.expTom de Vries1-0/+3
Require non-remote host for test-case gdb.server/multi-ui-errors.exp, because it uses "spawn -pty", which creates a pty on build, which gdb cannot use on remote host. Tested on x86_64-linux.
2023-03-28[gdb/testsuite] Fix gdb.server/solib-list.exp for remote hostTom de Vries2-5/+7
Fix test-case gdb.server/solib-list.exp for remote host using gdb_remote_download. Likewise in another test-case. Tested on x86_64-linux.
2023-03-28[gdb/testsuite] Fix gdb.server/file-transfer.exp for remote hostTom de Vries1-6/+6
Fix test-case gdb.server/file-transfer.exp for remote host using gdb_remote_download and host_standard_output_file. Tested on x86_64-linux.
2023-03-28[gdb/testsuite] Fix local-remote-host-native.exp for gdb.server testsTom de Vries1-1/+5
When running test-case gdb.server/stop-reply-no-thread-multi.exp with host+target board local-remote-host-native, I run into a time-out: ... (gdb) PASS: gdb.server/stop-reply-no-thread-multi.exp: target-non-stop=off: \ to_disable=: disconnect builtin_spawn /usr/bin/ssh -t -l vries 127.0.0.1 gdbserver --once \ localhost:2346 stop-reply-no-thread-multi^M Process stop-reply-no-thread-multi created; pid = 32600^M Listening on port 2346^M set remote threads-packet off^M FAIL: gdb.server/stop-reply-no-thread-multi.exp: target-non-stop=off: \ to_disable=: set remote threads-packet off (timeout) ... This is due to this line in ${board}_spawn: ... set board_info($board,fileid) $spawn_id ... We have the following series of events: - gdb is spawned, setting fileid - a few gdb commands (set height etc) are send using fileid, arrive at gdb and are successful - gdbserver is spawned, overwriting fileid - the next gdb command is sent using fileid, so it's send to gdbserver instead of gdb, and we run into the timeout. There is some notion of current gdb, tracked in both gdb_spawn_id and fileid of the host board (see switch_gdb_spawn_id). And because the host and target board are the same, spawning something on the target overwrites the fileid on host, and consequently the current gdb. Fix this by only setting fileid when spawning gdb. Tested on x86_64-linux. Now gdb.server/*.exp passes for host+target board local-remote-host-native, except for file-transfer.exp. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29734
2023-03-28gdb: use dynamic year in update-freebsd.shEnze Li1-1/+3
When running update-freebsd.sh on FreeBSD, I see the following modification in freebsd.xml, -<!-- Copyright (C) 2009-2023 Free Software Foundation, Inc. +<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc. It means that each time, when we running the update-freebsd.sh on FreeBSD, we have to correct the year of copyright manually. So fix this issue by using dynamic year. Tested by regenerating freebsd.xml on FreeBSD/amd64. Reviewed-By: John Baldwin <jhb@FreeBSD.org> Approved-By: Simon Marchi <simon.marchi@efficios.com>
2023-03-28[gdb/testsuite] Fix gdb.server/non-existing-program.exp with ↵Tom de Vries1-3/+3
remote-gdbserver-on-localhost With test-case gdb.server/non-existing-program.exp and native, I have reliably: ... (gdb) builtin_spawn gdbserver stdio non-existing-program^M stdin/stdout redirected^M /bin/bash: line 0: exec: non-existing-program: not found^M During startup program exited with code 127.^M Exiting^M PASS: gdb.server/non-existing-program.exp: gdbserver exits cleanly ... But with target board remote-gdbserver-on-localhost I sometimes have: ... (gdb) builtin_spawn /usr/bin/ssh -t -l remote-target localhost gdbserver \ stdio non-existing-program^M stdin/stdout redirected^M /bin/bash: line 0: exec: non-existing-program: not found^M During startup program exited with code 127.^M Exiting^M Connection to localhost closed.^M^M PASS: gdb.server/non-existing-program.exp: gdbserver exits cleanly ... and sometimes the exact same output, but a FAIL instead. Fix this by replacing "Exiting\r\n$" with "Exiting\r\n" in the regexps. Tested on x86_64-linux.