diff options
author | Mark Shinwell <shinwell@codesourcery.com> | 2006-06-21 13:25:54 +0000 |
---|---|---|
committer | Mark Shinwell <shinwell@codesourcery.com> | 2006-06-21 13:25:54 +0000 |
commit | 5e542ba70e7c0b145ed83ed34f2b3efbe9e08656 (patch) | |
tree | 560f59a79ab3f77c3f846497a428404ea77a150c /ld/ldlang.c | |
parent | 42b575e54591594e33810221501585722eb80623 (diff) | |
download | gdb-5e542ba70e7c0b145ed83ed34f2b3efbe9e08656.zip gdb-5e542ba70e7c0b145ed83ed34f2b3efbe9e08656.tar.gz gdb-5e542ba70e7c0b145ed83ed34f2b3efbe9e08656.tar.bz2 |
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.
Diffstat (limited to 'ld/ldlang.c')
-rw-r--r-- | ld/ldlang.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/ld/ldlang.c b/ld/ldlang.c index cc08726..9e307f8 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); |