diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2012-08-01 01:03:47 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2012-08-01 01:03:47 +0000 |
commit | b2e4da5a836b3d5246dc2fa183e18c1f63232490 (patch) | |
tree | 7494febf76283b2d95c98e8c8d182da3b95df21e /ld | |
parent | 488916061e57e6b83b8229475789a78b8f7b5fb1 (diff) | |
download | gdb-b2e4da5a836b3d5246dc2fa183e18c1f63232490.zip gdb-b2e4da5a836b3d5246dc2fa183e18c1f63232490.tar.gz gdb-b2e4da5a836b3d5246dc2fa183e18c1f63232490.tar.bz2 |
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.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 13 | ||||
-rw-r--r-- | ld/ldlang.c | 4 | ||||
-rw-r--r-- | ld/scripttempl/elf.sc | 4 | ||||
-rw-r--r-- | ld/scripttempl/elf32msp430.sc | 44 | ||||
-rw-r--r-- | ld/scripttempl/elf32msp430_3.sc | 44 | ||||
-rw-r--r-- | ld/scripttempl/elfd10v.sc | 8 | ||||
-rw-r--r-- | ld/scripttempl/elfd30v.sc | 4 | ||||
-rw-r--r-- | ld/scripttempl/elfxtensa.sc | 4 |
8 files changed, 70 insertions, 55 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index e0cc987..91e2b83 100644 --- a/ld/ChangeLog +++ b/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. diff --git a/ld/ldlang.c b/ld/ldlang.c index 5a4eef7..5327e12 100644 --- a/ld/ldlang.c +++ b/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; } diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc index 17c2cf1..51a655e 100644 --- a/ld/scripttempl/elf.sc +++ b/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} = .);} diff --git a/ld/scripttempl/elf32msp430.sc b/ld/scripttempl/elf32msp430.sc index 5098c17..beabd89 100644 --- a/ld/scripttempl/elf32msp430.sc +++ b/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} diff --git a/ld/scripttempl/elf32msp430_3.sc b/ld/scripttempl/elf32msp430_3.sc index c730c5d..0ddcf0f 100644 --- a/ld/scripttempl/elf32msp430_3.sc +++ b/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} diff --git a/ld/scripttempl/elfd10v.sc b/ld/scripttempl/elfd10v.sc index 1cdfbdc..dc45cdd 100644 --- a/ld/scripttempl/elfd10v.sc +++ b/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. */ diff --git a/ld/scripttempl/elfd30v.sc b/ld/scripttempl/elfd30v.sc index d8d3fbe..df64f1b 100644 --- a/ld/scripttempl/elfd30v.sc +++ b/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}} diff --git a/ld/scripttempl/elfxtensa.sc b/ld/scripttempl/elfxtensa.sc index d330230..5e03797 100644 --- a/ld/scripttempl/elfxtensa.sc +++ b/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} |