summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Wielaard <[email protected]>2011-02-25 12:58:54 +0100
committerMark Wielaard <[email protected]>2011-02-25 12:58:54 +0100
commitcf454ab68981584c50ad28133c7065344f06db80 (patch)
tree9089cad74ce661b94561e2b8d3fb09da652516e7
parent725aad5d2f8b78ed21a5e253fb38f9722c2c8b2d (diff)
Merge over readelf dwarf string additions from dwarf branch dwarfstrings.
* readelf.c (dwarf_attr_string): Add DW_AT_GNU_* handling. (dwarf_form_string): Properly format and return unknown form.
-rw-r--r--src/ChangeLog5
-rw-r--r--src/readelf.c37
2 files changed, 39 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index a7c2513d..5ef2aec2 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2011-02-25 Mark Wielaard <[email protected]>
+
+ * readelf.c (dwarf_attr_string): Add DW_AT_GNU_* handling.
+ (dwarf_form_string): Properly format and return unknown form.
+
2011-02-23 Roland McGrath <[email protected]>
* readelf.c (section_name): New function.
diff --git a/src/readelf.c b/src/readelf.c
index 78ee2b77..b798b5ac 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -3514,6 +3514,34 @@ dwarf_attr_string (unsigned int attrnum)
result = "GNU_vector";
break;
+ case DW_AT_GNU_guarded_by:
+ result = "GNU_guarded_by";
+ break;
+
+ case DW_AT_GNU_pt_guarded_by:
+ result = "GNU_pt_guarded_by";
+ break;
+
+ case DW_AT_GNU_guarded:
+ result = "GNU_guarded";
+ break;
+
+ case DW_AT_GNU_pt_guarded:
+ result = "GNU_pt_guarded";
+ break;
+
+ case DW_AT_GNU_locks_excluded:
+ result = "GNU_locks_excluded";
+ break;
+
+ case DW_AT_GNU_exclusive_locks_required:
+ result = "GNU_exclusive_locks_required";
+ break;
+
+ case DW_AT_GNU_shared_locks_required:
+ result = "GNU_shared_locks_required";
+ break;
+
case DW_AT_GNU_odr_signature:
result = "GNU_odr_signature";
break;
@@ -3566,7 +3594,7 @@ dwarf_form_string (unsigned int form)
[DW_FORM_sec_offset] = "sec_offset",
[DW_FORM_exprloc] = "exprloc",
[DW_FORM_flag_present] = "flag_present",
- [DW_FORM_ref_sig8] = "ref_sig8"
+ [DW_FORM_ref_sig8] = "ref_sig8",
};
const unsigned int nknown_forms = (sizeof (known_forms)
/ sizeof (known_forms[0]));
@@ -3577,8 +3605,11 @@ dwarf_form_string (unsigned int form)
result = known_forms[form];
if (unlikely (result == NULL))
- snprintf (buf, sizeof buf, gettext ("unknown form %" PRIx64),
- (uint64_t) form);
+ {
+ snprintf (buf, sizeof buf, gettext ("unknown form %#" PRIx64),
+ (uint64_t) form);
+ result = buf;
+ }
return result;
}