diff options
| author | Mark Wielaard <[email protected]> | 2009-07-08 19:18:53 +0200 |
|---|---|---|
| committer | Mark Wielaard <[email protected]> | 2009-07-08 19:18:53 +0200 |
| commit | f735db16b52665f2324eff101f0e5cad861bfea2 (patch) | |
| tree | 1c08f5323a56945bd8aadbf6ad4cb2994b80c9ce /src | |
| parent | 70c442caa8296a698b395b8969b9a04d5491d47b (diff) | |
Handle DW_Form constants for DW_AT_data_member_location in readelf.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/readelf.c | 13 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index e2749424..51b3dd80 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2009-07-08 Mark Wielaard <[email protected]> + + * readelf.c (attr_callback): Handle DW_Form constants for + DW_AT_data_member_location. + 2009-07-06 Roland McGrath <[email protected]> * readelf.c (register_info): New function. Handle unknown register #s. diff --git a/src/readelf.c b/src/readelf.c index c8bb2f08..bc67c31b 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -5135,9 +5135,20 @@ attr_callback (Dwarf_Attribute *attrp, void *arg) const char *valuestr = NULL; switch (attr) { + /* This case can take either a constant or a loclistptr. */ + case DW_AT_data_member_location: + if (form != DW_FORM_data4 && form != DW_FORM_data8) + { + printf (" %*s%-20s %" PRIxMAX "\n", + (int) (level * 2), "", dwarf_attr_string (attr), + (uintmax_t) num); + return DWARF_CB_OK; + } + /* else fallthrough */ + + /* These cases always take a loclistptr and no constant. */ case DW_AT_location: case DW_AT_data_location: - case DW_AT_data_member_location: case DW_AT_vtable_elem_location: case DW_AT_string_length: case DW_AT_use_location: |
