As with csu, alpha passes &_DYNAMIC to _reloc_alpha_got(), so just
authorguenther <guenther@openbsd.org>
Sun, 7 Aug 2016 03:05:23 +0000 (03:05 +0000)
committerguenther <guenther@openbsd.org>
Sun, 7 Aug 2016 03:05:23 +0000 (03:05 +0000)
save that and pass it to _dl_boot_bind() too

libexec/ld.so/alpha/ldasm.S
libexec/ld.so/boot.c

index 952b0c7..661dc25 100644 (file)
@@ -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  */
index 7f26617..b7b34db 100644 (file)
@@ -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;