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:
parent
488916061e
commit
b2e4da5a83
8 changed files with 70 additions and 55 deletions
13
ld/ChangeLog
13
ld/ChangeLog
|
@ -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>
|
||||
|
||||
* po/ld.pot: Updated template.
|
||||
|
|
|
@ -2462,7 +2462,9 @@ wild_sort (lang_wild_statement_type *wild,
|
|||
/* Here either the files are not sorted by name, or we are
|
||||
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)
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -462,7 +462,7 @@ cat <<EOF
|
|||
.init ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${INIT_START}}
|
||||
KEEP (*(.init))
|
||||
KEEP (*(SORT_NONE(.init)))
|
||||
${RELOCATING+${INIT_END}}
|
||||
} ${FILL}
|
||||
|
||||
|
@ -483,7 +483,7 @@ cat <<EOF
|
|||
.fini ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${FINI_START}}
|
||||
KEEP (*(.fini))
|
||||
KEEP (*(SORT_NONE(.fini)))
|
||||
${RELOCATING+${FINI_END}}
|
||||
} ${FILL}
|
||||
${RELOCATING+PROVIDE (__${ETEXT_NAME} = .);}
|
||||
|
|
|
@ -99,17 +99,17 @@ SECTIONS
|
|||
.text :
|
||||
{
|
||||
${RELOCATING+. = ALIGN(2);}
|
||||
*(.init)
|
||||
*(.init0) /* Start here after reset. */
|
||||
*(.init1)
|
||||
*(.init2) /* Copy data loop */
|
||||
*(.init3)
|
||||
*(.init4) /* Clear bss */
|
||||
*(.init5)
|
||||
*(.init6) /* C++ constructors. */
|
||||
*(.init7)
|
||||
*(.init8)
|
||||
*(.init9) /* Call main(). */
|
||||
*(SORT_NONE(.init))
|
||||
*(SORT_NONE(.init0)) /* Start here after reset. */
|
||||
*(SORT_NONE(.init1))
|
||||
*(SORT_NONE(.init2)) /* Copy data loop */
|
||||
*(SORT_NONE(.init3))
|
||||
*(SORT_NONE(.init4)) /* Clear bss */
|
||||
*(SORT_NONE(.init5))
|
||||
*(SORT_NONE(.init6)) /* C++ constructors. */
|
||||
*(SORT_NONE(.init7))
|
||||
*(SORT_NONE(.init8))
|
||||
*(SORT_NONE(.init9)) /* Call main(). */
|
||||
|
||||
${CONSTRUCTING+ __ctors_start = . ; }
|
||||
${CONSTRUCTING+ *(.ctors) }
|
||||
|
@ -124,17 +124,17 @@ SECTIONS
|
|||
*(.text.*)
|
||||
|
||||
${RELOCATING+. = ALIGN(2);}
|
||||
*(.fini9) /* */
|
||||
*(.fini8)
|
||||
*(.fini7)
|
||||
*(.fini6) /* C++ destructors. */
|
||||
*(.fini5)
|
||||
*(.fini4)
|
||||
*(.fini3)
|
||||
*(.fini2)
|
||||
*(.fini1)
|
||||
*(.fini0) /* Infinite loop after program termination. */
|
||||
*(.fini)
|
||||
*(SORT_NONE(.fini9))
|
||||
*(SORT_NONE(.fini8))
|
||||
*(SORT_NONE(.fini7))
|
||||
*(SORT_NONE(.fini6)) /* C++ destructors. */
|
||||
*(SORT_NONE(.fini5))
|
||||
*(SORT_NONE(.fini4))
|
||||
*(SORT_NONE(.fini3))
|
||||
*(SORT_NONE(.fini2))
|
||||
*(SORT_NONE(.fini1))
|
||||
*(SORT_NONE(.fini0)) /* Infinite loop after program termination. */
|
||||
*(SORT_NONE(.fini))
|
||||
|
||||
_etext = .;
|
||||
} ${RELOCATING+ > text}
|
||||
|
|
|
@ -75,17 +75,17 @@ SECTIONS
|
|||
.text :
|
||||
{
|
||||
${RELOCATING+. = ALIGN(2);}
|
||||
*(.init)
|
||||
*(.init0) /* Start here after reset. */
|
||||
*(.init1)
|
||||
*(.init2)
|
||||
*(.init3)
|
||||
*(.init4)
|
||||
*(.init5)
|
||||
*(.init6) /* C++ constructors. */
|
||||
*(.init7)
|
||||
*(.init8)
|
||||
*(.init9) /* Call main(). */
|
||||
*(SORT_NONE(.init))
|
||||
*(SORT_NONE(.init0)) /* Start here after reset. */
|
||||
*(SORT_NONE(.init1))
|
||||
*(SORT_NONE(.init2))
|
||||
*(SORT_NONE(.init3))
|
||||
*(SORT_NONE(.init4))
|
||||
*(SORT_NONE(.init5))
|
||||
*(SORT_NONE(.init6)) /* C++ constructors. */
|
||||
*(SORT_NONE(.init7))
|
||||
*(SORT_NONE(.init8))
|
||||
*(SORT_NONE(.init9)) /* Call main(). */
|
||||
|
||||
${CONSTRUCTING+ __ctors_start = . ; }
|
||||
${CONSTRUCTING+ *(.ctors) }
|
||||
|
@ -100,17 +100,17 @@ SECTIONS
|
|||
*(.text.*)
|
||||
|
||||
${RELOCATING+. = ALIGN(2);}
|
||||
*(.fini9)
|
||||
*(.fini8)
|
||||
*(.fini7)
|
||||
*(.fini6) /* C++ destructors. */
|
||||
*(.fini5)
|
||||
*(.fini4)
|
||||
*(.fini3)
|
||||
*(.fini2)
|
||||
*(.fini1)
|
||||
*(.fini0) /* Infinite loop after program termination. */
|
||||
*(.fini)
|
||||
*(SORT_NONE(.fini9))
|
||||
*(SORT_NONE(.fini8))
|
||||
*(SORT_NONE(.fini7))
|
||||
*(SORT_NONE(.fini6)) /* C++ destructors. */
|
||||
*(SORT_NONE(.fini5))
|
||||
*(SORT_NONE(.fini4))
|
||||
*(SORT_NONE(.fini3))
|
||||
*(SORT_NONE(.fini2))
|
||||
*(SORT_NONE(.fini1))
|
||||
*(SORT_NONE(.fini0)) /* Infinite loop after program termination. */
|
||||
*(SORT_NONE(.fini))
|
||||
|
||||
${RELOCATING+ _etext = . ; }
|
||||
} ${RELOCATING+ > text}
|
||||
|
|
|
@ -87,10 +87,10 @@ SECTIONS
|
|||
.text ${RELOCATING+${TEXT_START_ADDR}} :
|
||||
{
|
||||
${RELOCATING+${TEXT_START_SYMBOLS}}
|
||||
KEEP (*(.init))
|
||||
KEEP (*(.init.*))
|
||||
KEEP (*(.fini))
|
||||
KEEP (*(.fini.*))
|
||||
KEEP (*(SORT_NONE(.init)))
|
||||
KEEP (*(SORT_NONE(.init.*)))
|
||||
KEEP (*(SORT_NONE(.fini)))
|
||||
KEEP (*(SORT_NONE(.fini.*)))
|
||||
*(.text)
|
||||
*(.text.*)
|
||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
||||
|
|
|
@ -110,8 +110,8 @@ SECTIONS
|
|||
{
|
||||
*(.text)
|
||||
*(.gnu.linkonce.t*)
|
||||
*(.init)
|
||||
*(.fini)
|
||||
*(SORT_NONE(.init))
|
||||
*(SORT_NONE(.fini))
|
||||
${RELOCATING+ _etext = . ; }
|
||||
} ${RELOCATING+ > ${TEXT_MEMORY}}
|
||||
|
||||
|
|
|
@ -402,7 +402,7 @@ cat <<EOF
|
|||
|
||||
${RELOCATING+${INIT_START}}
|
||||
${RELOCATING+KEEP (*(.init.literal))}
|
||||
${RELOCATING+KEEP (*(.init))}
|
||||
${RELOCATING+KEEP (*(SORT_NONE(.init)))}
|
||||
${RELOCATING+${INIT_END}}
|
||||
|
||||
${RELOCATING+${TEXT_START_SYMBOLS}}
|
||||
|
@ -413,7 +413,7 @@ cat <<EOF
|
|||
|
||||
${RELOCATING+${FINI_START}}
|
||||
${RELOCATING+KEEP (*(.fini.literal))}
|
||||
${RELOCATING+KEEP (*(.fini))}
|
||||
${RELOCATING+KEEP (*(SORT_NONE(.fini)))}
|
||||
${RELOCATING+${FINI_END}}
|
||||
} =${NOP-0}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue