Browse Source

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.
gdb_7_6-branch
H.J. Lu 14 years ago
parent
commit
b2e4da5a83
  1. 13
      ld/ChangeLog
  2. 4
      ld/ldlang.c
  3. 4
      ld/scripttempl/elf.sc
  4. 44
      ld/scripttempl/elf32msp430.sc
  5. 44
      ld/scripttempl/elf32msp430_3.sc
  6. 8
      ld/scripttempl/elfd10v.sc
  7. 4
      ld/scripttempl/elfd30v.sc
  8. 4
      ld/scripttempl/elfxtensa.sc

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.

4
ld/ldlang.c

@ -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;
}

4
ld/scripttempl/elf.sc

@ -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} = .);}

44
ld/scripttempl/elf32msp430.sc

@ -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}

44
ld/scripttempl/elf32msp430_3.sc

@ -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}

8
ld/scripttempl/elfd10v.sc

@ -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. */

4
ld/scripttempl/elfd30v.sc

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

4
ld/scripttempl/elfxtensa.sc

@ -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…
Cancel
Save