diff options
author | Rohr, Stephan <stephan.rohr@intel.com> | 2024-08-01 19:46:18 +0200 |
---|---|---|
committer | Stephan Rohr <stephan.rohr@intel.com> | 2025-02-11 08:32:22 -0800 |
commit | d96a6c755fab4cfdd4648e742c34713bcd637475 (patch) | |
tree | 42198d2c4162be4d1d1a5ebcd3a861bbc0e82858 /ld/testsuite/ld-elf/group1b.s | |
parent | 8e745eac7db3d7a8989d88d36f8823fcc77d1a1b (diff) | |
download | binutils-master.zip binutils-master.tar.gz binutils-master.tar.bz2 |
GDB aborts the 'start' command if the minimal symbols cannot be
resolved. On Windows, GDB reads the minimal symbols from the COFF
header of the PE file. The symbol table is deprecated and the
number of symbols in the COFF header may be zero:
https://learn.microsoft.com/en-us/windows/win32/debug/pe-format
This is reproducible with clang version 18.1.8 on Windows:
clang++ -g -O0 -gdwarf -fuse-ld=lld test.cpp -o test_clang
The COFF file header shows:
FILE HEADER VALUES
8664 machine (x64)
E number of sections
66E889EC time date stamp Mon Sep 16 21:41:32 2024
FB400 file pointer to symbol table
0 number of symbols
F0 size of optional header
22 characteristics
GDB is not able to read the minimal symbols; the `start' command fails
with an error:
(gdb) start
No symbol table loaded. Use the "file" command.
Manually inserting a breakpoint in main works fine:
(gdb) tbreak main
Temporary breakpoint 1 at 0x14000100c: file test.cpp, line 6.
(gdb) run
Starting program: C:\test-clang
Temporary breakpoint 1, main () at test.cpp:6
6 std::cout << "Hello World.\n";
Remove the check entirely; a 'NOT_FOUND_ERROR' is thrown if 'main'
cannot be resolved. The error is consumed in 'create_breakpoint ()'
and an error message is displayed to the user.
Approved-by: Kevin Buettner <kevinb@redhat.com>
Reviewed-By: Guinevere Larsen <guinevere@redhat.com>
Diffstat (limited to 'ld/testsuite/ld-elf/group1b.s')
0 files changed, 0 insertions, 0 deletions