diff mbox

[uclibc-ng-devel,v2,1/2] ARC: ldso: don't use _DYNAMIC@gotpc construct #1

Message ID 1484339093-16814-2-git-send-email-vgupta@synopsys.com
State Accepted
Headers show

Commit Message

Vineet Gupta Jan. 13, 2017, 8:24 p.m. UTC
This converts elf_machine_dynamic() to not use the _DYNAMIC@xx construct
which was histroically converted by assembler into _GLOBAL_OFFSET_TABLE

Now that "hack" is being removed from assembler, we need to make sure
that no code relies on that magic "conversion"

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
 ldso/ldso/arc/dl-sysdep.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
diff mbox

Patch

diff --git a/ldso/ldso/arc/dl-sysdep.h b/ldso/ldso/arc/dl-sysdep.h
index c6086e68e5c6..2b43efde594b 100644
--- a/ldso/ldso/arc/dl-sysdep.h
+++ b/ldso/ldso/arc/dl-sysdep.h
@@ -119,14 +119,14 @@  extern unsigned __udivmodsi4(unsigned, unsigned) attribute_hidden;
    | (((type) == R_ARC_COPY) * ELF_RTYPE_CLASS_COPY))
 
 /*
- * Get the runtime address of GOT[0]
+ * Get build time address of .dynamic as setup in GOT[0]
+ * This is called very early in _dl_start() so it has not been relocated to
+ * runtime value
  */
 static __always_inline Elf32_Addr elf_machine_dynamic(void)
 {
-	Elf32_Addr dyn;
-
-	__asm__("ld %0,[pcl,_DYNAMIC@gotpc]\n\t" : "=r" (dyn));
-	return dyn;
+	extern const Elf32_Addr _GLOBAL_OFFSET_TABLE_[] attribute_hidden;
+	return _GLOBAL_OFFSET_TABLE_[0];
 }
 
 /* Return the run-time load address of the shared object.  */