mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-02-05 16:51:27 +08:00
5b730a197a
Ensure that the int64_t offset value, which ultimately comes from an int64_t value in gencode() (assemble.c:1906), is completely written to the temporary buffer, instead of merely its least significant 32 bits. Prior to this change, WRITELONG was used instead of WRITEDLONG, which resulted in add_reloc being passed an int64_t "reloff" whose least significant 32 bits were those from the aforementioned offset value, and whose most significant 32 bits were stack garbage from "mydata". This led to get_closest_section_symbol_by_offset() attempting to search for extremely large values of "offset" among the symbols in "syms", which meant that the last symbol with a matching section number would always win the symbol search. In effect, this clobbered the resultant relocation information, such that all entries would be resolved with the same symbol. Test output can be found here https://www.azabani.com/patch/2/output.txt This patch fixes http://bugzilla.nasm.us/show_bug.cgi?id=3392306 Signed-off-by: Delan Azabani <delan@azabani.com> Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> |
||
---|---|---|
contrib | ||
doc | ||
headers | ||
inttypes | ||
lib | ||
macros | ||
misc | ||
Mkfiles | ||
nsis | ||
output | ||
perllib | ||
rdoff | ||
test | ||
.gitignore | ||
aclocal.m4 | ||
assemble.c | ||
assemble.h | ||
AUTHORS | ||
autogen.sh | ||
ChangeLog | ||
CHANGES | ||
compiler.h | ||
configure.in | ||
crc64.c | ||
directiv.dat | ||
directiv.pl | ||
disasm.c | ||
disasm.h | ||
disp8.c | ||
disp8.h | ||
eval.c | ||
eval.h | ||
exprlib.c | ||
float.c | ||
float.h | ||
hashtbl.c | ||
hashtbl.h | ||
iflag.h | ||
ilog2.c | ||
insns-iflags.pl | ||
insns.dat | ||
insns.h | ||
insns.pl | ||
INSTALL | ||
install-sh | ||
labels.c | ||
labels.h | ||
LICENSE | ||
listing.c | ||
listing.h | ||
macros.pl | ||
Makefile.in | ||
mkdep.pl | ||
nasm.c | ||
nasm.h | ||
nasm.nsi | ||
nasm.spec.in | ||
nasm.txt | ||
nasmlib.c | ||
nasmlib.h | ||
ndisasm.c | ||
ndisasm.txt | ||
opflags.h | ||
parser.c | ||
parser.h | ||
phash.pl | ||
pptok.dat | ||
pptok.pl | ||
preproc-nop.c | ||
preproc.c | ||
preproc.h | ||
quote.c | ||
quote.h | ||
raa.c | ||
raa.h | ||
rbtree.c | ||
rbtree.h | ||
README | ||
regs.dat | ||
regs.pl | ||
saa.c | ||
saa.h | ||
standard.mac | ||
stdscan.c | ||
stdscan.h | ||
strfunc.c | ||
SubmittingPatches | ||
sync.c | ||
sync.h | ||
syncfiles.pl | ||
tables.h | ||
TODO | ||
tokens.dat | ||
tokhash.pl | ||
ver.c | ||
version | ||
version.pl |
NASM, the Netwide Assembler. Many many developers all over the net respect NASM for what it is - a widespread (thus netwide), portable (thus netwide!), very flexible and mature assembler tool with support for many output formats (thus netwide!!). Now we have good news for you: NASM is licensed under the "simplified" (2-clause) BSD license. This means its development is open to even wider society of programmers wishing to improve their lovely assembler. The NASM project is now situated at SourceForge.net, the most popular Open Source development site on the Internet. Visit our website at http://nasm.sourceforge.net/ and our SourceForge project at http://sourceforge.net/projects/nasm/ See the file CHANGES for the description of changes between revisions, and the file AUTHORS for a list of contributors. With best regards, NASM crew.