mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-03-01 13:26:47 +08:00
bfd/
* elf-bfd.h (elf_backend_data): Add a "rela_plts_and_copies_p" field. * elfxx-target.h (elf_backend_rela_plts_and_copies_p): New macro. (elfNN_bed): Use it. * elf.c (_bfd_elf_get_synthetic_symtab): Use rela_plts_and_copies_p instead of default_use_rela_p to choose between ".rel.plt" and ".rela.plt". * elflink.c (_bfd_elf_create_dynamic_sections): Use rela_plts_and_copies_p instead of default_use_rela_p to choose between ".rel.plt" and ".rela.plt", and between ".rel.bss" and ".rela.bss".
This commit is contained in:
parent
d5eaccd71d
commit
d35fd65983
@ -1,3 +1,16 @@
|
||||
2008-08-07 Richard Sandiford <rdsandiford@googlemail.com>
|
||||
|
||||
* elf-bfd.h (elf_backend_data): Add a "rela_plts_and_copies_p" field.
|
||||
* elfxx-target.h (elf_backend_rela_plts_and_copies_p): New macro.
|
||||
(elfNN_bed): Use it.
|
||||
* elf.c (_bfd_elf_get_synthetic_symtab): Use rela_plts_and_copies_p
|
||||
instead of default_use_rela_p to choose between ".rel.plt" and
|
||||
".rela.plt".
|
||||
* elflink.c (_bfd_elf_create_dynamic_sections): Use
|
||||
rela_plts_and_copies_p instead of default_use_rela_p to choose
|
||||
between ".rel.plt" and ".rela.plt", and between ".rel.bss" and
|
||||
".rela.bss".
|
||||
|
||||
2008-08-07 Richard Sandiford <rdsandiford@googlemail.com>
|
||||
|
||||
* elf-bfd.h (MIPS_ELF_TDATA): New elf_object_id.
|
||||
|
@ -1189,6 +1189,9 @@ struct elf_backend_data
|
||||
section. */
|
||||
unsigned default_use_rela_p : 1;
|
||||
|
||||
/* True if PLT and copy relocations should be RELA by default. */
|
||||
unsigned rela_plts_and_copies_p : 1;
|
||||
|
||||
/* Set if RELA relocations for a relocatable link can be handled by
|
||||
generic code. Backends that set this flag need do nothing in the
|
||||
backend relocate_section routine for relocatable linking. */
|
||||
|
@ -8809,7 +8809,7 @@ _bfd_elf_get_synthetic_symtab (bfd *abfd,
|
||||
|
||||
relplt_name = bed->relplt_name;
|
||||
if (relplt_name == NULL)
|
||||
relplt_name = bed->default_use_rela_p ? ".rela.plt" : ".rel.plt";
|
||||
relplt_name = bed->rela_plts_and_copies_p ? ".rela.plt" : ".rel.plt";
|
||||
relplt = bfd_get_section_by_name (abfd, relplt_name);
|
||||
if (relplt == NULL)
|
||||
return 0;
|
||||
|
@ -309,7 +309,7 @@ _bfd_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
}
|
||||
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
(bed->rela_plts_and_copies_p
|
||||
? ".rela.plt" : ".rel.plt"),
|
||||
flags | SEC_READONLY);
|
||||
if (s == NULL
|
||||
@ -347,7 +347,7 @@ _bfd_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
if (! info->shared)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
(bed->rela_plts_and_copies_p
|
||||
? ".rela.bss" : ".rel.bss"),
|
||||
flags | SEC_READONLY);
|
||||
if (s == NULL
|
||||
|
@ -555,6 +555,9 @@
|
||||
#ifndef elf_backend_default_use_rela_p
|
||||
#define elf_backend_default_use_rela_p !USE_REL
|
||||
#endif
|
||||
#ifndef elf_backend_rela_plts_and_copies_p
|
||||
#define elf_backend_rela_plts_and_copies_p elf_backend_default_use_rela_p
|
||||
#endif
|
||||
|
||||
#ifndef elf_backend_rela_normal
|
||||
#define elf_backend_rela_normal 0
|
||||
@ -718,6 +721,7 @@ static struct elf_backend_data elfNN_bed =
|
||||
elf_backend_may_use_rel_p,
|
||||
elf_backend_may_use_rela_p,
|
||||
elf_backend_default_use_rela_p,
|
||||
elf_backend_rela_plts_and_copies_p,
|
||||
elf_backend_rela_normal,
|
||||
elf_backend_sign_extend_vma,
|
||||
elf_backend_want_got_plt,
|
||||
|
Loading…
Reference in New Issue
Block a user