From: Alexandre Oliva Date: Tue, 1 Apr 2003 00:32:47 +0000 (+0000) Subject: * objdump.c (dump_data): Don't truncate the address to long; make X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=335a1869163d3ef8c488b9815663a683387f9d9a;p=binutils-gdb.git * objdump.c (dump_data): Don't truncate the address to long; make the width large enough, and uniform for all entries in a section. --- diff --git a/binutils/ChangeLog b/binutils/ChangeLog index fe24e9fac2c..a37cd1892fc 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2003-03-31 Alexandre Oliva + + * objdump.c (dump_data): Don't truncate the address to long; make + the width large enough, and uniform for all entries in a section. + 2003-03-31 H.J. Lu * readelf.c: Include "libiberty.h". diff --git a/binutils/objdump.c b/binutils/objdump.c index b641fde8038..3c927bd7ae9 100644 --- a/binutils/objdump.c +++ b/binutils/objdump.c @@ -2227,6 +2227,9 @@ dump_data (abfd) { if (section->flags & SEC_HAS_CONTENTS) { + char buf[64]; + int count, width; + printf (_("Contents of section %s:\n"), section->name); if (bfd_section_size (abfd, section) == 0) @@ -2253,13 +2256,47 @@ dump_data (abfd) if (stop_offset > bfd_section_size (abfd, section) / opb) stop_offset = bfd_section_size (abfd, section) / opb; } + + width = 4; + + bfd_sprintf_vma (abfd, buf, start_offset + section->vma); + if (strlen (buf) >= sizeof (buf)) + abort (); + count = 0; + while (buf[count] == '0' && buf[count+1] != '\0') + count++; + count = strlen (buf) - count; + if (count > width) + width = count; + + bfd_sprintf_vma (abfd, buf, stop_offset + section->vma - 1); + if (strlen (buf) >= sizeof (buf)) + abort (); + count = 0; + while (buf[count] == '0' && buf[count+1] != '\0') + count++; + count = strlen (buf) - count; + if (count > width) + width = count; + for (addr_offset = start_offset; addr_offset < stop_offset; addr_offset += onaline / opb) { bfd_size_type j; - printf (" %04lx ", (unsigned long int) - (addr_offset + section->vma)); + bfd_sprintf_vma (abfd, buf, (addr_offset + section->vma)); + count = strlen (buf); + if (count >= sizeof (buf)) + abort (); + putchar (' '); + while (count < width) + { + putchar ('0'); + count++; + } + fputs (buf + count - width, stdout); + putchar (' '); + for (j = addr_offset * opb; j < addr_offset * opb + onaline; j++) {