diff options
author | Philip Guenther <guenther@cvs.openbsd.org> | 2016-08-07 03:05:24 +0000 |
---|---|---|
committer | Philip Guenther <guenther@cvs.openbsd.org> | 2016-08-07 03:05:24 +0000 |
commit | 88ecb48a7eb2d3334ff00343fecdf507bd2f3b01 (patch) | |
tree | 717f0c8f3ab2d661159dd3260e8600ee858ff929 /libexec/ld.so | |
parent | 06c7f4ed1a38f5899f20c1fc4ca972330277722f (diff) |
As with csu, alpha passes &_DYNAMIC to _reloc_alpha_got(), so just
save that and pass it to _dl_boot_bind() too
Diffstat (limited to 'libexec/ld.so')
-rw-r--r-- | libexec/ld.so/alpha/ldasm.S | 5 | ||||
-rw-r--r-- | libexec/ld.so/boot.c | 6 |
2 files changed, 5 insertions, 6 deletions
diff --git a/libexec/ld.so/alpha/ldasm.S b/libexec/ld.so/alpha/ldasm.S index 952b0c7e174..661dc25789e 100644 --- a/libexec/ld.so/alpha/ldasm.S +++ b/libexec/ld.so/alpha/ldasm.S @@ -1,4 +1,4 @@ -/* $OpenBSD: ldasm.S,v 1.35 2016/05/07 19:05:23 guenther Exp $ */ +/* $OpenBSD: ldasm.S,v 1.36 2016/08/07 03:05:23 guenther Exp $ */ /* * Copyright (c) 2001 Niklas Hallqvist @@ -77,6 +77,7 @@ L2: ldiq s3, L2 /* get where the linker thought we were */ mov s2, a1 lda t5, _DYNAMIC addq s2, t5, a0 + mov a0, s6 bsr ra, _reloc_alpha_got @@ -95,7 +96,7 @@ L2: ldiq s3, L2 /* get where the linker thought we were */ mov a5, s5 lda s2, 0(sp) mov s2, a1 - mov 0, a2 /* dynamicp is unused on alpha */ + mov s6, a2 /* &_DYNAMIC */ CALL(_dl_boot_bind) mov s3, a0 /* **argv */ mov s4, a1 /* **envp */ diff --git a/libexec/ld.so/boot.c b/libexec/ld.so/boot.c index 7f2661751fa..b7b34dbeb15 100644 --- a/libexec/ld.so/boot.c +++ b/libexec/ld.so/boot.c @@ -1,4 +1,4 @@ -/* $OpenBSD: boot.c,v 1.11 2016/08/07 03:03:44 guenther Exp $ */ +/* $OpenBSD: boot.c,v 1.12 2016/08/07 03:05:23 guenther Exp $ */ /* * Copyright (c) 1998 Per Fogelstrom, Opsycon AB @@ -127,9 +127,7 @@ _dl_boot_bind(const long sp, long *dl_data, Elf_Dyn *dynamicp) * Cache the data for easier access. */ -#if defined(__alpha__) - dynp = (Elf_Dyn *)((long)_DYNAMIC); -#elif defined(__arm__) +#if defined(__arm__) dynp = (Elf_Dyn *)((long)_DYNAMIC + loff); #else dynp = dynamicp; |