diff options
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elflink.c | 10 |
2 files changed, 11 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index f4eec5c..d136f6c 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2007-05-04 H.J. Lu <hongjiu.lu@intel.com> + + * elflink.c (elf_link_sort_relocs): Return if both .rela.dyn + and .rel.dyn aren't present. + 2007-05-04 Nick Clifton <nickc@redhat.com> * elflink.c (elf_link_sort_relocs): If both .rela.dyn and .rel.dyn diff --git a/bfd/elflink.c b/bfd/elflink.c index 0e1dc6e..b58cfa6 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -7221,8 +7221,8 @@ static size_t elf_link_sort_relocs (bfd *abfd, struct bfd_link_info *info, asection **psec) { asection *dynamic_relocs; - asection * rela_dyn; - asection * rel_dyn; + asection *rela_dyn; + asection *rel_dyn; bfd_size_type count, size; size_t i, ret, sort_elt, ext_size; bfd_byte *sort, *s_non_relative, *p; @@ -7361,10 +7361,12 @@ elf_link_sort_relocs (bfd *abfd, struct bfd_link_info *info, asection **psec) /* Make a guess. */ use_rela = TRUE; } - else if (rela_dyn == NULL || rela_dyn->size == 0) + else if (rela_dyn != NULL && rela_dyn->size > 0) + use_rela = TRUE; + else if (rel_dyn != NULL && rel_dyn->size > 0) use_rela = FALSE; else - use_rela = TRUE; + return 0; if (use_rela) { |