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>
|
2012-07-30 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* po/ld.pot: Updated template.
|
* 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
|
/* 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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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} = .);}
|
||||||
|
|
|
@ -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}
|
||||||
|
|
|
@ -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}
|
||||||
|
|
|
@ -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. */
|
||||||
|
|
|
@ -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}}
|
||||||
|
|
||||||
|
|
|
@ -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}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue