diff options
| author | Mark Wielaard <[email protected]> | 2012-06-25 17:18:53 +0200 |
|---|---|---|
| committer | Mark Wielaard <[email protected]> | 2012-06-27 10:02:59 +0200 |
| commit | a0172d75311f36adb6db58000474d31f8a9cd553 (patch) | |
| tree | 39bce79b9c203afcb2283f3d0994830999c912c2 /libdw | |
| parent | b2589ffa7c2bec754952acc8116e03853d65563d (diff) | |
Add low-level support for .debug_macro.
Signed-off-by: Mark Wielaard <[email protected]>
Diffstat (limited to 'libdw')
| -rw-r--r-- | libdw/ChangeLog | 7 | ||||
| -rw-r--r-- | libdw/dwarf.h | 1 | ||||
| -rw-r--r-- | libdw/dwarf_begin_elf.c | 1 | ||||
| -rw-r--r-- | libdw/dwarf_formudata.c | 10 | ||||
| -rw-r--r-- | libdw/libdwP.h | 1 |
5 files changed, 19 insertions, 1 deletions
diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 3ff83e45..48bbaa0e 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,10 @@ +2012-06-26 Mark Wielaard <[email protected]> + + * libdwP.h: Add IDX_debug_macro. + * dwarf.h: Add DW_AT_GNU_macros. + * dwarf_begin_elf.c (dwarf_scnnames): Add .debug_macro. + * dwarf_formudata.c (dwarf_formudata): Recognize DW_AT_GNU_macros. + 2012-04-27 Mark Wielaard <[email protected]> * libdw/dwarf_highpc.c (dwarf_highpc): Handle DW_AT_high_pc being diff --git a/libdw/dwarf.h b/libdw/dwarf.h index 38f663d6..01aee5ad 100644 --- a/libdw/dwarf.h +++ b/libdw/dwarf.h @@ -266,6 +266,7 @@ enum DW_AT_GNU_all_tail_call_sites = 0x2116, DW_AT_GNU_all_call_sites = 0x2117, DW_AT_GNU_all_source_call_sites = 0x2118, + DW_AT_GNU_macros = 0x2119, DW_AT_hi_user = 0x3fff }; diff --git a/libdw/dwarf_begin_elf.c b/libdw/dwarf_begin_elf.c index fc6ac8d6..3e01800a 100644 --- a/libdw/dwarf_begin_elf.c +++ b/libdw/dwarf_begin_elf.c @@ -61,6 +61,7 @@ static const char dwarf_scnnames[IDX_last][17] = [IDX_debug_pubnames] = ".debug_pubnames", [IDX_debug_str] = ".debug_str", [IDX_debug_macinfo] = ".debug_macinfo", + [IDX_debug_macro] = ".debug_macro", [IDX_debug_ranges] = ".debug_ranges" }; #define ndwarf_scnnames (sizeof (dwarf_scnnames) / sizeof (dwarf_scnnames[0])) diff --git a/libdw/dwarf_formudata.c b/libdw/dwarf_formudata.c index f5b2a1a1..f08e0d8f 100644 --- a/libdw/dwarf_formudata.c +++ b/libdw/dwarf_formudata.c @@ -140,13 +140,21 @@ dwarf_formudata (attr, return_uval) break; case DW_AT_macro_info: - /* macptr */ + /* macptr into .debug_macinfo */ if (__libdw_formptr (attr, IDX_debug_macinfo, DWARF_E_NO_ENTRY, NULL, return_uval) == NULL) return -1; break; + case DW_AT_GNU_macros: + /* macptr into .debug_macro */ + if (__libdw_formptr (attr, IDX_debug_macro, + DWARF_E_NO_ENTRY, NULL, + return_uval) == NULL) + return -1; + break; + case DW_AT_ranges: case DW_AT_start_scope: /* rangelistptr */ diff --git a/libdw/libdwP.h b/libdw/libdwP.h index 3c1925b3..77e1b31f 100644 --- a/libdw/libdwP.h +++ b/libdw/libdwP.h @@ -71,6 +71,7 @@ enum IDX_debug_pubnames, IDX_debug_str, IDX_debug_macinfo, + IDX_debug_macro, IDX_debug_ranges, IDX_last }; |
