x86: Replace elf_x86_plt_layout_table with elf_x86_init_table
* elf32-i386.c (elf_i386_link_setup_gnu_properties): Replace elf_x86_plt_layout_table with elf_x86_init_table. * elf64-x86-64.c (elf_x86_64_link_setup_gnu_properties): Likewise. * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Likewise. * elfxx-x86.h (elf_x86_plt_layout_table): Renamed to ... (elf_x86_init_table): This. (_bfd_x86_elf_link_setup_gnu_properties): Replace elf_x86_plt_layout_table with elf_x86_init_table.
This commit is contained in:
parent
7a382c1c50
commit
1de031c80b
|
@ -1,3 +1,16 @@
|
||||||
|
2017-09-08 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* elf32-i386.c (elf_i386_link_setup_gnu_properties): Replace
|
||||||
|
elf_x86_plt_layout_table with elf_x86_init_table.
|
||||||
|
* elf64-x86-64.c (elf_x86_64_link_setup_gnu_properties):
|
||||||
|
Likewise.
|
||||||
|
* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties):
|
||||||
|
Likewise.
|
||||||
|
* elfxx-x86.h (elf_x86_plt_layout_table): Renamed to ...
|
||||||
|
(elf_x86_init_table): This.
|
||||||
|
(_bfd_x86_elf_link_setup_gnu_properties): Replace
|
||||||
|
elf_x86_plt_layout_table with elf_x86_init_table.
|
||||||
|
|
||||||
2017-09-07 H.J. Lu <hongjiu.lu@intel.com>
|
2017-09-07 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* configure.ac (bfd_backends): Don't add elf64-x86-64.lo nor
|
* configure.ac (bfd_backends): Don't add elf64-x86-64.lo nor
|
||||||
|
|
|
@ -4600,38 +4600,38 @@ elf_i386_get_synthetic_symtab (bfd *abfd,
|
||||||
static bfd *
|
static bfd *
|
||||||
elf_i386_link_setup_gnu_properties (struct bfd_link_info *info)
|
elf_i386_link_setup_gnu_properties (struct bfd_link_info *info)
|
||||||
{
|
{
|
||||||
struct elf_x86_plt_layout_table plt_layout;
|
struct elf_x86_init_table init_table;
|
||||||
|
|
||||||
plt_layout.normal_target = FALSE;
|
init_table.normal_target = FALSE;
|
||||||
plt_layout.is_vxworks = FALSE;
|
init_table.is_vxworks = FALSE;
|
||||||
switch (get_elf_i386_backend_data (info->output_bfd)->os)
|
switch (get_elf_i386_backend_data (info->output_bfd)->os)
|
||||||
{
|
{
|
||||||
case is_normal:
|
case is_normal:
|
||||||
plt_layout.lazy_plt = &elf_i386_lazy_plt;
|
init_table.lazy_plt = &elf_i386_lazy_plt;
|
||||||
plt_layout.non_lazy_plt = &elf_i386_non_lazy_plt;
|
init_table.non_lazy_plt = &elf_i386_non_lazy_plt;
|
||||||
plt_layout.lazy_ibt_plt = &elf_i386_lazy_ibt_plt;
|
init_table.lazy_ibt_plt = &elf_i386_lazy_ibt_plt;
|
||||||
plt_layout.non_lazy_ibt_plt = &elf_i386_non_lazy_ibt_plt;
|
init_table.non_lazy_ibt_plt = &elf_i386_non_lazy_ibt_plt;
|
||||||
plt_layout.normal_target = TRUE;
|
init_table.normal_target = TRUE;
|
||||||
break;
|
break;
|
||||||
case is_vxworks:
|
case is_vxworks:
|
||||||
plt_layout.lazy_plt = &elf_i386_lazy_plt;
|
init_table.lazy_plt = &elf_i386_lazy_plt;
|
||||||
plt_layout.non_lazy_plt = NULL;
|
init_table.non_lazy_plt = NULL;
|
||||||
plt_layout.lazy_ibt_plt = NULL;
|
init_table.lazy_ibt_plt = NULL;
|
||||||
plt_layout.non_lazy_ibt_plt = NULL;
|
init_table.non_lazy_ibt_plt = NULL;
|
||||||
plt_layout.is_vxworks = TRUE;
|
init_table.is_vxworks = TRUE;
|
||||||
break;
|
break;
|
||||||
case is_nacl:
|
case is_nacl:
|
||||||
plt_layout.lazy_plt = &elf_i386_nacl_plt;
|
init_table.lazy_plt = &elf_i386_nacl_plt;
|
||||||
plt_layout.non_lazy_plt = NULL;
|
init_table.non_lazy_plt = NULL;
|
||||||
plt_layout.lazy_ibt_plt = NULL;
|
init_table.lazy_ibt_plt = NULL;
|
||||||
plt_layout.non_lazy_ibt_plt = NULL;
|
init_table.non_lazy_ibt_plt = NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
plt_layout.r_info = elf32_r_info;
|
init_table.r_info = elf32_r_info;
|
||||||
plt_layout.r_sym = elf32_r_sym;
|
init_table.r_sym = elf32_r_sym;
|
||||||
|
|
||||||
return _bfd_x86_elf_link_setup_gnu_properties (info, &plt_layout);
|
return _bfd_x86_elf_link_setup_gnu_properties (info, &init_table);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define TARGET_LITTLE_SYM i386_elf32_vec
|
#define TARGET_LITTLE_SYM i386_elf32_vec
|
||||||
|
|
|
@ -5140,7 +5140,7 @@ elf_x86_64_relocs_compatible (const bfd_target *input,
|
||||||
static bfd *
|
static bfd *
|
||||||
elf_x86_64_link_setup_gnu_properties (struct bfd_link_info *info)
|
elf_x86_64_link_setup_gnu_properties (struct bfd_link_info *info)
|
||||||
{
|
{
|
||||||
struct elf_x86_plt_layout_table plt_layout;
|
struct elf_x86_init_table init_table;
|
||||||
|
|
||||||
if ((int) R_X86_64_standard >= (int) R_X86_64_converted_reloc_bit
|
if ((int) R_X86_64_standard >= (int) R_X86_64_converted_reloc_bit
|
||||||
|| (int) R_X86_64_max <= (int) R_X86_64_converted_reloc_bit
|
|| (int) R_X86_64_max <= (int) R_X86_64_converted_reloc_bit
|
||||||
|
@ -5150,53 +5150,53 @@ elf_x86_64_link_setup_gnu_properties (struct bfd_link_info *info)
|
||||||
!= (int) R_X86_64_GNU_VTENTRY))
|
!= (int) R_X86_64_GNU_VTENTRY))
|
||||||
abort ();
|
abort ();
|
||||||
|
|
||||||
plt_layout.is_vxworks = FALSE;
|
init_table.is_vxworks = FALSE;
|
||||||
if (get_elf_x86_64_backend_data (info->output_bfd)->os == is_normal)
|
if (get_elf_x86_64_backend_data (info->output_bfd)->os == is_normal)
|
||||||
{
|
{
|
||||||
if (info->bndplt)
|
if (info->bndplt)
|
||||||
{
|
{
|
||||||
plt_layout.lazy_plt = &elf_x86_64_lazy_bnd_plt;
|
init_table.lazy_plt = &elf_x86_64_lazy_bnd_plt;
|
||||||
plt_layout.non_lazy_plt = &elf_x86_64_non_lazy_bnd_plt;
|
init_table.non_lazy_plt = &elf_x86_64_non_lazy_bnd_plt;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
plt_layout.lazy_plt = &elf_x86_64_lazy_plt;
|
init_table.lazy_plt = &elf_x86_64_lazy_plt;
|
||||||
plt_layout.non_lazy_plt = &elf_x86_64_non_lazy_plt;
|
init_table.non_lazy_plt = &elf_x86_64_non_lazy_plt;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ABI_64_P (info->output_bfd))
|
if (ABI_64_P (info->output_bfd))
|
||||||
{
|
{
|
||||||
plt_layout.lazy_ibt_plt = &elf_x86_64_lazy_ibt_plt;
|
init_table.lazy_ibt_plt = &elf_x86_64_lazy_ibt_plt;
|
||||||
plt_layout.non_lazy_ibt_plt = &elf_x86_64_non_lazy_ibt_plt;
|
init_table.non_lazy_ibt_plt = &elf_x86_64_non_lazy_ibt_plt;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
plt_layout.lazy_ibt_plt = &elf_x32_lazy_ibt_plt;
|
init_table.lazy_ibt_plt = &elf_x32_lazy_ibt_plt;
|
||||||
plt_layout.non_lazy_ibt_plt = &elf_x32_non_lazy_ibt_plt;
|
init_table.non_lazy_ibt_plt = &elf_x32_non_lazy_ibt_plt;
|
||||||
}
|
}
|
||||||
plt_layout.normal_target = TRUE;
|
init_table.normal_target = TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
plt_layout.lazy_plt = &elf_x86_64_nacl_plt;
|
init_table.lazy_plt = &elf_x86_64_nacl_plt;
|
||||||
plt_layout.non_lazy_plt = NULL;
|
init_table.non_lazy_plt = NULL;
|
||||||
plt_layout.lazy_ibt_plt = NULL;
|
init_table.lazy_ibt_plt = NULL;
|
||||||
plt_layout.non_lazy_ibt_plt = NULL;
|
init_table.non_lazy_ibt_plt = NULL;
|
||||||
plt_layout.normal_target = FALSE;
|
init_table.normal_target = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ABI_64_P (info->output_bfd))
|
if (ABI_64_P (info->output_bfd))
|
||||||
{
|
{
|
||||||
plt_layout.r_info = elf64_r_info;
|
init_table.r_info = elf64_r_info;
|
||||||
plt_layout.r_sym = elf64_r_sym;
|
init_table.r_sym = elf64_r_sym;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
plt_layout.r_info = elf32_r_info;
|
init_table.r_info = elf32_r_info;
|
||||||
plt_layout.r_sym = elf32_r_sym;
|
init_table.r_sym = elf32_r_sym;
|
||||||
}
|
}
|
||||||
|
|
||||||
return _bfd_x86_elf_link_setup_gnu_properties (info, &plt_layout);
|
return _bfd_x86_elf_link_setup_gnu_properties (info, &init_table);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct bfd_elf_special_section
|
static const struct bfd_elf_special_section
|
||||||
|
|
|
@ -2106,8 +2106,7 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
|
||||||
|
|
||||||
bfd *
|
bfd *
|
||||||
_bfd_x86_elf_link_setup_gnu_properties
|
_bfd_x86_elf_link_setup_gnu_properties
|
||||||
(struct bfd_link_info *info,
|
(struct bfd_link_info *info, struct elf_x86_init_table *init_table)
|
||||||
struct elf_x86_plt_layout_table *plt_layout)
|
|
||||||
{
|
{
|
||||||
bfd_boolean normal_target;
|
bfd_boolean normal_target;
|
||||||
bfd_boolean lazy_plt;
|
bfd_boolean lazy_plt;
|
||||||
|
@ -2185,9 +2184,9 @@ error_alignment:
|
||||||
if (htab == NULL)
|
if (htab == NULL)
|
||||||
return pbfd;
|
return pbfd;
|
||||||
|
|
||||||
htab->is_vxworks = plt_layout->is_vxworks;
|
htab->is_vxworks = init_table->is_vxworks;
|
||||||
htab->r_info = plt_layout->r_info;
|
htab->r_info = init_table->r_info;
|
||||||
htab->r_sym = plt_layout->r_sym;
|
htab->r_sym = init_table->r_sym;
|
||||||
|
|
||||||
if (bfd_link_relocatable (info))
|
if (bfd_link_relocatable (info))
|
||||||
return pbfd;
|
return pbfd;
|
||||||
|
@ -2247,24 +2246,24 @@ error_alignment:
|
||||||
still be used with LD_AUDIT or LD_PROFILE if PLT entry is used for
|
still be used with LD_AUDIT or LD_PROFILE if PLT entry is used for
|
||||||
canonical function address. */
|
canonical function address. */
|
||||||
htab->plt.has_plt0 = 1;
|
htab->plt.has_plt0 = 1;
|
||||||
normal_target = plt_layout->normal_target;
|
normal_target = init_table->normal_target;
|
||||||
|
|
||||||
if (normal_target)
|
if (normal_target)
|
||||||
{
|
{
|
||||||
if (use_ibt_plt)
|
if (use_ibt_plt)
|
||||||
{
|
{
|
||||||
htab->lazy_plt = plt_layout->lazy_ibt_plt;
|
htab->lazy_plt = init_table->lazy_ibt_plt;
|
||||||
htab->non_lazy_plt = plt_layout->non_lazy_ibt_plt;
|
htab->non_lazy_plt = init_table->non_lazy_ibt_plt;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
htab->lazy_plt = plt_layout->lazy_plt;
|
htab->lazy_plt = init_table->lazy_plt;
|
||||||
htab->non_lazy_plt = plt_layout->non_lazy_plt;
|
htab->non_lazy_plt = init_table->non_lazy_plt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
htab->lazy_plt = plt_layout->lazy_plt;
|
htab->lazy_plt = init_table->lazy_plt;
|
||||||
htab->non_lazy_plt = NULL;
|
htab->non_lazy_plt = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -343,7 +343,7 @@ struct elf_x86_link_hash_table
|
||||||
const char *tls_get_addr;
|
const char *tls_get_addr;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct elf_x86_plt_layout_table
|
struct elf_x86_init_table
|
||||||
{
|
{
|
||||||
/* The lazy PLT layout. */
|
/* The lazy PLT layout. */
|
||||||
const struct elf_x86_lazy_plt_layout *lazy_plt;
|
const struct elf_x86_lazy_plt_layout *lazy_plt;
|
||||||
|
@ -491,7 +491,7 @@ extern bfd_boolean _bfd_x86_elf_merge_gnu_properties
|
||||||
(struct bfd_link_info *, bfd *, elf_property *, elf_property *);
|
(struct bfd_link_info *, bfd *, elf_property *, elf_property *);
|
||||||
|
|
||||||
extern bfd * _bfd_x86_elf_link_setup_gnu_properties
|
extern bfd * _bfd_x86_elf_link_setup_gnu_properties
|
||||||
(struct bfd_link_info *, struct elf_x86_plt_layout_table *);
|
(struct bfd_link_info *, struct elf_x86_init_table *);
|
||||||
|
|
||||||
#define bfd_elf64_mkobject \
|
#define bfd_elf64_mkobject \
|
||||||
_bfd_x86_elf_mkobject
|
_bfd_x86_elf_mkobject
|
||||||
|
|
Loading…
Reference in New Issue