From: Ian Lance Taylor Date: Tue, 3 Aug 1999 16:40:25 +0000 (+0000) Subject: * elf32-ppc.c (ppc_elf_relocate_section): Don't use the relocation X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2d14625061ad9955fdd49aeb0ff47cd62d7bcdca;p=binutils-gdb.git * elf32-ppc.c (ppc_elf_relocate_section): Don't use the relocation value of a symbol in a SEC_DEBUGGING section. Warn when doing a relocation against a symbol in an input section with no output section. From Daniel Jacobowitz . --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index e17368aa806..487589aac29 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,10 @@ 1999-08-03 Ian Lance Taylor + * elf32-ppc.c (ppc_elf_relocate_section): Don't use the relocation + value of a symbol in a SEC_DEBUGGING section. Warn when doing a + relocation against a symbol in an input section with no output + section. From Daniel Jacobowitz . + * coff-stgo32.c (go32_stubbed_coff_object_p): Remove; not used. * acinclude.m4 (BFD_CC_FOR_BUILD): Change to use conftest, and to diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index 83689c2bed4..1de197b224c 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -3038,7 +3038,12 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section, && ((! info->symbolic && h->dynindx != -1) || (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0) - && (input_section->flags & SEC_ALLOC) != 0 + && ((input_section->flags & SEC_ALLOC) != 0 + /* Testing SEC_DEBUGGING here may be wrong. + It's here to avoid a crash when + generating a shared library with DWARF + debugging information. */ + || (input_section->flags & SEC_DEBUGGING) != 0) && (r_type == R_PPC_ADDR32 || r_type == R_PPC_ADDR24 || r_type == R_PPC_ADDR16 @@ -3081,6 +3086,14 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section, obscure cases sec->output_section will be NULL. */ relocation = 0; } + else if (sec->output_section == NULL) + { + (*_bfd_error_handler) + (_("%s: warning: unresolvable relocation against symbol `%s' from %s section"), + bfd_get_filename (input_bfd), h->root.root.string, + bfd_get_section_name (input_bfd, input_section)); + relocation = 0; + } else relocation = (h->root.u.def.value + sec->output_section->vma