From 1182cb939773001f430e98baf146340e27f98f59 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 7 May 2007 14:47:28 +0000 Subject: [PATCH] * elflink.c (bfd_elf_final_link): Correct reloc handling for elf_backend_count_relocs. (bfd_elf_discard_info): Print an error if we can't read syms. --- bfd/ChangeLog | 6 ++++++ bfd/elflink.c | 18 +++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index c14b55d69c0..4b7c79e7e02 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2007-05-07 Alan Modra + + * elflink.c (bfd_elf_final_link): Correct reloc handling for + elf_backend_count_relocs. + (bfd_elf_discard_info): Print an error if we can't read syms. + 2007-05-07 Alan Modra * elf32-spu.c (spu_elf_reloc_type_lookup): Return NULL on diff --git a/bfd/elflink.c b/bfd/elflink.c index b58cfa6485c..e64819e3814 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -9312,13 +9312,18 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) { Elf_Internal_Rela * relocs; - relocs = _bfd_elf_link_read_relocs (abfd, sec, NULL, NULL, + relocs = _bfd_elf_link_read_relocs (sec->owner, sec, + NULL, NULL, info->keep_memory); - reloc_count = (*bed->elf_backend_count_relocs) (sec, relocs); + if (relocs != NULL) + { + reloc_count + = (*bed->elf_backend_count_relocs) (sec, relocs); - if (elf_section_data (o)->relocs != relocs) - free (relocs); + if (elf_section_data (sec)->relocs != relocs) + free (relocs); + } } if (sec->rawsize > max_contents_size) @@ -11147,7 +11152,10 @@ bfd_elf_discard_info (bfd *output_bfd, struct bfd_link_info *info) cookie.locsymcount, 0, NULL, NULL, NULL); if (cookie.locsyms == NULL) - return FALSE; + { + info->callbacks->einfo (_("%P%X: can not read symbols: %E\n")); + return FALSE; + } } if (stab != NULL) -- 2.30.2