summaryrefslogtreecommitdiff
path: root/gas/listing.c
diff options
context:
space:
mode:
authorTimothy Wall <twall@alum.mit.edu>2000-02-03 18:20:23 +0000
committerTimothy Wall <twall@alum.mit.edu>2000-02-03 18:20:23 +0000
commit8b0411b62361093343b4d33c69985e00de74a4fc (patch)
tree757c99c7d43fc9ba0c5d9d630210f8cf87a636dc /gas/listing.c
parent3f8b77574a3b670316366084c4066e9f5f2d890b (diff)
downloadbinutils-redhat-8b0411b62361093343b4d33c69985e00de74a4fc.tar.gz
octets vs bytes changes for GAS
Diffstat (limited to 'gas/listing.c')
-rw-r--r--gas/listing.c74
1 files changed, 47 insertions, 27 deletions
diff --git a/gas/listing.c b/gas/listing.c
index 1ab0ddef18..441cac2b3e 100644
--- a/gas/listing.c
+++ b/gas/listing.c
@@ -596,7 +596,7 @@ calc_hex (list)
unsigned int address = ~ (unsigned int) 0;
fragS *frag;
fragS *frag_ptr;
- unsigned int byte_in_frag;
+ unsigned int octet_in_frag;
/* Find first frag which says it belongs to this line */
frag = list->frag;
@@ -611,33 +611,33 @@ calc_hex (list)
while (frag_ptr != (fragS *) NULL && frag_ptr->line == first)
{
/* Print as many bytes from the fixed part as is sensible */
- byte_in_frag = 0;
- while ((offsetT) byte_in_frag < frag_ptr->fr_fix
+ octet_in_frag = 0;
+ while ((offsetT) octet_in_frag < frag_ptr->fr_fix
&& data_buffer_size < MAX_BYTES - 3)
{
if (address == ~ (unsigned int) 0)
{
- address = frag_ptr->fr_address;
+ address = frag_ptr->fr_address / OCTETS_PER_BYTE;
}
sprintf (data_buffer + data_buffer_size,
"%02X",
- (frag_ptr->fr_literal[byte_in_frag]) & 0xff);
+ (frag_ptr->fr_literal[octet_in_frag]) & 0xff);
data_buffer_size += 2;
- byte_in_frag++;
+ octet_in_frag++;
}
{
- unsigned int var_rep_max = byte_in_frag;
- unsigned int var_rep_idx = byte_in_frag;
+ unsigned int var_rep_max = octet_in_frag;
+ unsigned int var_rep_idx = octet_in_frag;
/* Print as many bytes from the variable part as is sensible */
- while (((offsetT) byte_in_frag
- < frag_ptr->fr_fix + frag_ptr->fr_var * frag_ptr->fr_offset)
+ while (((offsetT) octet_in_frag
+ < (frag_ptr->fr_fix + frag_ptr->fr_var * frag_ptr->fr_offset))
&& data_buffer_size < MAX_BYTES - 3)
{
if (address == ~ (unsigned int) 0)
{
- address = frag_ptr->fr_address;
+ address = frag_ptr->fr_address / OCTETS_PER_BYTE;
}
sprintf (data_buffer + data_buffer_size,
"%02X",
@@ -649,7 +649,7 @@ calc_hex (list)
data_buffer_size += 2;
var_rep_idx++;
- byte_in_frag++;
+ octet_in_frag++;
if ((offsetT) var_rep_idx >= frag_ptr->fr_fix + frag_ptr->fr_var)
var_rep_idx = var_rep_max;
@@ -677,8 +677,10 @@ print_lines (list, lineno, string, address)
unsigned int idx;
unsigned int nchars;
unsigned int lines;
- unsigned int byte_in_word = 0;
+ unsigned int octet_in_word = 0;
char *src = data_buffer;
+ int end = strlen(src);
+ int cur;
/* Print the stuff on the first line */
listing_page (list);
@@ -707,18 +709,27 @@ print_lines (list, lineno, string, address)
/* And the data to go along with it */
idx = 0;
-
- while (*src && idx < nchars)
+ cur = 0;
+ while (src[cur] && idx < nchars)
{
- fprintf (list_file, "%c%c", src[0], src[1]);
- src += 2;
- byte_in_word++;
+ int offset;
+#if TARGET_BYTES_BIG_ENDIAN != 0
+ offset = cur;
+ fprintf (list_file, "%c%c", src[offset], src[offset+1]);
+#else
+ offset = (cur & ~(LISTING_WORD_SIZE * 2 - 1))
+ + (LISTING_WORD_SIZE - octet_in_word - 1) * 2;
+ if (offset < end)
+ fprintf (list_file, "%c%c", src[offset], src[offset+1]);
+#endif
+ cur += 2;
+ octet_in_word++;
- if (byte_in_word == LISTING_WORD_SIZE)
+ if (octet_in_word == LISTING_WORD_SIZE)
{
fprintf (list_file, " ");
idx++;
- byte_in_word = 0;
+ octet_in_word = 0;
}
idx += 2;
@@ -740,7 +751,7 @@ print_lines (list, lineno, string, address)
for (lines = 0;
lines < (unsigned int) listing_lhs_cont_lines
- && *src;
+ && src[cur];
lines ++)
{
nchars = ((LISTING_WORD_SIZE * 2) + 1)
@@ -750,18 +761,27 @@ print_lines (list, lineno, string, address)
/* Print any more lines of data, but more compactly */
fprintf (list_file, "% 4d ", lineno);
- while (*src && idx < nchars)
+ while (src[cur] && idx < nchars)
{
- fprintf (list_file, "%c%c", src[0], src[1]);
- src += 2;
+ int offset;
+#if TARGET_BYTES_BIG_ENDIAN != 0
+ offset = cur;
+ fprintf (list_file, "%c%c", src[offset], src[offset+1]);
+#else
+ offset = (cur & ~(LISTING_WORD_SIZE * 2 - 1))
+ + (LISTING_WORD_SIZE - octet_in_word - 1) * 2;
+ if (offset < end)
+ fprintf (list_file, "%c%c", src[offset], src[offset+1]);
+#endif
+ cur += 2;
idx += 2;
- byte_in_word++;
+ octet_in_word++;
- if (byte_in_word == LISTING_WORD_SIZE)
+ if (octet_in_word == LISTING_WORD_SIZE)
{
fprintf (list_file, " ");
idx++;
- byte_in_word = 0;
+ octet_in_word = 0;
}
}