[ARM] FDPIC: Make _GLOBAL_OFFSET_TABLE_ a relative symbol
authorChristophe Lyon <christophe.lyon@st.com>
Tue, 20 Mar 2018 09:55:53 +0000 (10:55 +0100)
committerChristophe Lyon <christophe.lyon@linaro.org>
Wed, 25 Apr 2018 20:58:52 +0000 (20:58 +0000)
2018-04-25  Christophe Lyon  <christophe.lyon@st.com>
Mickaël Guêné  <mickael.guene@st.com>

bfd/
* elf32-arm.c (elf32_arm_finish_dynamic_symbol): Handle
_GLOBAL_OFFSET_TABLE_ in FDPIC mode.

bfd/ChangeLog
bfd/elf32-arm.c

index 766341a..84d0891 100644 (file)
@@ -1,6 +1,12 @@
 2018-04-25  Christophe Lyon  <christophe.lyon@st.com>
        Mickaël Guêné  <mickael.guene@st.com>
 
+       * elf32-arm.c (elf32_arm_finish_dynamic_symbol): Handle
+       _GLOBAL_OFFSET_TABLE_ in FDPIC mode.
+
+2018-04-25  Christophe Lyon  <christophe.lyon@st.com>
+       Mickaël Guêné  <mickael.guene@st.com>
+
        * elf32-arm.c (bfd_elf32_arm_set_target_params): Handle FDPIC case
        for R_ARM_TARGET2.
 
index c2f4804..b72e397 100644 (file)
@@ -17086,10 +17086,10 @@ elf32_arm_finish_dynamic_symbol (bfd * output_bfd,
     }
 
   /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute.  On VxWorks,
-     the _GLOBAL_OFFSET_TABLE_ symbol is not absolute: it is relative
-     to the ".got" section.  */
+     and for FDPIC, the _GLOBAL_OFFSET_TABLE_ symbol is not absolute:
+     it is relative to the ".got" section.  */
   if (h == htab->root.hdynamic
-      || (!htab->vxworks_p && h == htab->root.hgot))
+      || (!htab->fdpic_p && !htab->vxworks_p && h == htab->root.hgot))
     sym->st_shndx = SHN_ABS;
 
   return TRUE;