* elf-bfd.h (elf_backend_data): Remove use_rela_p. Add

may_use_rel_p, may_use_rela_p, default_use_rela_p.
	(bfd_elf_section_data): Add use_rela_p.
	* elf.c (bfd_section_from_shdr): Set use_rela_p appropriately.
	(_bfd_elf_new_section_hook): Likewise.
	(elf_fake_sections): Use may_use_rela_p, etc., instead of
	use_rela_p.
	(_bfd_elf_copy_private_section_data): Copy use_rela_p.
	* elfcode.h (write_relocs): Determine whether or not use rela
	relocs based on the relocation section header.
	* elflink.c (_bfd_elf_create_dynamic_sections): Use default_use_rela_p
	instead of use_rela_p.
	* elfxx-target.h (elf_backend_may_use_relp): New macro.
	(elf_backend_may_use_rela_p): Likewise.
	(elf_backend_default_use_rela_p): Likewise.
	(elfNN_bed): Use them.
This commit is contained in:
Mark Mitchell
1999-06-02 13:01:04 +00:00
parent 3fe702fddf
commit bf572ba0b9
6 changed files with 96 additions and 22 deletions

View File

@@ -729,7 +729,7 @@ write_relocs (abfd, sec, data)
Elf_External_Rela *outbound_relocas;
Elf_External_Rel *outbound_relocs;
unsigned int idx;
int use_rela_p = get_elf_backend_data (abfd)->use_rela_p;
int use_rela_p;
asymbol *last_sym = 0;
int last_sym_idx = 0;
@@ -757,6 +757,16 @@ write_relocs (abfd, sec, data)
return;
}
/* Figure out whether the relocations are RELA or REL relocations. */
if (rela_hdr->sh_type == SHT_RELA)
use_rela_p = true;
else if (rela_hdr->sh_type == SHT_REL)
use_rela_p = false;
else
/* Every relocation section should be either an SHT_RELA or an
SHT_REL section. */
abort ();
/* orelocation has the data, reloc_count has the count... */
if (use_rela_p)
{