Teach mips64 to pass &_DYNAMIC to _dl_boot_bind()
authorguenther <guenther@openbsd.org>
Sun, 7 Aug 2016 03:01:53 +0000 (03:01 +0000)
committerguenther <guenther@openbsd.org>
Sun, 7 Aug 2016 03:01:53 +0000 (03:01 +0000)
mips64be testing by deraadt@

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

index 3216bdf..5adc7c1 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: boot.c,v 1.9 2016/08/07 02:59:27 guenther Exp $ */
+/*     $OpenBSD: boot.c,v 1.10 2016/08/07 03:01:53 guenther Exp $ */
 
 /*
  * Copyright (c) 1998 Per Fogelstrom, Opsycon AB
@@ -129,7 +129,7 @@ _dl_boot_bind(const long sp, long *dl_data, Elf_Dyn *dynamicp)
 
 #if defined(__alpha__)
        dynp = (Elf_Dyn *)((long)_DYNAMIC);
-#elif defined(__arm__) || defined(__i386__) || defined(__mips64__)
+#elif defined(__arm__) || defined(__i386__)
        dynp = (Elf_Dyn *)((long)_DYNAMIC + loff);
 #else
        dynp = dynamicp;
index a3172ab..fa5e9eb 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ldasm.S,v 1.19 2016/05/07 19:05:23 guenther Exp $ */
+/*     $OpenBSD: ldasm.S,v 1.20 2016/08/07 03:01:53 guenther Exp $ */
 
 /*
  * Copyright (c) 1998-2002 Opsycon AB, Sweden.
@@ -55,6 +55,8 @@ LEAF(_dl_start, FRAMESZ)              /* Not really LEAF, but we simplify */
 
        PTR_ADDU a0, sp, FRAMESZ        # Where stack info is.
        PTR_ADDU a1, sp, 0              # Where fast AUX info will be.
+       LA      a2, _DYNAMIC
+       PTR_ADDU a2, s0                 # Where _DYNAMIC is
        LA      t9, _dl_boot_bind
        PTR_ADDU t9, s0
        jalr    t9                      # Relocate ourself.