]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
gprofng: fix 32892 source line level information not available with "-g -O2"
authorVladimir Mezentsev <vladimir.mezentsev@oracle.com>
Fri, 2 May 2025 07:15:37 +0000 (00:15 -0700)
committerVladimir Mezentsev <vladimir.mezentsev@oracle.com>
Mon, 5 May 2025 06:57:06 +0000 (23:57 -0700)
commit470a0288a8180e4e66e0d239dc63d58f013f3d16
tree3dae8140130c152ec3e8d14d2ca9fb156fcefc00
parent31c1e137e0eb6e20477bc41b9227c254eacc157a
gprofng: fix 32892 source line level information not available with "-g -O2"

gprofng ignored DW_AT_specification.
As a result, gprofng skiped Dwarf for all functions declared as:
  < 2>:<0x0000f725> DW_TAG_subprogram(46)
      DW_AT_linkage_name(110)     "func_name"
      DW_AT_declaration*(60)      0x1 (1)
  < 1>:<0x00015acc> DW_TAG_subprogram(46)
       DW_AT_specification(71)    0xf725 (63269)

Another problem was that gprofng ignored DW_AT_ranges.
As a result, many functions are mapped to the <Unknown> module.

gprofng/ChangeLog
2025-05-01  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>

PR 32892
* src/Dwarf.cc: Handle DW_AT_specification and DW_AT_ranges.
* src/DwarfLib.cc: Likewise.
* src/DwarfLib.h: Likewise.
* src/Dwarf.h (get_ranges): New function.
* src/Stabs.h (get_symbols): New function.
* src/Stabs.cc: Move Symbol class to src/Symbol.cc.
* src/Symbol.cc: New file.
* src/Symbol.h: New file.
* src/Makefile.am: Add Symbol.cc in build.
* src/Makefile.in: Rebuild.
* src/LoadObject.cc (dump_functions): Improve output for -dfunc option.
gprofng/src/Dwarf.cc
gprofng/src/Dwarf.h
gprofng/src/DwarfLib.cc
gprofng/src/DwarfLib.h
gprofng/src/LoadObject.cc
gprofng/src/Makefile.am
gprofng/src/Makefile.in
gprofng/src/Stabs.cc
gprofng/src/Stabs.h
gprofng/src/Symbol.cc [new file with mode: 0644]
gprofng/src/Symbol.h [new file with mode: 0644]