summaryrefslogtreecommitdiff
path: root/libexec/ld.so/hppa
diff options
context:
space:
mode:
authorMichael Shalayeff <mickey@cvs.openbsd.org>2004-06-01 21:07:47 +0000
committerMichael Shalayeff <mickey@cvs.openbsd.org>2004-06-01 21:07:47 +0000
commitd4a566b5813c7b9e6c67eff3fc7cec87d34ba771 (patch)
treefd3e809ffb11851b446e531b26c7924153ea9a8e /libexec/ld.so/hppa
parentab15a2ff9299f907bc8e2485500a7b5c4cb24b9f (diff)
need to fixup for empty pltgot (weak regress is a test for it)
Diffstat (limited to 'libexec/ld.so/hppa')
-rw-r--r--libexec/ld.so/hppa/rtld_machine.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/libexec/ld.so/hppa/rtld_machine.c b/libexec/ld.so/hppa/rtld_machine.c
index 84ac8d7c167..fb16756d8df 100644
--- a/libexec/ld.so/hppa/rtld_machine.c
+++ b/libexec/ld.so/hppa/rtld_machine.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rtld_machine.c,v 1.3 2004/05/27 21:59:07 mickey Exp $ */
+/* $OpenBSD: rtld_machine.c,v 1.4 2004/06/01 21:07:46 mickey Exp $ */
/*
* Copyright (c) 2004 Michael Shalayeff
@@ -109,6 +109,10 @@ _dl_md_reloc(elf_object_t *object, int rel, int relasz)
if (rela == NULL)
return (0);
+ /* either it's an ld bug or a wacky hpux abi */
+ if (!object->dyn.pltgot)
+ object->Dyn.info[DT_PLTGOT] += loff;
+
if (object->dyn.init && !((Elf_Addr)object->dyn.init & 2)) {
Elf_Addr addr = _dl_md_plabel((Elf_Addr)object->dyn.init,
object->dyn.pltgot);