https://sourceware.org/bugzilla/show_bug.cgi?id=28233
Bug ID: 28233 Summary: [gas, --gstabs] Generate stabs more similar to gcc Product: binutils Version: unspecified Status: NEW Severity: normal Priority: P2 Component: gas Assignee: unassigned at sourceware dot org Reporter: vries at gcc dot gnu.org Target Milestone: --- Consider test-case ./src/gdb/testsuite/gdb.dwarf2/dw2-ranges-3.c. When compiled with gcc -gstabs: ... $ gcc -gstabs -c -fno-PIE -no-pie -o dw2-ranges3.o ./src/gdb/testsuite/gdb.dwarf2/dw2-ranges-3.c ... we have (using objdump -G, filtering out LSYM entries 2-26 for brevity): ... Contents of .stab section: Symnum n_type n_othr n_desc n_value n_strx String -1 HdrSym 0 31 00000000000003ab 1 0 SO 0 2 0000000000000000 16 ./src/gdb/testsuite/gdb.dwarf2/dw2-ranges-3.c 1 OPT 0 0 0000000000000000 62 gcc2_compiled. ... 27 FUN 0 0 0000000000000000 925 main3:F(0,25) 28 SLINE 0 19 0000000000000000 0 29 SLINE 0 20 0000000000000004 0 30 SO 0 0 0000000000000000 0 $ ... Now consider generating stabs using gas --gstabs instead: ... $ gcc -c -fno-PIE -no-pie -o dw2-ranges3.o ./src/gdb/testsuite/gdb.dwarf2/dw2-ranges-3.c -Wa,--gstabs ... Instead we have: ... Contents of .stab section: Symnum n_type n_othr n_desc n_value n_strx String -1 HdrSym 0 6 0000000000000021 1 0 SO 0 0 0000000000000000 17 /tmp/ccO3O0w5.s 1 SLINE 0 8 0000000000000000 0 2 SLINE 0 11 0000000000000000 0 3 SLINE 0 13 0000000000000000 0 4 SLINE 0 14 0000000000000000 0 5 SLINE 0 16 0000000000000000 0 ... There are two differences (not counting the OPT entry) in the generated entries: - no FUN entry - no terminating SO entry I don't know enough about stabs to say whether this is valid or not (and if not, if it's caused by a problem with the input). What I do know is that these two differences trigger two different problems in gdb: - the FUN entry is required to support stabs+PIE (PR12497) - terminating SO entry is required to get a correct address table (PR28221) I've submitted a patch for the first PR, but reaction was not positive. So I wonder, perhaps it's a good idea to make gas generate stabs more similar to what gcc emits. The missing FUN entry problem can be fixed by manually adding a .func directive. I've wondered whether we could get the same effect by interpreting ".type main3, @function" which is present in the generated .s file. I've found no similar workaround for the missing SO entry problem, so I wrote a patch for this. -- You are receiving this mail because: You are on the CC list for the bug.