* scripttempl/armbpabi.sc (VERSION): Make special section symbols
authorMark Mitchell <mark@codesourcery.com>
Thu, 10 Feb 2005 05:49:21 +0000 (05:49 +0000)
committerMark Mitchell <mark@codesourcery.com>
Thu, 10 Feb 2005 05:49:21 +0000 (05:49 +0000)
local.
(Image$$ER_RO$$Base): Define whenever RELOCATING.
(Image$$ER_RO$$Limit): Likewise.
(SHT$$INIT_ARRAY$$Base): Likewise.
(SHT$$INIT_ARRAY$$Limit): Likeise.

ld/ChangeLog
ld/scripttempl/armbpabi.sc

index 9a5824bbf5b3081cd6d35c2bf4f9caf19eaabf1d..82d9b1c80a5bf0ad380e97c0abbb81b0297baedf 100644 (file)
@@ -1,3 +1,12 @@
+2005-02-08  Mark Mitchell  <mark@codesourcery.com>
+
+       * scripttempl/armbpabi.sc (VERSION): Make special section symbols
+       local. 
+       (Image$$ER_RO$$Base): Define whenever RELOCATING.
+       (Image$$ER_RO$$Limit): Likewise.
+       (SHT$$INIT_ARRAY$$Base): Likewise.
+       (SHT$$INIT_ARRAY$$Limit): Likeise.
+
 2005-02-10  Ben Elliston  <bje@au.ibm.com>
 
        * emultempl/beos.em: Remove #if 0 and #if 1 blocks.
index b98f077ed1c10bcf43c7095af866f54a1d4f4429..589a9e5006f476242a0f87ee794326e05f352116 100644 (file)
@@ -134,15 +134,37 @@ ${RELOCATING- /* For some reason, the Solaris linker makes bad executables
   at non-zero addresses.  Could be a Solaris ld bug, could be a GNU ld
   bug.  But for now assigning the zero vmas works.  */}
 
+/* ARM's proprietary toolchain generate these symbols to match the start 
+   and end of particular sections of the image.  SymbianOS uses these
+   symbols.  We provide them for compatibility with ARM's toolchains.  
+   These symbols should be bound locally; each shared object may define 
+   its own version of these symbols.  */ 
+       
+VERSION
+{ 
+  { 
+    local: 
+      Image\$\$ER_RO\$\$Base;
+      Image\$\$ER_RO\$\$Limit;
+      SHT\$\$INIT_ARRAY\$\$Base;
+      SHT\$\$INIT_ARRAY\$\$Limit;
+      .ARM.exidx\$\$Base;      
+      .ARM.exidx\$\$Limit;
+  };
+}
+
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR});}}}
-  /* SymbianOS uses this symbol.  */
-  ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (Image\$\$ER_RO\$\$Base = ${TEXT_START_ADDR});}}} 
+
   ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+ . = ${TEXT_BASE_ADDRESS};}}}
   ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_BASE_ADDRESS};}}
   ${CREATE_PIE+${RELOCATING+. = ${SHLIB_BASE_ADDRESS};}}
+
+  /* Define Image\$\$ER_RO\$\$Base.  */
+  ${RELOCATING+PROVIDE (Image\$\$ER_RO\$\$Base = .);}
+
   ${INITIAL_READONLY_SECTIONS}
 
 EOF
@@ -174,8 +196,10 @@ cat <<EOF
   ${RELOCATING+PROVIDE (__etext = .);}
   ${RELOCATING+PROVIDE (_etext = .);}
   ${RELOCATING+PROVIDE (etext = .);}
-  /* SymbianOS uses this symbol.  */
+
+  /* Define Image\$\$ER_RO\$\$Limit.  */
   ${RELOCATING+PROVIDE (Image\$\$ER_RO\$\$Limit = .);}
+
   ${WRITABLE_RODATA-${RODATA}}
   .rodata1      ${RELOCATING-0} : { *(.rodata1) }
   ${CREATE_SHLIB-${SDATA2}}
@@ -196,10 +220,10 @@ cat <<EOF
 
   ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_start = .);}}
   /* SymbianOS uses this symbol.  */
-  ${RELOCATING+${CREATE_SHLIB-PROVIDE (SHT\$\$INIT_ARRAY\$\$Base = .);}}
+  ${RELOCATING+PROVIDE (SHT\$\$INIT_ARRAY\$\$Base = .);}
   .init_array   ${RELOCATING-0} : { *(.init_array) }
   /* SymbianOS uses this symbol.  */
-  ${RELOCATING+${CREATE_SHLIB-PROVIDE (SHT\$\$INIT_ARRAY\$\$Limit = .);}}
+  ${RELOCATING+PROVIDE (SHT\$\$INIT_ARRAY\$\$Limit = .);}
   ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_end = .);}}
 
   ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_start = .);}}