summaryrefslogtreecommitdiffstats
path: root/libexec
diff options
context:
space:
mode:
authordrahn <drahn@openbsd.org>2020-06-28 20:52:05 +0000
committerdrahn <drahn@openbsd.org>2020-06-28 20:52:05 +0000
commit89c7f3c984f6d1b2fe621250795669d5b738a965 (patch)
tree42f99493a0803f37119461c90bd06a35efa50cf0 /libexec
parentAdd processor specific dynamic tag values. (diff)
downloadwireguard-openbsd-89c7f3c984f6d1b2fe621250795669d5b738a965.tar.xz
wireguard-openbsd-89c7f3c984f6d1b2fe621250795669d5b738a965.zip
Disable powerpc64 lazy binding, code was not for 64 bit ABI
DT_PPC_GOT is not used on powerpc64, delete.
Diffstat (limited to 'libexec')
-rw-r--r--libexec/ld.so/powerpc64/rtld_machine.c27
1 files changed, 2 insertions, 25 deletions
diff --git a/libexec/ld.so/powerpc64/rtld_machine.c b/libexec/ld.so/powerpc64/rtld_machine.c
index f7e70be6a9f..4ea228e1fe9 100644
--- a/libexec/ld.so/powerpc64/rtld_machine.c
+++ b/libexec/ld.so/powerpc64/rtld_machine.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rtld_machine.c,v 1.1 2020/06/25 04:00:58 drahn Exp $ */
+/* $OpenBSD: rtld_machine.c,v 1.2 2020/06/28 20:52:05 drahn Exp $ */
/*
* Copyright (c) 1999 Dale Rahn
@@ -75,9 +75,6 @@ _dl_md_reloc(elf_object_t *object, int rel, int relasz)
if (relrel > numrela)
_dl_die("relcount > numrel: %ld > %d", relrel, numrela);
- if (object->Dyn.info[DT_PROC(DT_PPC_GOT)] == 0)
- _dl_die("unsupported insecure BSS PLT object");
-
/* tight loop for leading RELATIVE relocs */
for (i = 0; i < relrel; i++, relas++) {
Elf_Addr *r_addr;
@@ -275,27 +272,7 @@ _dl_md_reloc_got(elf_object_t *object, int lazy)
if (object->Dyn.info[DT_PLTREL] != DT_RELA)
return 0;
- if (!lazy) {
- fails = _dl_md_reloc(object, DT_JMPREL, DT_PLTRELSZ);
- } else {
- Elf_Addr *got;
- Elf_Addr *plt;
- int numplt, i;
-
- /* Relocate processor-specific tags. */
- object->Dyn.info[DT_PROC(DT_PPC_GOT)] += object->obj_base;
-
- got = (Elf_Addr *)
- (Elf_RelA *)(object->Dyn.info[DT_PROC(DT_PPC_GOT)]);
- got[1] = (Elf_Addr)_dl_bind_start;
- got[2] = (Elf_Addr)object;
-
- plt = (Elf_Addr *)
- (Elf_RelA *)(object->Dyn.info[DT_PLTGOT]);
- numplt = object->Dyn.info[DT_PLTRELSZ] / sizeof(Elf_RelA);
- for (i = 0; i < numplt; i++)
- plt[i] += object->obj_base;
- }
+ fails = _dl_md_reloc(object, DT_JMPREL, DT_PLTRELSZ);
return fails;
}