diff options
author | Alan Modra <amodra@gmail.com> | 2005-03-18 13:56:26 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2005-03-18 13:56:26 +0000 |
commit | 41c7ba7cc251f99e099fb60e1868b951ea5a686f (patch) | |
tree | 183e7d5775c3f00f09d8d434bcb1b523c89fef28 /ld | |
parent | 554220db5bd1b44f1ad9e1de6888f145c25ba829 (diff) | |
download | fsf-binutils-gdb-41c7ba7cc251f99e099fb60e1868b951ea5a686f.zip fsf-binutils-gdb-41c7ba7cc251f99e099fb60e1868b951ea5a686f.tar.gz fsf-binutils-gdb-41c7ba7cc251f99e099fb60e1868b951ea5a686f.tar.bz2 |
* ldlang.c (lang_insert_orphan): Use old section_tail rather than
traversing the bfd section list to find pointer to new section.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 5 | ||||
-rw-r--r-- | ld/ldlang.c | 9 |
2 files changed, 10 insertions, 4 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index e1a1253..dce7055 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2005-03-19 Alan Modra <amodra@bigpond.net.au> + + * ldlang.c (lang_insert_orphan): Use old section_tail rather than + traversing the bfd section list to find pointer to new section. + 2005-03-18 Alan Modra <amodra@bigpond.net.au> * scripttempl/elf.sc: When CREATE_SHLIB, put .sdata2 and .sbss2 diff --git a/ld/ldlang.c b/ld/ldlang.c index dc805a3..3c4e9ac 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -818,6 +818,7 @@ lang_insert_orphan (lang_input_statement_type *file, etree_type *load_base; lang_output_section_statement_type *os; lang_output_section_statement_type **os_tail; + asection **bfd_tail; /* Start building a list of statements for this section. First save the current statement pointer. */ @@ -871,6 +872,7 @@ lang_insert_orphan (lang_input_statement_type *file, os_tail = ((lang_output_section_statement_type **) lang_output_section_statement.tail); + bfd_tail = output_bfd->section_tail; os = lang_enter_output_section_statement (secname, address, 0, NULL, NULL, load_base, 0); @@ -902,7 +904,7 @@ lang_insert_orphan (lang_input_statement_type *file, if (after != NULL && os->bfd_section != NULL) { - asection *snew, **pps; + asection *snew; snew = os->bfd_section; @@ -929,9 +931,8 @@ lang_insert_orphan (lang_input_statement_type *file, place->section = &output_bfd->sections; /* Unlink the section. */ - for (pps = &output_bfd->sections; *pps != snew; pps = &(*pps)->next) - continue; - bfd_section_list_remove (output_bfd, pps); + ASSERT (*bfd_tail == snew); + bfd_section_list_remove (output_bfd, bfd_tail); /* Now tack it back on in the right place. */ bfd_section_list_insert (output_bfd, place->section, snew); |