From 41c7ba7cc251f99e099fb60e1868b951ea5a686f Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 18 Mar 2005 13:56:26 +0000 Subject: * ldlang.c (lang_insert_orphan): Use old section_tail rather than traversing the bfd section list to find pointer to new section. --- ld/ChangeLog | 5 +++++ ld/ldlang.c | 9 +++++---- 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'ld') 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 + + * 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 * 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); -- cgit v1.1