From: Mark Shinwell Date: Wed, 21 Jun 2006 13:25:54 +0000 (+0000) Subject: Fix for segmentation fault. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5e542ba70e7c0b145ed83ed34f2b3efbe9e08656;p=binutils-gdb.git Fix for segmentation fault. * ldlang.c (lang_insert_orphan): Correctly handle the case where the section is to end up after the section currently at the end of the list in output_bfd. --- diff --git a/ld/ChangeLog b/ld/ChangeLog index 836a73b1c64..684d34f5c5a 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2006-06-21 Mark Shinwell + + * ldlang.c (lang_insert_orphan): Correctly handle the case where + the section is to end up after the section currently at the end + of the list in output_bfd. + 2006-06-21 Hans-Peter Nilsson * emultempl/mmo.em: Improve comments. Explain why there's diff --git a/ld/ldlang.c b/ld/ldlang.c index cc08726ba9b..9e307f8f099 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -1445,7 +1445,18 @@ lang_insert_orphan (asection *s, place->section = &output_bfd->sections; as = *place->section; - if (as != snew && as->prev != snew) + + if (!as) + { + /* Put the section at the end of the list. */ + + /* Unlink the section. */ + bfd_section_list_remove (output_bfd, snew); + + /* Now tack it back on in the right place. */ + bfd_section_list_append (output_bfd, snew); + } + else if (as != snew && as->prev != snew) { /* Unlink the section. */ bfd_section_list_remove (output_bfd, snew);