summaryrefslogtreecommitdiffstats
path: root/sys/arm
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2011-02-17 19:31:21 +0000
committermarcel <marcel@FreeBSD.org>2011-02-17 19:31:21 +0000
commit5222466d89bf6de3acb4cadbe62c2ebf2edc8d36 (patch)
treefcf92218a0a56294fa52011082777d82c994aeed /sys/arm
parent9859f69ffb3576bf30fc0d502a6ac9a871a6228d (diff)
downloadFreeBSD-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.c4
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 */
OpenPOWER on IntegriCloud