Don't call compare_section in case of by_none

PR ld/14156
	* ldlang.c (wild_sort): Don't call compare_section in case of
	by_none.

	* scripttempl/elf.sc: Add SORT_NONE to .init and .fini sections.
	* scripttempl/elf32msp430.sc: Likewise.
	* scripttempl/elf32msp430_3.sc: Likewise.
	* scripttempl/elfd10v.sc: Likewise.
	* scripttempl/elfd30v.sc: Likewise.
	* scripttempl/elfxtensa.sc: Likewise.
This commit is contained in:
H.J. Lu 2012-08-01 01:03:47 +00:00
parent 488916061e
commit b2e4da5a83
8 changed files with 70 additions and 55 deletions

View file

@ -1,3 +1,16 @@
2012-07-31 H.J. Lu <hongjiu.lu@intel.com>
PR ld/14156
* ldlang.c (wild_sort): Don't call compare_section in case of
by_none.
* scripttempl/elf.sc: Add SORT_NONE to .init and .fini sections.
* scripttempl/elf32msp430.sc: Likewise.
* scripttempl/elf32msp430_3.sc: Likewise.
* scripttempl/elfd10v.sc: Likewise.
* scripttempl/elfd30v.sc: Likewise.
* scripttempl/elfxtensa.sc: Likewise.
2012-07-30 Nick Clifton <nickc@redhat.com> 2012-07-30 Nick Clifton <nickc@redhat.com>
* po/ld.pot: Updated template. * po/ld.pot: Updated template.

View file

@ -2462,7 +2462,9 @@ wild_sort (lang_wild_statement_type *wild,
/* Here either the files are not sorted by name, or we are /* Here either the files are not sorted by name, or we are
looking at the sections for this file. */ looking at the sections for this file. */
if (sec != NULL && sec->spec.sorted != none) if (sec != NULL
&& sec->spec.sorted != none
&& sec->spec.sorted != by_none)
if (compare_section (sec->spec.sorted, section, ls->section) < 0) if (compare_section (sec->spec.sorted, section, ls->section) < 0)
break; break;
} }

View file

@ -462,7 +462,7 @@ cat <<EOF
.init ${RELOCATING-0} : .init ${RELOCATING-0} :
{ {
${RELOCATING+${INIT_START}} ${RELOCATING+${INIT_START}}
KEEP (*(.init)) KEEP (*(SORT_NONE(.init)))
${RELOCATING+${INIT_END}} ${RELOCATING+${INIT_END}}
} ${FILL} } ${FILL}
@ -483,7 +483,7 @@ cat <<EOF
.fini ${RELOCATING-0} : .fini ${RELOCATING-0} :
{ {
${RELOCATING+${FINI_START}} ${RELOCATING+${FINI_START}}
KEEP (*(.fini)) KEEP (*(SORT_NONE(.fini)))
${RELOCATING+${FINI_END}} ${RELOCATING+${FINI_END}}
} ${FILL} } ${FILL}
${RELOCATING+PROVIDE (__${ETEXT_NAME} = .);} ${RELOCATING+PROVIDE (__${ETEXT_NAME} = .);}

View file

@ -99,17 +99,17 @@ SECTIONS
.text : .text :
{ {
${RELOCATING+. = ALIGN(2);} ${RELOCATING+. = ALIGN(2);}
*(.init) *(SORT_NONE(.init))
*(.init0) /* Start here after reset. */ *(SORT_NONE(.init0)) /* Start here after reset. */
*(.init1) *(SORT_NONE(.init1))
*(.init2) /* Copy data loop */ *(SORT_NONE(.init2)) /* Copy data loop */
*(.init3) *(SORT_NONE(.init3))
*(.init4) /* Clear bss */ *(SORT_NONE(.init4)) /* Clear bss */
*(.init5) *(SORT_NONE(.init5))
*(.init6) /* C++ constructors. */ *(SORT_NONE(.init6)) /* C++ constructors. */
*(.init7) *(SORT_NONE(.init7))
*(.init8) *(SORT_NONE(.init8))
*(.init9) /* Call main(). */ *(SORT_NONE(.init9)) /* Call main(). */
${CONSTRUCTING+ __ctors_start = . ; } ${CONSTRUCTING+ __ctors_start = . ; }
${CONSTRUCTING+ *(.ctors) } ${CONSTRUCTING+ *(.ctors) }
@ -124,17 +124,17 @@ SECTIONS
*(.text.*) *(.text.*)
${RELOCATING+. = ALIGN(2);} ${RELOCATING+. = ALIGN(2);}
*(.fini9) /* */ *(SORT_NONE(.fini9))
*(.fini8) *(SORT_NONE(.fini8))
*(.fini7) *(SORT_NONE(.fini7))
*(.fini6) /* C++ destructors. */ *(SORT_NONE(.fini6)) /* C++ destructors. */
*(.fini5) *(SORT_NONE(.fini5))
*(.fini4) *(SORT_NONE(.fini4))
*(.fini3) *(SORT_NONE(.fini3))
*(.fini2) *(SORT_NONE(.fini2))
*(.fini1) *(SORT_NONE(.fini1))
*(.fini0) /* Infinite loop after program termination. */ *(SORT_NONE(.fini0)) /* Infinite loop after program termination. */
*(.fini) *(SORT_NONE(.fini))
_etext = .; _etext = .;
} ${RELOCATING+ > text} } ${RELOCATING+ > text}

View file

@ -75,17 +75,17 @@ SECTIONS
.text : .text :
{ {
${RELOCATING+. = ALIGN(2);} ${RELOCATING+. = ALIGN(2);}
*(.init) *(SORT_NONE(.init))
*(.init0) /* Start here after reset. */ *(SORT_NONE(.init0)) /* Start here after reset. */
*(.init1) *(SORT_NONE(.init1))
*(.init2) *(SORT_NONE(.init2))
*(.init3) *(SORT_NONE(.init3))
*(.init4) *(SORT_NONE(.init4))
*(.init5) *(SORT_NONE(.init5))
*(.init6) /* C++ constructors. */ *(SORT_NONE(.init6)) /* C++ constructors. */
*(.init7) *(SORT_NONE(.init7))
*(.init8) *(SORT_NONE(.init8))
*(.init9) /* Call main(). */ *(SORT_NONE(.init9)) /* Call main(). */
${CONSTRUCTING+ __ctors_start = . ; } ${CONSTRUCTING+ __ctors_start = . ; }
${CONSTRUCTING+ *(.ctors) } ${CONSTRUCTING+ *(.ctors) }
@ -100,17 +100,17 @@ SECTIONS
*(.text.*) *(.text.*)
${RELOCATING+. = ALIGN(2);} ${RELOCATING+. = ALIGN(2);}
*(.fini9) *(SORT_NONE(.fini9))
*(.fini8) *(SORT_NONE(.fini8))
*(.fini7) *(SORT_NONE(.fini7))
*(.fini6) /* C++ destructors. */ *(SORT_NONE(.fini6)) /* C++ destructors. */
*(.fini5) *(SORT_NONE(.fini5))
*(.fini4) *(SORT_NONE(.fini4))
*(.fini3) *(SORT_NONE(.fini3))
*(.fini2) *(SORT_NONE(.fini2))
*(.fini1) *(SORT_NONE(.fini1))
*(.fini0) /* Infinite loop after program termination. */ *(SORT_NONE(.fini0)) /* Infinite loop after program termination. */
*(.fini) *(SORT_NONE(.fini))
${RELOCATING+ _etext = . ; } ${RELOCATING+ _etext = . ; }
} ${RELOCATING+ > text} } ${RELOCATING+ > text}

View file

@ -87,10 +87,10 @@ SECTIONS
.text ${RELOCATING+${TEXT_START_ADDR}} : .text ${RELOCATING+${TEXT_START_ADDR}} :
{ {
${RELOCATING+${TEXT_START_SYMBOLS}} ${RELOCATING+${TEXT_START_SYMBOLS}}
KEEP (*(.init)) KEEP (*(SORT_NONE(.init)))
KEEP (*(.init.*)) KEEP (*(SORT_NONE(.init.*)))
KEEP (*(.fini)) KEEP (*(SORT_NONE(.fini)))
KEEP (*(.fini.*)) KEEP (*(SORT_NONE(.fini.*)))
*(.text) *(.text)
*(.text.*) *(.text.*)
/* .gnu.warning sections are handled specially by elf32.em. */ /* .gnu.warning sections are handled specially by elf32.em. */

View file

@ -110,8 +110,8 @@ SECTIONS
{ {
*(.text) *(.text)
*(.gnu.linkonce.t*) *(.gnu.linkonce.t*)
*(.init) *(SORT_NONE(.init))
*(.fini) *(SORT_NONE(.fini))
${RELOCATING+ _etext = . ; } ${RELOCATING+ _etext = . ; }
} ${RELOCATING+ > ${TEXT_MEMORY}} } ${RELOCATING+ > ${TEXT_MEMORY}}

View file

@ -402,7 +402,7 @@ cat <<EOF
${RELOCATING+${INIT_START}} ${RELOCATING+${INIT_START}}
${RELOCATING+KEEP (*(.init.literal))} ${RELOCATING+KEEP (*(.init.literal))}
${RELOCATING+KEEP (*(.init))} ${RELOCATING+KEEP (*(SORT_NONE(.init)))}
${RELOCATING+${INIT_END}} ${RELOCATING+${INIT_END}}
${RELOCATING+${TEXT_START_SYMBOLS}} ${RELOCATING+${TEXT_START_SYMBOLS}}
@ -413,7 +413,7 @@ cat <<EOF
${RELOCATING+${FINI_START}} ${RELOCATING+${FINI_START}}
${RELOCATING+KEEP (*(.fini.literal))} ${RELOCATING+KEEP (*(.fini.literal))}
${RELOCATING+KEEP (*(.fini))} ${RELOCATING+KEEP (*(SORT_NONE(.fini)))}
${RELOCATING+${FINI_END}} ${RELOCATING+${FINI_END}}
} =${NOP-0} } =${NOP-0}