aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1997-02-12 17:18:38 +0000
committerIan Lance Taylor <ian@airs.com>1997-02-12 17:18:38 +0000
commit0988ea9f3e302ecfd4e4bd1c9da5ba6d698c1d21 (patch)
treed4fbb60184fea6ec0d00d2aee25f1aac1b323610
parent65c89fc376e4f9bfd2d494db8a23572bfb6265cb (diff)
downloadgdb-0988ea9f3e302ecfd4e4bd1c9da5ba6d698c1d21.zip
gdb-0988ea9f3e302ecfd4e4bd1c9da5ba6d698c1d21.tar.gz
gdb-0988ea9f3e302ecfd4e4bd1c9da5ba6d698c1d21.tar.bz2
Wed Feb 12 12:16:47 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* objdump.c (disassemble_bytes): Make output of raw instructions work better for non-standard values of bytes_per_chunk and bytes_per_line. I also fixed the spacing in the last patch.
-rw-r--r--binutils/ChangeLog6
-rw-r--r--binutils/objdump.c36
2 files changed, 33 insertions, 9 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index d372b44..8a9ecee 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,9 @@
+Wed Feb 12 12:16:47 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * objdump.c (disassemble_bytes): Make output of raw instructions
+ work better for non-standard values of bytes_per_chunk and
+ bytes_per_line.
+
Thu Feb 6 14:14:59 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
* objdump.c (disassemble_bytes): Added code to allow some control
diff --git a/binutils/objdump.c b/binutils/objdump.c
index 77a8d71..5eca0fc 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -1186,20 +1186,26 @@ disassemble_bytes (info, disassemble_fn, insns, data, start, stop, relppp,
int k;
if (bpc > 1 && info->display_endian == BFD_ENDIAN_LITTLE)
{
- for (k=bpc-1; k >= 0; k--)
- printf ("%02x", (unsigned) data[j+k]);
+ for (k = bpc - 1; k >= 0; k--)
+ printf ("%02x", (unsigned) data[j + k]);
putchar (' ');
}
else
{
- for (k=0; k < bpc; k++)
- printf ("%02x", (unsigned) data[j+k]);
+ for (k = 0; k < bpc; k++)
+ printf ("%02x", (unsigned) data[j + k]);
putchar (' ');
}
}
- for (; pb < bytes_per_line; ++pb)
- printf (" ");
+ for (; pb < bytes_per_line; pb += bpc)
+ {
+ int k;
+
+ for (k = 0; k < bpc; k++)
+ printf (" ");
+ putchar (' ');
+ }
/* Separate raw data from instruction by extra space. */
if (insns)
@@ -1230,10 +1236,22 @@ disassemble_bytes (info, disassemble_fn, insns, data, start, stop, relppp,
pb += bytes_per_line;
if (pb > bytes)
pb = bytes;
- for (; j < i + pb; ++j)
+ for (; j < i + pb; j += bpc)
{
- printf ("%02x", (unsigned) data[j]);
- putchar (' ');
+ int k;
+
+ if (bpc > 1 && info->display_endian == BFD_ENDIAN_LITTLE)
+ {
+ for (k = bpc - 1; k >= 0; k--)
+ printf ("%02x", (unsigned) data[j + k]);
+ putchar (' ');
+ }
+ else
+ {
+ for (k = 0; k < bpc; k++)
+ printf ("%02x", (unsigned) data[j + k]);
+ putchar (' ');
+ }
}
}
}