Strip .debug_gnu_pubnames and .debug_gnu_pubtypes when building .gdb_index.
authorCary Coutant <ccoutant@google.com>
Fri, 6 Jun 2014 23:23:21 +0000 (16:23 -0700)
committerCary Coutant <ccoutant@google.com>
Fri, 6 Jun 2014 23:24:30 +0000 (16:24 -0700)
commit4320c6919860634baf2207d9a642a9fbd9efc3d5
tree54f6adffda34dbb3a69c3d51bf2c7c70a9c9119b
parent25326a285b3aea10ea9acd63b6187ae78b59b09e
Strip .debug_gnu_pubnames and .debug_gnu_pubtypes when building .gdb_index.

When not stripping those sections, there was a bug where gold was incorrectly
adjusting section-relative offsets by the offset of the input section within
the output section. That adjustment was both unnecessary and wrong, causing
gold to miss a number of debug entries that should have been added to
.gdb_index.  (With stripping, the adjustment was always 0, so the bug in
dwarf_reader.cc would have been hidden by the change to layout.cc.)

gold/
* dwarf_reader.h (Dwarf_pubnames_table): Remove output_section_offset_.
* dwarf_reader.cc (Dwarf_pubnames_table::read_section): Likewise.
(Dwarf_pubnames_table::read_header): Likewise.
* layout.cc (gdb_fast_lookup_sections): Add .debug_gnu_pubnames and
.debug_gnu_pubtypes.
gold/ChangeLog
gold/dwarf_reader.cc
gold/dwarf_reader.h
gold/layout.cc