diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2012-07-10 06:50:57 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2012-07-10 06:50:57 +0000 |
commit | eda680f805f57e7acae71350b98c9cfabbda9a58 (patch) | |
tree | 5198a27a8a5b8a09404620bca38bca5d7f01772c /ld/ldlang.c | |
parent | bc9ad2e430bc419d4e37555d5d70bb6bb4fac341 (diff) | |
download | gdb-eda680f805f57e7acae71350b98c9cfabbda9a58.zip gdb-eda680f805f57e7acae71350b98c9cfabbda9a58.tar.gz gdb-eda680f805f57e7acae71350b98c9cfabbda9a58.tar.bz2 |
Add SORT_NONE and don't sort sort .init/.fini sections
ld/
PR ld/14156
* NEWS: Mention SORT_NONE.
* ld.h (sort_type): Add by_none.
* ld.texinfo: Document SORT_NONE.
* ldgram.y: Handle SORT_NONE.
* ldlang.c (update_wild_statements): Handle by_none. Don't
sort .init/.fini sections.
* ldlex.l: Add SORT_NONE.
ld/testsuite/
PR ld/14156
* ld-elf/fini0.s: New file.
* ld-elf/fini1.s: Likewise.
* ld-elf/fini2.s: Likewise.
* ld-elf/fini3.s: Likewise.
* ld-elf/finin.s: Likewise.
* ld-elf/foo0.s: Likewise.
* ld-elf/foo1.s: Likewise.
* ld-elf/foo2.s: Likewise.
* ld-elf/foo3.s: Likewise.
* ld-elf/foon.s: Likewise.
* ld-elf/init0.s: Likewise.
* ld-elf/init1.s: Likewise.
* ld-elf/init2.s: Likewise.
* ld-elf/init3.s: Likewise.
* ld-elf/initn.s: Likewise.
* ld-elf/pr14156a.d: Likewise.
* ld-elf/pr14156b.d: Likewise.
* ld-elf/pr14156c.d: Likewise.
* ld-elf/pr14156c.t: Likewise.
Diffstat (limited to 'ld/ldlang.c')
-rw-r--r-- | ld/ldlang.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/ld/ldlang.c b/ld/ldlang.c index e94d261..317e445 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -3510,6 +3510,8 @@ update_wild_statements (lang_statement_union_type *s) if (sort_section == by_name) sec->spec.sorted = by_alignment_name; break; + case by_none: + sec->spec.sorted = none; default: break; } @@ -3521,8 +3523,11 @@ update_wild_statements (lang_statement_union_type *s) break; case lang_output_section_statement_enum: - update_wild_statements - (s->output_section_statement.children.head); + /* Don't sort .init/.fini sections. */ + if (strcmp (s->output_section_statement.name, ".init") != 0 + && strcmp (s->output_section_statement.name, ".fini") != 0) + update_wild_statements + (s->output_section_statement.children.head); break; case lang_group_statement_enum: |