From: Mark Wielaard Date: Wed, 8 Jul 2009 17:18:53 +0000 (+0200) Subject: Handle DW_Form constants for DW_AT_data_member_location in readelf. X-Git-Tag: elfutils-0.142~20^2^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f735db16b52665f2324eff101f0e5cad861bfea2;p=thirdparty%2Felfutils.git Handle DW_Form constants for DW_AT_data_member_location in readelf. --- diff --git a/src/ChangeLog b/src/ChangeLog index e27494245..51b3dd800 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2009-07-08 Mark Wielaard + + * readelf.c (attr_callback): Handle DW_Form constants for + DW_AT_data_member_location. + 2009-07-06 Roland McGrath * readelf.c (register_info): New function. Handle unknown register #s. diff --git a/src/readelf.c b/src/readelf.c index c8bb2f08e..bc67c31b2 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: