diff options
author | Ali Tamur <tamur@google.com> | 2019-12-23 19:31:24 -0800 |
---|---|---|
committer | Ali Tamur <tamur@google.com> | 2020-01-13 15:35:35 -0800 |
commit | 18a8505e38fc2de4b0730b6e13cbd23db5984de9 (patch) | |
tree | f122269b54afe1509c4e855301a489108ddb2d2c /gdb/xcoffread.c | |
parent | 0cac9354bfb07a5cf53d70dbefaa35c6afa7da0a (diff) | |
download | gdb-18a8505e38fc2de4b0730b6e13cbd23db5984de9.zip gdb-18a8505e38fc2de4b0730b6e13cbd23db5984de9.tar.gz gdb-18a8505e38fc2de4b0730b6e13cbd23db5984de9.tar.bz2 |
Dwarf 5: Handle debug_str_offsets and indexed attributes that have base offsets.
* Process debug_str_offsets section. Handle DW_AT_str_offsets_base attribute and
keep the value in dwarf2_cu.
* Make addr_base field in dwarf2_cu optional to disambiguate 0 value
(absent or present and 0).
* During parsing, there is no guarantee that DW_AT_str_offsets_base and
DW_AT_rnglists_base fields will be processed before the attributes that need
those values for correct computation. So make two passes, on the first one mark
the attributes that depend on *_base attributes and process only the others.
On the second pass, only process the attributes that are marked on the first
pass.
* For string attributes, differentiate between addresses that directly point to
a string and those that point to an offset in debug_str_offsets section.
* There are now two attributes, DW_AT_addr_base and DW_AT_GNU_addr_base to read
address offset base. Likewise, there are two attributes, DW_AT_rnglists_base
and DW_AT_GNU_ranges_base to read ranges base. Since there is no guarantee which
ones the compiler will generate, create helper functions to handle all cases.
Tested with CC=/usr/bin/gcc (version 8.3.0) against master branch (also with
-gsplit-dwarf and -gdwarf-4 flags) and there was no increase in the set of
tests that fails. (gdb still cannot debug a 'hello world' program with DWARF 5,
so for the time being, this is all we care about).
This is part of an effort to support DWARF-5 in gdb.
Diffstat (limited to 'gdb/xcoffread.c')
-rw-r--r-- | gdb/xcoffread.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c index 5c60610..aae2e37 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -166,6 +166,7 @@ static const struct dwarf2_debug_sections dwarf2_xcoff_names = { { NULL, NULL }, { ".dwmac", NULL }, { ".dwstr", NULL }, + { NULL, NULL }, /* debug_str_offsets */ { NULL, NULL }, /* debug_line_str */ { ".dwrnges", NULL }, { NULL, NULL }, /* debug_rnglists */ |