aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-09-23[gdb/testsuite] Fix timeout in gdb.fortran/info-types.expTom de Vries3-6/+6
When running the testsuite in an enviroment that simulates a stressed system, I ran into a timeout in test-case gdb.fortran/info-types.exp: ... (gdb) info types^M FAIL: gdb.fortran/info-types.exp: info types (timeout) ... This is mainly due the presence of glibc debug info. With it installed, I get: ... $ time gdb -q -batch -x outputs/gdb.fortran/info-types/gdb.in.1 > /dev/null real 0m35.969s user 0m38.231s sys 0m1.007s ... and without: ... $ time gdb -q -batch -x outputs/gdb.fortran/info-types/gdb.in.1 > /dev/null real 0m4.782s user 0m5.014s sys 0m0.304s ... Fix this by not running to main, which gets us: ... $ time gdb -q -batch -x outputs/gdb.fortran/info-types/gdb.in.1 > /dev/null real 0m0.808s user 0m0.789s sys 0m0.137s ... Likewise in gdb.mi/mi-sym-info.exp and gdb.mi/mi-complete.exp. Tested on x86_64-linux. Approved-By: Tom Tromey <tom@tromey.com>
2024-09-23gdb: update comment in code_breakpoint::re_set_defaultAndrew Burgess1-3/+4
Spotted a comment in code_breakpoint::re_set_default that was added in commit: commit 6cce025114ccd0f53cc552fde12b6329596c6c65 Date: Fri Mar 3 19:03:15 2023 +0000 gdb: only insert thread-specific breakpoints in the relevant inferior that was incorrect. The comment was not updated to take inferior specific breakpoints into account. This commit just updates the comment, there's no user visible changes after this commit.
2024-09-23ld/PE: enable secrel testcases also for 64-bit CygwinJan Beulich1-0/+16
Plus the others that are grouped there.
2024-09-23ld/PE: no base relocs for section (relative) onesJan Beulich4-5/+53
Even more so than image relative (RVA) relocations, section relative ones as well as section ones should not have base relocations created in the final PE image. Reportedly section relative relocations will want using for TLS support in the (Windows) compiler. While there also correct the names for two of the "image base" relocs.
2024-09-23LD: Document use of SOURCE_DATE_EPOCH in Environment sectionNick Clifton1-0/+7
2024-09-23Fix compile time error introduced by ↵Nick Clifton1-2/+8
d774bf9b3623239a1cfa729afcf048a15da657d3 for non-ELF x86 targets
2024-09-23[gdb/testsuite] Fix failure in gdb.threads/signal-sigtrap.expTom de Vries2-2/+34
The test-case gdb.threads/signal-sigtrap.exp: - installs a signal handler called sigtrap_handler for SIGTRAP, - sets a breakpoint on sigtrap_handler, and - expects the breakpoint to trigger after issuing "signal SIGTRAP". Usually, that happens indeed: ... (gdb) signal SIGTRAP^M Continuing with signal SIGTRAP.^M ^M Thread 1 "signal-sigtrap" hit Breakpoint 2, sigtrap_handler (sig=5)^M 28 }^M (gdb) PASS: $exp: sigtrap thread 1: signal SIGTRAP reaches handler ... Occasionally, I run into this failure on openSUSE Tumbleweed: ... (gdb) signal SIGTRAP^M Continuing with signal SIGTRAP.^M ^M Thread 1 "signal-sigtrap" received signal SIGTRAP, Trace/breakpoint trap.^M __pthread_create_2_1 () at pthread_create.c:843^M (gdb) FAIL: $exp: sigtrap thread 1: signal SIGTRAP reaches handler ... AFAIU, the problem is in the situation that is setup before issuing that command, by running to a breakpoint in thread_function: ... void *thread_function (void *arg) { return NULL; } int main (void) { pthread_t child_thread; signal (SIGTRAP, sigtrap_handler); pthread_create (&child_thread, NULL, thread_function, NULL); pthread_join (child_thread, NULL); return 0; } ... In the passing case, thread 2 is stopped in thread_function, and thread 1 is stopped somewhere in pthread_join: ... (gdb) info threads^M Id Target Id Frame ^M 1 Thread ... (LWP ...) "signal-sigtrap" __futex_abstimed_wait_common64 () * 2 Thread ... (LWP ...) "signal-sigtrap" thread_function () ... In the failing case, thread 2 is stopped in thread_function, but thread 1 is stopped somewhere in pthread_create: ... (gdb) info threads^M Id Target Id Frame ^M 1 Thread ... (LWP ...) "signal-sigtrap" __GI___clone3 () * 2 Thread ... (LWP ...) "signal-sigtrap" thread_function () ... What I think happens is that pthread_create blocks SIGTRAP at some point, and if the "signal SIGTRAP" command is issued while that is the case, the signal becomes pending and consequently there's no longer a guarantee that the signal will be delivered to the inferior. Instead the signal will be handled by gdb like this: ... (gdb) info signals SIGTRAP Signal Stop Print Pass to program Description SIGTRAP Yes Yes No Trace/breakpoint trap ... Fix this by adding a barrier that ensures that pthread_create is done before we issue the "signal SIGTRAP" command. Likewise in test-case gdb.threads/signal-command-handle-nopass.exp. Using the fixed test-case, I tested my theory by explicitly blocking SIGTRAP: ... + sigset_t old_ss, new_ss; + sigemptyset (&new_ss); + sigaddset (&new_ss, SIGTRAP); + sigprocmask (SIG_BLOCK, &new_ss, &old_ss); + /* Make sure that pthread_create is done once the breakpoint on thread_function triggers. */ pthread_barrier_wait (&barrier); pthread_join (child_thread, NULL); + sigprocmask (SIG_SETMASK, &old_ss, NULL); ... and managed to reproduce the same failure: ... (gdb) signal SIGTRAP^M Continuing with signal SIGTRAP.^M [Thread 0x7ffff7c00700 (LWP 13254) exited]^M ^M Thread 1 "signal-sigtrap" received signal SIGTRAP, Trace/breakpoint trap.^M 0x00007ffff7c80056 in __GI___sigprocmask () sigprocmask.c:39^M (gdb) FAIL: $exp: sigtrap thread 1: signal SIGTRAP reaches handler ... Tested on x86_64-linux. PR testsuite/26867 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=26867
2024-09-23[gdb/testsuite] Fix gdb.base/return.exp on arm-linuxTom de Vries1-2/+2
After doing pre-commit testing of some patch on arm-linux, the Linaro CI reported: ... FAIL: 1 regressions: 1 improvements regressions.sum: === gdb tests === Running gdb:gdb.base/return.exp ... ERROR: no fileid for ccd235fdc9bf improvements.sum: === gdb tests === Running gdb:gdb.base/return.exp ... ERROR: no fileid for 017e9b314c5a ... The problem is the call to allow_float_test. It calls gdb_exit (for arm-linux only), and consequently kills the gdb instance setup by prepare_for_testing: ... if { [prepare_for_testing "failed to prepare" "return"] } { return -1 } set allow_float_test [allow_float_test] ... Fix this by moving the call to allow_float_test to before prepare_for_testing. Tested on arm-linux and x86_64-linux.
2024-09-23[gdb/testsuite] Make parse_args error out on remaining argsTom de Vries11-26/+46
I noticed that introducing a typo here in gdb.mi/mi-breakpoint-changed.exp: ... set bp_re [mi_make_breakpoint \ - -number $bp_nr \ + -nunber $bp_nr \ -type dprintf \ -func marker \ -script [string_to_regexp {["printf \"arg\" \""]}]] ... didn't make the test fail. Proc mi_make_breakpoint uses parse_args, but does not check the remaining args as parse_args suggests: ... proc parse_args { argset } { parse_list 2 args $argset "-" false # The remaining args should be checked to see that they match the # number of items expected to be passed into the procedure } ... We could add the missing check in mi_make_breakpoint, but I think the problem is likely to occur again because the name parse_args does not suggest that further action is required. Fix this instead by: - copying proc parse_args to new proc parse_some_args, - adding new proc check_no_args_left, and - calling check_no_args_left in parse_args. Also be more strict in a few places where we do lassign for remaining args: ... lassign $args a b ... There may be more arguments left in $args, so check that that's not the case using check_no_args_left: ... set args [lassign $args a b] check_no_args_left ... Fix a few test-cases that trigger on the stricter checking. Tested on x86_64-linux. Reviewed-By: Alexandra Petlanova Hajkova <ahajkova@redhat.com> PR testsuite/32129 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32129
2024-09-23[gdb/testsuite] Fix gdb.base/empty-host-env-vars.expTom de Vries1-23/+9
On aarch64-linux (debian testing) with test-case gdb.base/empty-host-env-vars.exp I ran into: ... (gdb) show index-cache directory^M The directory of the index cache is "/home/linux/.cache/gdb".^M (gdb) FAIL: $exp: env_var_name=HOME: show index-cache directory ... Without changing any environment variables, the value of the index-cache dir is: ... $ gdb -q -batch -ex "show index-cache directory" The directory of the index cache is "/home/linux/.cache/gdb". ... and the expectation of the test-case is that setting HOME to empty will produce an empty dir, but what it actually produces is: ... $ HOME= gdb -q -batch -ex "show index-cache directory" The directory of the index cache is "/home/linux/.cache/gdb". ... There's nothing wrong with that behaviour, the dir is simply constructed using XDG_CACHE_HOME which happens to be explictly set to its default value $HOME/.cache [1]: ... $ echo $XDG_CACHE_HOME /home/linux/.cache ... and indeed also setting that variable to empty gets us the expected empty dir: ... $ XDG_CACHE_HOME= HOME= gdb -q -batch -ex "show index-cache directory" gdb: warning: Couldn't determine a path for the index cache directory. The directory of the index cache is "". ... Furthermore, the test-case assumption that setting variables to empty either produces the original dir or an empty dir is incorrect. Say that XDG_CACHE_HOME has a non-default value: ... $ echo $XDG_CACHE_HOME /home/linux/my-xdg-cache-home $ gdb -q -batch -ex "show index-cache directory" The directory of the index cache is "/home/linux/my-xdg-cache-home/gdb". ... then setting that variable to empty: ... $ XDG_CACHE_HOME= gdb -q -batch -ex "show index-cache directory" The directory of the index cache is "/home/linux/.cache/gdb". ... does change the value of the dir. Fix this by making the test-case less specific. While we're at it, factor out regexps re_pre and re_post to make regexps more readable, and use string_to_regexp to reduce quoting. Tested on aarch64-linux. PR testsuite/32132 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32132 [1] https://specifications.freedesktop.org/basedir-spec/latest/index.html#variables
2024-09-23[gdb/testsuite] Fix gdb.base/attach-deleted-exec.exp with NFSTom de Vries1-3/+21
With test-case gdb.base/attach-deleted-exec.exp I ran into: ... (gdb) attach 121552^M Attaching to process 121552^M Reading symbols .../attach-deleted-exec/.nfs00000000044ff2ef00000086...^M Reading symbols from /lib64/libm.so.6...^M (No debugging symbols found in /lib64/libm.so.6)^M Reading symbols from /lib64/libc.so.6...^M (No debugging symbols found in /lib64/libc.so.6)^M Reading symbols from /lib64/ld64.so.2...^M (No debugging symbols found in /lib64/ld64.so.2)^M 0x00007fff947cc838 in clock_nanosleep@@GLIBC_2.17 () from /lib64/libc.so.6^M (gdb) FAIL: $exp: attach to process with deleted executable .... The .nfs file indicates: - that the file has been removed on the NFS server, and - that the file is still open on the NFS client. Fix this by detecting this situation, and declaring the test for filename /proc/PID/exe unsupported. Tested on: - x86_64-linux (setup without NFS) - ppc64le-linux (setup with NFS) PR testsuite/32130 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32130
2024-09-23[gdb/testsuite] Fix gdb.trace/entry-values.exp on riscv64-linuxTom de Vries1-0/+2
On riscv64-linux, with test-case gdb.trace/entry-values.exp I run into: ... (gdb) disassemble bar^M Dump of assembler code for function bar:^M 0x0000000000000646 <+0>: addi sp,sp,-48^M 0x0000000000000648 <+2>: sd ra,40(sp)^M 0x000000000000064a <+4>: sd s0,32(sp)^M 0x000000000000064c <+6>: addi s0,sp,48^M 0x000000000000064e <+8>: mv a5,a0^M 0x0000000000000650 <+10>: sw a5,-36(s0)^M 0x0000000000000654 <+14>: li a5,2^M 0x0000000000000656 <+16>: sw a5,-20(s0)^M 0x000000000000065a <+20>: lw a4,-20(s0)^M 0x000000000000065e <+24>: lw a5,-36(s0)^M 0x0000000000000662 <+28>: mv a1,a4^M 0x0000000000000664 <+30>: mv a0,a5^M 0x0000000000000666 <+32>: jal 0x628 <foo>^M 0x000000000000066a <+36>: mv a5,a0^M 0x000000000000066c <+38>: mv a0,a5^M 0x000000000000066e <+40>: ld ra,40(sp)^M 0x0000000000000670 <+42>: ld s0,32(sp)^M 0x0000000000000672 <+44>: addi sp,sp,48^M 0x0000000000000674 <+46>: ret^M End of assembler dump.^M (gdb) FAIL: gdb.trace/entry-values.exp: disassemble bar FAIL: gdb.trace/entry-values.exp: find the call or branch instruction offset in bar ... Fix this by setting call_insn to jal for riscv64. Tested on riscv64-linux and x86_64-linux.
2024-09-23[gdb/testsuite] Fix timeout in gdb.mi/mi-multi-commands.expTom de Vries1-1/+1
On aarch64-linux, with test-case gdb.mi/mi-multi-commands.exp once in a while I run into (edited for readability): ... (gdb) ^M <LOTS-OF-SPACES>-data-evaluate-expression $a^M -data-evaluate-^done,value="\"FIRST COMMAND\""^M expression $b(gdb) ^M ^M ^done,value="\"TEST COMPLETE\""^M (gdb) ^M PASS: $exp: args=: look for first command output, command length 236 FAIL: $exp: args=: look for second command output, command length 236 (timeout) ... This is more likely to trigger when running the test-case using taskset -c <cpu> (where in a big.little setup we pick a little cpu). The setup here is that the test-case issues these two commands at once: ... -data-evaluate-expression $a -data-evaluate-expression $b ... where the length of the first command is artificially increased by prefixing it with spaces, show as <LOTS-OF-SPACES> above. What happens is that gdb, after parsing the first command, executes it. Then the output of the first command intermixes with the echoing of the second command, which produces this line containing the first prompt: ... expression $b(gdb) ^M ... which doesn't match the \r\n prefix of the regexp supposed to consume the first prompt: ... -re "\r\n$mi_gdb_prompt" { ... Fix this by dropping the \r\n prefix. Tested on aarch64-linux. PR testsuite/29781 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29781
2024-09-23Automatic date update in version.inGDB Administrator1-1/+1
2024-09-23x86: Turn PLT32 to PC32 only for PC-relative relocationsH.J. Lu7-1/+56
commit 292676c15a615b5a95bede9ee91004d3f7ee7dfd Author: H.J. Lu <hjl.tools@gmail.com> Date: Thu Feb 13 13:44:17 2020 -0800 x86: Resolve PLT32 reloc aganst local symbol to section resolved PLT32 relocation against local symbol to section and commit 2585b7a5ce5830e60a089aa2316a329558902f0c Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 19 06:51:19 2020 -0700 x86: Change PLT32 reloc against section to PC32 turned PLT32 relocation against section into PC32 relocation. But these transformations are valid only for PC-relative relocations. Add fx_pcrel check for PC-relative relocations when performing these transformations to keep PLT32 relocation in `movq $foo@PLT, %rax`. gas/ PR gas/32196 * config/tc-i386.c (tc_i386_fix_adjustable): Return fixP->fx_pcrel for PLT32 relocations. (i386_validate_fix): Turn PLT32 relocation into PC32 relocation only if fixp->fx_pcrel is set. * testsuite/gas/i386/reloc32.d: Updated. * testsuite/gas/i386/reloc64.d: Likewise. * testsuite/gas/i386/reloc32.s: Add PR gas/32196 test. * testsuite/gas/i386/reloc64.s: Likewise. ld/ PR gas/32196 * testsuite/ld-x86-64/plt3.s: New file. * testsuite/ld-x86-64/x86-64.exp: Run plt3. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
2024-09-22Automatic date update in version.inGDB Administrator1-1/+1
2024-09-21[gdb/testsuite] Limit xfail in gdb.ada/call_pn.expTom de Vries1-2/+11
Test-case gdb.ada/call_pn.exp contains an unconditional xfail, which is only necessary for gcc 8 and 9. Fix this by limiting the xfail to those releases. Tested on x86_64-linux. Approved-By: Tom Tromey <tom@tromey.com>
2024-09-21[gdb/testsuite] Fix timeout in gdb.ada/call_pn.expTom de Vries1-1/+1
With test-case gdb.ada/call_pn.exp and glibc debug info installed, I ran into this timeout: ... (gdb) maint expand-symtabs^M FAIL: gdb.ada/call_pn.exp: maint expand-symtabs (timeout) ... The timeout was related to running the cpu at base frequency of 400Mhz instead of boost frequency of 3.5Ghz (efficiency core) or 4.7Ghz (performance core). But when investigating the test-case I realized that the maint expand-symtabs could be limited to the source files, so use that to speed up the test-case. Tested on x86_64-linux. Co-Authored-By: Tom Tromey <tom@tromey.com> Approved-By: Tom Tromey <tom@tromey.com> PR testsuite/32177 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32177
2024-09-21[gdb/testsuite] Drop -readnow in three gdb.dwarf2 test-casesTom de Vries3-32/+4
When running the testsuite in an enviroment simulating a stressed system, I ran into timeouts in three test-cases in gdb.dwarf2: - gdb.dwarf2/count.exp, - gdb.dwarf2/implptrconst.exp, and - gdb.dwarf2/implptrpiece.exp. In all three cases, -readnow is used which results in symtabs being expanded for the executable, /lib64/libc.so.6 and /lib64/ld-linux-x86-64.so.2. We could address this by limiting the scope of -readnow to the executable, but after reviewing the test-cases there doesn't seem to be a clear reason to use -readnow. Fix this by dropping the -readnow. Tested on x86_64-linux. Approved-By: Tom Tromey <tom@tromey.com>
2024-09-21Automatic date update in version.inGDB Administrator1-1/+1
2024-09-21x86: Add tls check in gasCui, Lili36-45/+879
Assembler shouldn't accept invalid TLS instructions, TLS relocations can only be used with specific instructions as specified in TLS psABI and linker issues an error when TLS relocations are used with wrong instructions or format. Since it is inconvenient for gcc to rely on linker to report errors, adding TLS check in the assembler stage so that gcc can know TLS errors earlier. gas/ChangeLog: PR gas/32022 * config.in: Regenerate. * config/tc-i386.c *(enum x86_tls_error_type): New. *(struct _i386_insn): Added has_gotrel to indicate whether TLS relocations need to be checked. (x86_check_tls_relocation): Added a new function to check TLS relocation. (x86_report_tls_error): Created a new function to report TLS error. (i386_assemble): Handle x86_check_tls_relocation. (lex_got): Set i.has_gotrel. (OPTION_MTLS_CHECK): Added a new option to contrl TLS check. (struct option): Ditto. (md_parse_option): Ditto. (md_show_usage): Ditto. * configure.ac: Added a new option to check TLS relocation by default. * configure: Regenerated. * doc/c-i386.texi: Document -mtls-check=. * testsuite/gas/i386/i386.exp: Added new tests. * testsuite/gas/i386/ilp32/ilp32.exp: Ditto. * testsuite/gas/i386/ilp32/reloc64.d: Disable TLS check for it. * testsuite/gas/i386/ilp32/x32-tls.d: Ditto. * testsuite/gas/i386/inval-tls.l: Added more test cases. * testsuite/gas/i386/inval-tls.s: Ditto. * testsuite/gas/i386/reloc32.d: Disable TLS check for it. * testsuite/gas/i386/reloc64.d: Ditto. * testsuite/gas/i386/x86-64-inval-tls.l: Added more test cases. * testsuite/gas/i386/x86-64-inval-tls.s: Ditto. * testsuite/gas/i386/x86-64.exp: Added new tests. * testsuite/gas/i386/ilp32/x32-inval-tls.l: New test. * testsuite/gas/i386/ilp32/x32-inval-tls.s: Ditto. * testsuite/gas/i386/ilp32/x86-64-tls.d: Ditto. * testsuite/gas/i386/tls.d: Ditto. * testsuite/gas/i386/tls.s: Ditto. * testsuite/gas/i386/x86-64-tls.d: Ditto. * testsuite/gas/i386/x86-64-tls.s: Ditto. ld/ChangeLog: PR gas/32022 * testsuite/ld-i386/tlsgdesc1.d: Disable TLS check for it. * testsuite/ld-i386/tlsgdesc2.d: Ditto. * testsuite/ld-i386/tlsie2.d: Ditto. * testsuite/ld-i386/tlsie3.d: Ditto. * testsuite/ld-i386/tlsie4.d: Ditto. * testsuite/ld-i386/tlsie5.d: Ditto. * testsuite/ld-i386/tlsgdesc3.d: Ditto. * testsuite/ld-x86-64/tlsdesc3.d: Ditto. * testsuite/ld-x86-64/tlsdesc4.d: Ditto. * testsuite/ld-x86-64/tlsie2.d: Ditto. * testsuite/ld-x86-64/tlsie3.d: Ditto. * testsuite/ld-x86-64/tlsie5.d: Ditto. * testsuite/ld-x86-64/tlsdesc5.d: Ditto.
2024-09-21ld: Use --no-rosegment to ld for PR ld/22393 testsH.J. Lu6-14/+14
The commit bf6d7087de0 ld: Move the .note.build-id section to near the start of the memory map moves the .note.build-id section before text sections. When --rosegment and -z separate-code are used together, the .note.gnu.property section is placed between the .note.build-id section and text sections in the same PT_LOAD segment by orphan placement. Pass --no-rosegment to ld for PR ld/22393 tests to avoid linker test failures. PR ld/32190 * testsuite/ld-elf/pr22393-2a.rd: Pass --no-rosegment to ld. * testsuite/ld-elf/pr22393-2b.rd: Likewise. * testsuite/ld-elf/shared.exp: Pass --no-rosegment to ld when building pr22393-2 tests. * testsuite/ld-x86-64/pr22393-3a.rd: Pass --no-rosegment to ld. * testsuite/ld-x86-64/pr22393-3b.rd: Likewise. * testsuite/ld-x86-64/x86-64.exp: Pass --no-rosegment to ld when building pr22393-3 tests. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
2024-09-20gdb: fully separate coff and elf reading from dbxGuinevere Larsen5-264/+272
With the previous commits, the only thing entangling elf and coff file reading with dbx file reading is the functions {elf|coff}stab_build_psymtabs, defined in dbxread.c. These functions depend on dbx_symfile_read. To solve this, I renamed read_stabs_symtab to read_stabs_symtab_1, and created a function with the original name that does what dbx_symfile_read used to do. This way, dbx_symfile_read can just call read_stabs_symtab, and the elf and coff psymtab builders can also call it directly, fully disentangling the readers, which would allow us to selectively not compile dbxread in the future. Approved-By: Tom Tromey <tom@tromey.com>
2024-09-20gdb: Move read_dbx_symtab to stabsread, and rename to read_stabs_symtabGuinevere Larsen3-1557/+1538
Despite the name, read_dbx_symtab is not only used for the dbx file format (also called the aout format). It is used by elf and coff implicitly as well. So I think it makes more sense to have this function in the generic stabsread file, so that reading elf files or coff files depends less on GDB's ability to read dbx files. There were 11 static functions in dbxread that were onlyl helper functions, they were moved and kept as static in stabsread.c. Notably, dbx_read_symtab - which is installed as a callback on legacy_psymtab for aout, elf and coff at least - has been moved to stabsread.c and renamed as well; the function that is specific to aout is dbx_symfile_read, and that hasn't been moved. Some macros had to be moved as well, but since they are still used in dbxread, they were moved to the .h file that the struct symloc is declared, so anyone can properly use the struct. Approved-By: Tom Tromey <tom@tromey.com>
2024-09-20gdb: Move dbx_end_psymtab to stabsread, and rename to stabs_end_psymtabGuinevere Larsen5-239/+240
This function is used by multiple stabs readers (even if not all), and the comment in stabsread.h even acknowledges it. I believe that the comment is incorrect in saying that the function should be in dbxread because not everyone uses it. If any one reader other than dbx uses it, the function should be in stabsread, in my opinion. This commit makes also renames the function to stabs_end_psymtab since, again, this is not specific to dbx/aout format. struct symloc had to be moved because stabs_end_psymtab dereferences symloc objects, so stabsread.c must be aware of the full struct. Approved-By: Tom Tromey <tom@tromey.com>
2024-09-20gdb: Move process_one_symbol to stabsread.cGuinevere Larsen4-804/+820
The function process_one_symbol was defined in the file dbxread.c, but this function is used by all file formats that handle stabs debug information. It makes much more sense for it to be in the stabsread.c file instead. To move that function, many other static functions had to be moved from dbxread. A few were only used by process_one_symbol, so they're still static, but most were used by other functions still in dbxread, so they are being exported by stabsread.h Finally, the registry entry has been moved as well, seeing as it was already exported by gdb-stabs.h, and stabsread.c will need it to properly use the newly added function. With this change, reading mdebug files is totally independent of reading dbx. Approved-By: Tom Tromey <tom@tromey.com>
2024-09-20gdb: Make dbxread rely less on global variablesGuinevere Larsen2-234/+238
The file dbxread.c, which is responsible for reading stabs information for multiple file formats, relies heavily on setting and using global variables over the course of reading symbols. Future patches aim to make stabs reading more file format independent, and this patch starts that change by introducing a stabs_context struct, that will hold all the relevant variables. This context struct is saved on the registry key inside the objfile being read. Some of those global variables have been deemed irrelevant: * dbxread_objfile - Since we're saving in an objfile, this is redundant * symfile_bfd - It is trivial to get the bfd pointer from the objfile, so also unnecessary * string_table_offset - was never initialized, just used to set a value. That usage was substituted by a hardcoded 0 * next_file_string_table_offset - was only used by read_dbx_symtab, so it was turned into a local variable there. As I was moving variables, I also couldn't think of a good reason for the bincl_list to be a pointer, so it was changed to just be an std::vector. Approved-By: Tom Tromey <tom@tromey.com>
2024-09-20gdb/testsuite: rework bp-cond-failure to not depend on inliningGuinevere Larsen2-20/+40
The test gdb.base/bp-cond-failure is implicitly expecting that the function foo will be inlined twice and gdb will be able to find 2 locations to place a breakpoint. When clang is used, gdb only finds one location which causes the test to fail. Since the test is not worried about handling breakpoints on inlined functions, but rather on the format of the message on a breakpoint condition fail, this seems like a false fail report. This commit reworks the test to be in c++, and uses function overloading to ensure that 2 locations will always be found. Empirical testing showed that, for clang, we will land on location 2 with the currest exp commands, no matter the order of the functions declared, whereas for gcc it depends on the order that functions were declared, so they are ordered to always land on the second location, this way we are able to hardcode it and check for it. Reviewed-by: Keith Seitz <keiths@redhat.com> Approved-By: Tom Tromey <tom@tromey.com>
2024-09-20ld: Change -z one-rosegment to --rosegment in commentsH.J. Lu1-30/+30
There is no such linker command-line option, -z one-rosegment. Replace it with --rosegment in comments. * genscripts.sh: Change -z one-rosegment to --rosegment in comments. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
2024-09-20Automatic date update in version.inGDB Administrator1-1/+1
2024-09-20x86-64: Disable PIE on PR gas/32189 testH.J. Lu1-1/+1
Disable PIE on PR gas/32189 test, which contains the non-PIE assembly source, to support GCC defaulted to PIE. PR gas/32189 * testsuite/ld-x86-64/x86-64.exp: Pass $NOPIE_LDFLAGS to linker on PR gas/32189 test. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
2024-09-20x86-64: Never make R_X86_64_GOT64 section relativeH.J. Lu5-0/+60
R_X86_64_GOT64 relocation should never be made section relative. Change tc_i386_fix_adjustable to return 0 for BFD_RELOC_X86_64_GOT64. gas/ PR gas/32189 * config/tc-i386.c (tc_i386_fix_adjustable): Return 0 for BFD_RELOC_X86_64_GOT64. * testsuite/gas/i386/reloc64.d: Updated. * testsuite/gas/i386/reloc64.s: Add more tests for R_X86_64_GOT64 and R_X86_64_GOTOFF64. ld/ PR gas/32189 * testsuite/ld-x86-64/x86-64.exp: Run PR gas/32189 test. * testsuite/ld-x86-64/pr32189.s: New file. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
2024-09-19gdb/MAINTAINERS: update my email addressGuinevere Larsen1-2/+2
Sync the maintainers file with my new email address
2024-09-19ld: Move the .note.build-id section to near the start of the memory map.Nick Clifton1-2/+37
This helps GDB to locate the debug information associated with a core dump. Core dumps include the first page of an executable's image, and if this page include the .note.build-id section then GDB can find it and then track down a debug info file for that build-id.
2024-09-18Fix 32096 UBSAN issues in gprofngVladimir Mezentsev4-19/+26
Fixed UBSAN runtime errors such as: - member call on address which does not point to an object of type 'Vector' - load of misaligned address 0x623e5a670173 for type 'int', which requires 4 byte alignment gprofng/ChangeLog 2024-09-17 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>. PR gprofng/32096 * libcollector/unwind.c: Fix UBSAN runtime errors. * src/CallStack.cc (add_stack_java, add_stack_java_epilogue): Change argument type to Vector<Histable*>*. * src/Experiment.cc (update_ts_in_maps): Change variable type. * src/Experiment.h: Change field type to Vector<Histable*>*.
2024-09-19Automatic date update in version.inGDB Administrator1-1/+1
2024-09-18LoongArch: Add elfNN_loongarch_mkobject to initialize LoongArch tdataXin Wang1-0/+10
LoongArch: Add elfNN_loongarch_mkobject to initialize LoongArch tdata.
2024-09-18x86/APX: Don't promote AVX/AVX2 instructions out of APX specH.J. Lu9-381/+215
V{BROADCAST,EXTRACT,INSERT}{F,I}128 and VROUND{P,S}{S,D} aren't promoted to support EGPR in APX spec. Don't promote them out of APX spec. This commit effectively reverted: ec3babb8c10 x86/APX: V{BROADCAST,EXTRACT,INSERT}{F,I}128 can also be expressed 5a635f1f59a x86/APX: VROUND{P,S}{S,D} encodings require AVX512{F,VL} eea4357967b x86/APX: VROUND{P,S}{S,D} can generally be encoded gas/ PR gas/32171 * testsuite/gas/i386/x86-64-apx-egpr-promote-inval.s: Add V{BROADCAST,EXTRACT,INSERT}{F,I}128 tests with EGPR. * testsuite/gas/i386/x86-64-apx-evex-promoted.s: Remove V{BROADCAST,EXTRACT,INSERT}{F,I}128 and VROUND{P,S}{S,D} tests with EGPR. * testsuite/gas/i386/x86-64-apx-egpr-inval.l: Updated. * testsuite/gas/i386/x86-64-apx-egpr-promote-inval.l: Likewise. * testsuite/gas/i386/x86-64-apx-evex-promoted-intel.d: Likewise. * testsuite/gas/i386/x86-64-apx-evex-promoted-wig.d: Likewise. * testsuite/gas/i386/x86-64-apx-evex-promoted.d: Likewise. opcodes/ PR gas/32171 * i386-opc.tbl: Remove V{BROADCAST,EXTRACT,INSERT}{F,I}128 and VROUND{P,S}{S,D} entries with EGPR. * i386-tbl.h: Regenerated. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
2024-09-18Automatic date update in version.inGDB Administrator1-1/+1
2024-09-17gdb/testsuite: skip gdb.mi/dw2-ref-missing-frame.exp with clangGuinevere Larsen1-0/+10
The test gdb.mi/dw2-ref-missing-frame.exp uses the old-school way to set debug information by hand, using a .S file and assembly labels to get addresses. Unfortunately, clang will always re-arrange the global labels to be side by side, making high and low PC for CUs and functions be the same, and thus they will all be empty ranges. This makes the test fail, since we never technically enter the functions that we want to check. This commit skips that test when using clang. If we ever port this test to use the dwarf assembler, we can reenable it with clang. Approved-By: Tom Tromey <tom@tromey.com>
2024-09-17gdb/testsuite: fix gdb.mi/mi-var-cp.exp with clangGuinevere Larsen1-1/+2
The inline tests in gdb.mi/mi-var-cp.cc were failing when using clang to run the test. This happened because inline tests want to step past the C statements and then run the TCL tests, but in mi-var-cp.cc the statement to be stepped past is "return s2.i;". Since clang links the epilogue information to the return statement, not the closing brace, single-stepping past return had us exiting the function - which made the expressions invalid. This commit fixes this by making the function have 2 C statements, and the return one be after all inline tests, so we know GDB won't leave the function before running the create_varobj tests. Approved-By: Tom Tromey <tom@tromey.com>
2024-09-17gdb/testsuite: fix gdb.mi/mi-catch-cpp-exceptions.exp with clangGuinevere Larsen1-4/+2
Clang adds line table information for a try/catch block differently to gcc. Instead of linking the instructions related to __cxa_begin_catch to the line containing the "catch" statement in the source code, it links to the closing brace of the try block. This was causing gdb.mi/mi-catch-cpp-exceptions.exp to fail when tested with clang. The test was updated to have the catch in the same line as the closing brace so it passes with no additional modifications with clang. Approved-By: Tom Tromey <tom@tromey.com>
2024-09-17Automatic date update in version.inGDB Administrator1-1/+1
2024-09-16Fix typo in py-arch.expTom Tromey1-1/+1
I found a typo in a test name in py-arch.exp.
2024-09-16Automatic date update in version.inGDB Administrator1-1/+1
2024-09-15MIPS/GAS: Discard redundant instruction from DDIV/DREM macrosMaciej W. Rozycki12-29/+5
A sequence such as: li at,-1 bne xx,at,0f li at,1 dsll32 at,at,0x1f is produced in the expansion of the DDIV and DREM assembly macros, where a redundant `li at,1' instruction is used to load an intermediate value of 1 into $at, which is then left-shifted by 63 with `dsll32 at,at,0x1f' yielding 0x8000000000000000. However this value likewise results from left-shifting the value of -1, already present in $at at this point. Remove the extraneous instruction then, shortening the sequence emitted. Adjust dumps in the testsuite accordingly.
2024-09-15MIPS/GAS/testsuite: Print instructions in hex in division testsMaciej W. Rozycki21-241/+249
Add `--show-raw-insn' to division tests so as to verify branch offsets without the need to know actual offsets into the text section individual instructions have been assembled at. Add `-z' where applicable to make interlock NOP instructions appear in output so as to verify them without the need to know the offsets too. Replace individual offsets to match against with generic patterns so that a change in the expansion of an assembly macro does not affect code that follows.
2024-09-15MIPS/opcodes: Rework documentation for instruction argsMaciej W. Rozycki1-400/+402
Rewrite the inline documentation for the characters used in the `args' member of `struct mips_opcode' to make it consistent in terms of style and formatting. Discard references to inexistent macros.
2024-09-15gdb: fix amd_dbgapi_target_breakpoint::re_set's signatureSimon Marchi1-2/+2
Following commit 6cce025114ccd0f53cc552fde12b6329596c6c65 Date: Fri Mar 3 19:03:15 2023 +0000 gdb: only insert thread-specific breakpoints in the relevant inferior ... when building amd-dbgapi-target.c: CXX amd-dbgapi-target.o /home/smarchi/src/binutils-gdb/gdb/amd-dbgapi-target.c:486:8: error: ‘void amd_dbgapi_target_breakpoint::re_set()’ marked ‘override’, but does not override 486 | void re_set () override; | ^~~~~~ Update the signature to match the base. Change-Id: Ie8bd71a63284917180f3e67eead58bea74bb0692
2024-09-15Automatic date update in version.inGDB Administrator1-1/+1