summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Wielaard <[email protected]>2020-09-01 23:32:09 +0200
committerMark Wielaard <[email protected]>2020-09-07 10:07:45 +0200
commitf1a0e680aa0f4e9fcdf10afcea075a833a5a9e4a (patch)
tree6f26edef3920716068f7a31787f9826bbfe781f8
parentd0f3b596fd9bc262c6bcd2da571436165d734222 (diff)
readelf: base address entry can be first
In both debug_ranges and debug_loc a base address entry can be the first in the range or loc list. If so print the offset and set first to false. Otherwise don't print the entry list offset, but do set first to false. Signed-off-by: Mark Wielaard <[email protected]>
-rw-r--r--src/ChangeLog6
-rw-r--r--src/readelf.c16
2 files changed, 20 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index e37f3587..8a64a15e 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
+2020-09-01 Mark Wielaard <[email protected]>
+
+ * readelf.c (print_debug_ranges_section): Base address entry can
+ be first.
+ (print_debug_loc_section): Likewise.
+
2020-09-04 Mark Wielaard <[email protected]>
* elflint.c (special_sections): Add .debug_line_str.
diff --git a/src/readelf.c b/src/readelf.c
index 41933d95..dd6e28af 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -6045,10 +6045,16 @@ print_debug_ranges_section (Dwfl_Module *dwflmod,
if (begin == (Dwarf_Addr) -1l) /* Base address entry. */
{
- printf (gettext (" [%6tx] base address\n "), offset);
+ if (first)
+ printf (" [%6tx] ", offset);
+ else
+ printf (" ");
+ puts (gettext ("base address"));
+ printf (" ");
print_dwarf_addr (dwflmod, address_size, end, end);
printf ("\n");
base = end;
+ first = false;
}
else if (begin == 0 && end == 0) /* End of list entry. */
{
@@ -9615,10 +9621,16 @@ print_debug_loc_section (Dwfl_Module *dwflmod,
if (begin == (Dwarf_Addr) -1l) /* Base address entry. */
{
- printf (gettext (" [%6tx] base address\n "), offset);
+ if (first)
+ printf (" [%6tx] ", offset);
+ else
+ printf (" ");
+ puts (gettext ("base address"));
+ printf (" ");
print_dwarf_addr (dwflmod, address_size, end, end);
printf ("\n");
base = end;
+ first = false;
}
else if (begin == 0 && end == 0) /* End of list entry. */
{