mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-27 02:14:04 +08:00
2005-11-03 Paul Brook <paul@codesourcery.com>
* scripttempl/elf.sc: Add .init_array.* and .fini_array.*. * scripttempl/armbpabi.sc: Make init/fini array consistent with elf.sc. * scripttempl/elf32sh-symbian.sc: Ditto. * scripttempl/elfxtensa.sc: Ditto.
This commit is contained in:
parent
6ece8836a6
commit
6f2942edf0
@ -1,3 +1,11 @@
|
||||
2005-11-03 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
* scripttempl/elf.sc: Add .init_array.* and .fini_array.*.
|
||||
* scripttempl/armbpabi.sc: Make init/fini array consistent with
|
||||
elf.sc.
|
||||
* scripttempl/elf32sh-symbian.sc: Ditto.
|
||||
* scripttempl/elfxtensa.sc: Ditto.
|
||||
|
||||
2005-11-03 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* ldlang.h (lang_output_section_statement_type): Rearrange. Remove
|
||||
|
@ -211,26 +211,30 @@ cat <<EOF
|
||||
segment; there is no runtime relocation applied to these
|
||||
arrays. */
|
||||
|
||||
/* Ensure the __preinit_array_start label is properly aligned. We
|
||||
could instead move the label definition inside the section, but
|
||||
the linker would then create the section even if it turns out to
|
||||
be empty, which isn't pretty. */
|
||||
${RELOCATING+. = ALIGN(${ALIGNMENT});}
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_start = .);}}
|
||||
.preinit_array ${RELOCATING-0} : { *(.preinit_array) }
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_end = .);}}
|
||||
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_start = .);}}
|
||||
/* SymbianOS uses this symbol. */
|
||||
${RELOCATING+PROVIDE (SHT\$\$INIT_ARRAY\$\$Base = .);}
|
||||
.init_array ${RELOCATING-0} : { *(.init_array) }
|
||||
/* SymbianOS uses this symbol. */
|
||||
${RELOCATING+PROVIDE (SHT\$\$INIT_ARRAY\$\$Limit = .);}
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_end = .);}}
|
||||
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_start = .);}}
|
||||
.fini_array ${RELOCATING-0} : { *(.fini_array) }
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_end = .);}}
|
||||
.preinit_array ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__preinit_array_start = .);}}
|
||||
KEEP (*(.preinit_array))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__preinit_array_end = .);}}
|
||||
}
|
||||
.init_array ${RELOCATING-0} :
|
||||
{
|
||||
/* SymbianOS uses this symbol. */
|
||||
${RELOCATING+PROVIDE (SHT\$\$INIT_ARRAY\$\$Base = .);}
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__init_array_start = .);}}
|
||||
KEEP (*(SORT(.init_array.*)))
|
||||
KEEP (*(.init_array))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__init_array_end = .);}}
|
||||
/* SymbianOS uses this symbol. */
|
||||
${RELOCATING+PROVIDE (SHT\$\$INIT_ARRAY\$\$Limit = .);}
|
||||
}
|
||||
.fini_array ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__fini_array_start = .);}}
|
||||
KEEP (*(.fini_array))
|
||||
KEEP (*(SORT(.fini_array.*)))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__fini_array_end = .);}}
|
||||
}
|
||||
|
||||
${OTHER_READONLY_SECTIONS}
|
||||
.eh_frame_hdr : { *(.eh_frame_hdr) }
|
||||
|
@ -384,6 +384,7 @@ cat <<EOF
|
||||
.init_array ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__init_array_start = .);}}
|
||||
KEEP (*(SORT(.init_array.*)))
|
||||
KEEP (*(.init_array))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__init_array_end = .);}}
|
||||
}
|
||||
@ -391,6 +392,7 @@ cat <<EOF
|
||||
{
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__fini_array_start = .);}}
|
||||
KEEP (*(.fini_array))
|
||||
KEEP (*(SORT(.fini_array.*)))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__fini_array_end = .);}}
|
||||
}
|
||||
${SMALL_DATA_CTOR-${RELOCATING+${CTOR}}}
|
||||
|
@ -204,22 +204,26 @@ SECTIONS
|
||||
/* Adjust the address for the data segment. We want to adjust up to
|
||||
the same address within the page on the next page up. */
|
||||
. = ALIGN(128) + (. & (128 - 1));
|
||||
/* Ensure the __preinit_array_start label is properly aligned. We
|
||||
could instead move the label definition inside the section, but
|
||||
the linker would then create the section even if it turns out to
|
||||
be empty, which isn't pretty. */
|
||||
${RELOCATING+. = ALIGN(${ALIGNMENT});}
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_start = .);}}
|
||||
.preinit_array ${RELOCATING-0} : { *(.preinit_array) }
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_end = .);}}
|
||||
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_start = .);}}
|
||||
.init_array ${RELOCATING-0} : { *(.init_array) }
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_end = .);}}
|
||||
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_start = .);}}
|
||||
.fini_array ${RELOCATING-0} : { *(.fini_array) }
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_end = .);}}
|
||||
.preinit_array ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__preinit_array_start = .);}}
|
||||
KEEP (*(.preinit_array))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__preinit_array_end = .);}}
|
||||
}
|
||||
.init_array ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__init_array_start = .);}}
|
||||
KEEP (*(SORT(.init_array.*)))
|
||||
KEEP (*(.init_array))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__init_array_end = .);}}
|
||||
}
|
||||
.fini_array ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__fini_array_start = .);}}
|
||||
KEEP (*(.fini_array))
|
||||
KEEP (*(SORT(.fini_array.*)))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__fini_array_end = .);}}
|
||||
}
|
||||
|
||||
${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+. = ${DATA_ADDR-${DATA_SEGMENT_ALIGN}};}}}
|
||||
${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_DATA_ADDR-${DATA_SEGMENT_ALIGN}};}}
|
||||
|
@ -350,9 +350,26 @@ cat <<EOF
|
||||
.tdata ${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }
|
||||
.tbss ${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }
|
||||
|
||||
.preinit_array ${RELOCATING-0} : { KEEP (*(.preinit_array)) }
|
||||
.init_array ${RELOCATING-0} : { KEEP (*(.init_array)) }
|
||||
.fini_array ${RELOCATING-0} : { KEEP (*(.fini_array)) }
|
||||
.preinit_array ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__preinit_array_start = .);}}
|
||||
KEEP (*(.preinit_array))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__preinit_array_end = .);}}
|
||||
}
|
||||
.init_array ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__init_array_start = .);}}
|
||||
KEEP (*(SORT(.init_array.*)))
|
||||
KEEP (*(.init_array))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__init_array_end = .);}}
|
||||
}
|
||||
.fini_array ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__fini_array_start = .);}}
|
||||
KEEP (*(.fini_array))
|
||||
KEEP (*(SORT(.fini_array.*)))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__fini_array_end = .);}}
|
||||
}
|
||||
|
||||
${SMALL_DATA_CTOR-${RELOCATING+${CTOR}}}
|
||||
${SMALL_DATA_DTOR-${RELOCATING+${DTOR}}}
|
||||
|
Loading…
Reference in New Issue
Block a user