* elf32-i386.c (elf_i386_relocate_section): When generating a

shared library, do the relocation if the input section is not
	allocated in memory.
This commit is contained in:
Ian Lance Taylor 1997-06-16 19:24:23 +00:00
parent 000befdfb4
commit 90d7b9b9dd
2 changed files with 14 additions and 3 deletions

View file

@ -12,6 +12,10 @@ Mon Jun 16 14:42:14 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
Mon Jun 16 12:31:29 1997 Ian Lance Taylor <ian@cygnus.com> Mon Jun 16 12:31:29 1997 Ian Lance Taylor <ian@cygnus.com>
* elf32-i386.c (elf_i386_relocate_section): When generating a
shared library, do the relocation if the input section is not
allocated in memory.
* elflink.h (NAME(bfd_elf,size_dynamic_sections)): Call * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Call
elf_link_assign_sym_version before elf_adjust_dynamic_symbol. elf_link_assign_sym_version before elf_adjust_dynamic_symbol.
(elf_fix_symbol_flags): New static function, broken out of (elf_fix_symbol_flags): New static function, broken out of

View file

@ -1187,7 +1187,8 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
|| (h->elf_link_hash_flags || (h->elf_link_hash_flags
& ELF_LINK_HASH_DEF_REGULAR) == 0) & ELF_LINK_HASH_DEF_REGULAR) == 0)
&& (r_type == R_386_32 && (r_type == R_386_32
|| r_type == R_386_PC32))) || r_type == R_386_PC32)
&& (input_section->flags & SEC_ALLOC) != 0))
{ {
/* In these cases, we don't need the relocation /* In these cases, we don't need the relocation
value. We check specially because in some value. We check specially because in some
@ -1439,7 +1440,10 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
else if (r_type == R_386_PC32) else if (r_type == R_386_PC32)
{ {
BFD_ASSERT (h != NULL && h->dynindx != -1); BFD_ASSERT (h != NULL && h->dynindx != -1);
if ((input_section->flags & SEC_ALLOC) != 0)
relocate = false; relocate = false;
else
relocate = true;
outrel.r_info = ELF32_R_INFO (h->dynindx, R_386_PC32); outrel.r_info = ELF32_R_INFO (h->dynindx, R_386_PC32);
} }
else else
@ -1457,7 +1461,10 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
else else
{ {
BFD_ASSERT (h->dynindx != -1); BFD_ASSERT (h->dynindx != -1);
if ((input_section->flags & SEC_ALLOC) != 0)
relocate = false; relocate = false;
else
relocate = true;
outrel.r_info = ELF32_R_INFO (h->dynindx, R_386_32); outrel.r_info = ELF32_R_INFO (h->dynindx, R_386_32);
} }
} }