summaryrefslogtreecommitdiffstats
path: root/libexec/rtld-elf/arm
diff options
context:
space:
mode:
authorcognet <cognet@FreeBSD.org>2004-09-28 14:43:12 +0000
committercognet <cognet@FreeBSD.org>2004-09-28 14:43:12 +0000
commit504d9a68b311a947544b1c2684b9730c2a9f4ee6 (patch)
tree9311a60f17c962827bf571f4b3d8226997c45d11 /libexec/rtld-elf/arm
parenta450d7f91f6f8e8442720f4a3ecd2ab07d5a77da (diff)
downloadFreeBSD-src-504d9a68b311a947544b1c2684b9730c2a9f4ee6.zip
FreeBSD-src-504d9a68b311a947544b1c2684b9730c2a9f4ee6.tar.gz
Don't try to relocate the dynamic loader in reloc_non_plt(). It has already
been done before.
Diffstat (limited to 'libexec/rtld-elf/arm')
-rw-r--r--libexec/rtld-elf/arm/reloc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libexec/rtld-elf/arm/reloc.c b/libexec/rtld-elf/arm/reloc.c
index 6dd8ad0..ff9d195 100644
--- a/libexec/rtld-elf/arm/reloc.c
+++ b/libexec/rtld-elf/arm/reloc.c
@@ -246,10 +246,13 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld)
int bytes = obj->nchains * sizeof(SymCache);
int r = -1;
+ /* The relocation for the dynamic loader has already been done. */
+ if (obj == obj_rtld)
+ return (0);
/*
* The dynamic loader may be called from a thread, we have
* limited amounts of stack available so we cannot use alloca().
- * */
+ */
cache = mmap(NULL, bytes, PROT_READ|PROT_WRITE, MAP_ANON, -1, 0);
if (cache == MAP_FAILED)
cache = NULL;
OpenPOWER on IntegriCloud