diff options
author | Mark Mitchell <mark@codesourcery.com> | 2005-02-10 05:49:21 +0000 |
---|---|---|
committer | Mark Mitchell <mark@codesourcery.com> | 2005-02-10 05:49:21 +0000 |
commit | 4e5db43bfad4c4f2db529fcbfda195b01befa441 (patch) | |
tree | 1da52ff956d4333ec2a02cd185c34be7d77a6908 /ld/scripttempl | |
parent | 7f05722e0911a6891477ffdd4ce564c68d512d22 (diff) | |
download | gdb-4e5db43bfad4c4f2db529fcbfda195b01befa441.zip gdb-4e5db43bfad4c4f2db529fcbfda195b01befa441.tar.gz gdb-4e5db43bfad4c4f2db529fcbfda195b01befa441.tar.bz2 |
* 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.
Diffstat (limited to 'ld/scripttempl')
-rw-r--r-- | ld/scripttempl/armbpabi.sc | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/ld/scripttempl/armbpabi.sc b/ld/scripttempl/armbpabi.sc index b98f077..589a9e5 100644 --- a/ld/scripttempl/armbpabi.sc +++ b/ld/scripttempl/armbpabi.sc @@ -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 = .);}} |