summaryrefslogtreecommitdiff
path: root/libexec/rtld-elf/powerpc64
diff options
context:
space:
mode:
authorNathan Whitehorn <nwhitehorn@FreeBSD.org>2010-09-12 17:04:51 +0000
committerNathan Whitehorn <nwhitehorn@FreeBSD.org>2010-09-12 17:04:51 +0000
commitd48dde6f68072916eb115b65cb71353edbb19e7e (patch)
treeb482662e841f2f28f586dc6a8b870326a55c3c57 /libexec/rtld-elf/powerpc64
parent89f81c964662f6934ef86f94f46507bb7f944d18 (diff)
downloadsrc-test2-d48dde6f68072916eb115b65cb71353edbb19e7e.tar.gz
src-test2-d48dde6f68072916eb115b65cb71353edbb19e7e.zip
Notes
Diffstat (limited to 'libexec/rtld-elf/powerpc64')
-rw-r--r--libexec/rtld-elf/powerpc64/reloc.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/libexec/rtld-elf/powerpc64/reloc.c b/libexec/rtld-elf/powerpc64/reloc.c
index b35be1806529..d2430e741d86 100644
--- a/libexec/rtld-elf/powerpc64/reloc.c
+++ b/libexec/rtld-elf/powerpc64/reloc.c
@@ -405,8 +405,13 @@ reloc_jmpslots(Obj_Entry *obj)
(void *)target, basename(defobj->path));
#endif
- reloc_jmpslot(where, target, defobj, obj,
- (const Elf_Rel *) rela);
+ if (def == &sym_zero) {
+ /* Zero undefined weak symbols */
+ bzero(where, sizeof(struct funcdesc));
+ } else {
+ reloc_jmpslot(where, target, defobj, obj,
+ (const Elf_Rel *) rela);
+ }
}
obj->jmpslots_done = true;