diff options
author | Michael Shalayeff <mickey@cvs.openbsd.org> | 2004-06-01 21:07:47 +0000 |
---|---|---|
committer | Michael Shalayeff <mickey@cvs.openbsd.org> | 2004-06-01 21:07:47 +0000 |
commit | d4a566b5813c7b9e6c67eff3fc7cec87d34ba771 (patch) | |
tree | fd3e809ffb11851b446e531b26c7924153ea9a8e /libexec/ld.so/hppa | |
parent | ab15a2ff9299f907bc8e2485500a7b5c4cb24b9f (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.c | 6 |
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); |