diff options
author | H. Peter Anvin <hpa@zytor.com> | 2009-07-07 10:24:52 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2009-07-07 10:24:52 -0700 |
commit | 62c0e8379c7619022f98331025ac7bb35660750a (patch) | |
tree | b5e6ecb500d8141532b9fe573d45d26b235faff8 | |
parent | 215086ace8584a777a0861edb08326e774b10c4b (diff) | |
download | nasm-62c0e8379c7619022f98331025ac7bb35660750a.tar.gz |
outdbg: fix OUT_REL*ADR, add OUT_REL8ADR
The OUT_REL*ADR types pass a pointer which points to an int64_t
which then should be truncated down to size. This matters on
bigendian platforms.
Add OUT_REL8ADR.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r-- | output/outdbg.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/output/outdbg.c b/output/outdbg.c index 84d558ea..676185f8 100644 --- a/output/outdbg.c +++ b/output/outdbg.c @@ -157,13 +157,18 @@ static void dbg_out(int32_t segto, const void *data, segment, wrt); break; case OUT_REL2ADR: - fprintf(dbgf, "rel2adr %04x (seg %08"PRIx32")\n", (int)*(int16_t *)data, - segment); + fprintf(dbgf, "rel2adr %04x (seg %08"PRIx32")\n", + (uint16_t)*(int64_t *)data, segment); break; case OUT_REL4ADR: - fprintf(dbgf, "rel4adr %08"PRIx32" (seg %08"PRIx32")\n", *(int32_t *)data, + fprintf(dbgf, "rel4adr %08"PRIx32" (seg %08"PRIx32")\n", + (uint32_t)*(int64_t *)data, segment); break; + case OUT_REL8ADR: + fprintf(dbgf, "rel8adr %016"PRIx64" (seg %08"PRIx32")\n", + (uint64_t)*(int64_t *)data, segment); + break; default: fprintf(dbgf, "unknown\n"); break; |