From 775153b1bf10ac6a44c70920abd54334f79ff267 Mon Sep 17 00:00:00 2001 From: Cyrill Gorcunov Date: Sat, 21 Feb 2015 18:54:33 +0300 Subject: [PATCH] output: dbg,aout,elf32 -- Fix out for signed relocations @size might be negative for signed relocations but its length is abs value. This is rather a fix for future use because at moment we can't hit this problems but better be on a safe side. Signed-off-by: Cyrill Gorcunov --- output/outaout.c | 4 ++-- output/outdbg.c | 2 +- output/outelf32.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/output/outaout.c b/output/outaout.c index b9f21ec66..860b8a8bd 100644 --- a/output/outaout.c +++ b/output/outaout.c @@ -677,11 +677,11 @@ static void aout_out(int32_t segto, const void *data, } } p = mydata; - if (size == 2) + if (asize == 2) WRITESHORT(p, addr); else WRITELONG(p, addr); - aout_sect_write(s, mydata, size); + aout_sect_write(s, mydata, asize); } else if (type == OUT_REL2ADR) { if (segment == segto) nasm_error(ERR_PANIC, "intra-segment OUT_REL2ADR"); diff --git a/output/outdbg.c b/output/outdbg.c index 77dcd7f93..155dbd177 100644 --- a/output/outdbg.c +++ b/output/outdbg.c @@ -128,7 +128,7 @@ static void dbg_out(int32_t segto, const void *data, int id; if (type == OUT_ADDRESS) - fprintf(ofile, "out to %"PRIx32", len = %d: ", segto, (int)size); + fprintf(ofile, "out to %"PRIx32", len = %d: ", segto, (int)abs((int)size)); else fprintf(ofile, "out to %"PRIx32", len = %"PRIu64": ", segto, size); diff --git a/output/outelf32.c b/output/outelf32.c index b55853ce1..c1c8b82f5 100644 --- a/output/outelf32.c +++ b/output/outelf32.c @@ -808,8 +808,8 @@ static void elf_out(int32_t segto, const void *data, } else if (asize != 4 && segment != NO_SEG) { nasm_error(ERR_NONFATAL, "Unsupported non-32-bit ELF relocation"); } - WRITEADDR(p, addr, size); - elf_sect_write(s, mydata, size); + WRITEADDR(p, addr, asize); + elf_sect_write(s, mydata, asize); break; }