mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-01-24 16:35:40 +08:00
assemble.c: when converting an address to RAWDATA, need to update size
When converting an address to RAWDATA we have to copy the address size into the size variable, as the size variable may be negative. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
This commit is contained in:
parent
fc1a7ad662
commit
ca351fa175
@ -357,7 +357,7 @@ static void out(int64_t offset, int32_t segto, const void *data,
|
||||
WRITEADDR(q, *(int64_t *)data, asize);
|
||||
data = p;
|
||||
type = OUT_RAWDATA;
|
||||
|
||||
size = asize;
|
||||
asize = 0; /* No longer an address */
|
||||
}
|
||||
|
||||
@ -380,12 +380,13 @@ static void out(int64_t offset, int32_t segto, const void *data,
|
||||
errfunc(ERR_NONFATAL,
|
||||
"%d-bit signed relocation unsupported by output format %s\n",
|
||||
asize << 3, outfmt->shortname);
|
||||
size = asize;
|
||||
} else {
|
||||
errfunc(ERR_WARNING | ERR_WARN_ZEXTRELOC,
|
||||
"%d-bit unsigned relocation zero-extended from %d bits\n",
|
||||
asize << 3, outfmt->maxbits);
|
||||
outfmt->output(segto, data, type, amax, segment, wrt);
|
||||
size -= amax;
|
||||
size = asize - amax;
|
||||
}
|
||||
data = zero_buffer;
|
||||
type = OUT_RAWDATA;
|
||||
|
Loading…
Reference in New Issue
Block a user