From: nasm-bot f. H. P. A. <hp...@li...> - 2016-02-12 21:51:37
|
Commit-ID: ca351fa1756a47d70b9fa7db6fe6ad8c9ab0d8c6 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=ca351fa1756a47d70b9fa7db6fe6ad8c9ab0d8c6 Author: H. Peter Anvin <hp...@li...> AuthorDate: Fri, 12 Feb 2016 13:46:39 -0800 Committer: H. Peter Anvin <hp...@li...> CommitDate: Fri, 12 Feb 2016 13:49:45 -0800 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 <hp...@li...> --- assemble.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/assemble.c b/assemble.c index acaf24b..ed8b9f8 100644 --- a/assemble.c +++ b/assemble.c @@ -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; |