diff options
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elf32-nios2.c | 25 |
2 files changed, 20 insertions, 10 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 0fc016c..f961dae 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2014-04-10 Cesar Philippidis <cesar@codesourcery.com> + + * elf32-nios2.c (nios2_elf32_build_stubs): Ignore dynobjs + when building function stubs. + 2014-04-10 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> * elf32-avr.c: Add DIFF relocations for AVR. diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c index 3a44f1d..678f2e3 100644 --- a/bfd/elf32-nios2.c +++ b/bfd/elf32-nios2.c @@ -2013,16 +2013,21 @@ nios2_elf32_build_stubs (struct bfd_link_info *info) for (stub_sec = htab->stub_bfd->sections; stub_sec != NULL; stub_sec = stub_sec->next) - { - bfd_size_type size; - - /* Allocate memory to hold the linker stubs. */ - size = stub_sec->size; - stub_sec->contents = bfd_zalloc (htab->stub_bfd, size); - if (stub_sec->contents == NULL && size != 0) - return FALSE; - stub_sec->size = 0; - } + /* The stub_bfd may contain non-stub sections if it is also the + dynobj. Any such non-stub sections are created with the + SEC_LINKER_CREATED flag set, while stub sections do not + have that flag. Ignore any non-stub sections here. */ + if ((stub_sec->flags & SEC_LINKER_CREATED) == 0) + { + bfd_size_type size; + + /* Allocate memory to hold the linker stubs. */ + size = stub_sec->size; + stub_sec->contents = bfd_zalloc (htab->stub_bfd, size); + if (stub_sec->contents == NULL && size != 0) + return FALSE; + stub_sec->size = 0; + } /* Build the stubs as directed by the stub hash table. */ table = &htab->bstab; |