From d1fb15c154b99f9ca8d2356fa9057827b0ab89af Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Tue, 13 Nov 2007 09:37:59 -0800 Subject: Address data is int64_t; simplify writing an address object Address data is always int64_t even if the size itself is smaller; this was broken on bigendian hosts (still need testing!) Create simple "write sized object" macros. --- output/outbin.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) (limited to 'output/outbin.c') diff --git a/output/outbin.c b/output/outbin.c index d5ec3c7..68c5d95 100644 --- a/output/outbin.c +++ b/output/outbin.c @@ -788,12 +788,7 @@ static void bin_out(int32_t segto, const void *data, if (segment != NO_SEG) add_reloc(s, size, segment, -1L); p = mydata; - if (size == 4) - WRITELONG(p, *(int32_t *)data); - else if (size == 8) - WRITEDLONG(p, *(int64_t *)data); - else - WRITESHORT(p, *(int32_t *)data); + WRITEADDR(p, *(int64_t *)data, size); saa_wbytes(s->contents, mydata, size); } s->length += size; @@ -836,11 +831,7 @@ static void bin_out(int32_t segto, const void *data, if (s->flags & TYPE_PROGBITS) { add_reloc(s, size, segment, segto); p = mydata; - /* XXX: WHAT ABOUT SIZE == 8? */ - if (size == 4) - WRITELONG(p, *(int32_t *)data - size - s->length); - else - WRITESHORT(p, *(int32_t *)data - size - s->length); + WRITEADDR(p, *(int64_t *)data - size - s->length, size); saa_wbytes(s->contents, mydata, size); } s->length += size; -- cgit v1.2.3