diff options
author | marcel <marcel@FreeBSD.org> | 2011-02-17 19:31:21 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2011-02-17 19:31:21 +0000 |
commit | 5222466d89bf6de3acb4cadbe62c2ebf2edc8d36 (patch) | |
tree | fcf92218a0a56294fa52011082777d82c994aeed /sys/arm | |
parent | 9859f69ffb3576bf30fc0d502a6ac9a871a6228d (diff) | |
download | FreeBSD-src-5222466d89bf6de3acb4cadbe62c2ebf2edc8d36.zip FreeBSD-src-5222466d89bf6de3acb4cadbe62c2ebf2edc8d36.tar.gz |
Fix the R_ARM_ABS32 relocation implementation. The memory address
contains the addend that we need to include.
Obtained from: Juniper Networks.
Fixed by: Santhanakrishnan Balraj <sbalraj@juniper.net>
Diffstat (limited to 'sys/arm')
-rw-r--r-- | sys/arm/arm/elf_machdep.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/sys/arm/arm/elf_machdep.c b/sys/arm/arm/elf_machdep.c index e77a542..fcc332c 100644 --- a/sys/arm/arm/elf_machdep.c +++ b/sys/arm/arm/elf_machdep.c @@ -169,9 +169,7 @@ elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data, addr = lookup(lf, symidx, 1); if (addr == 0) return -1; - if (*where != addr) - *where = addr; - + *where += addr; break; case R_ARM_COPY: /* none */ |