Check invalid x32 relocations.
2011-01-15 H.J. Lu <hongjiu.lu@intel.com> * elf64-x86-64.c (elf_x86_64_check_relocs): Check invalid x32 relocations.
This commit is contained in:
parent
7f56bc95d6
commit
d1534d1688
2 changed files with 38 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2011-01-15 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf64-x86-64.c (elf_x86_64_check_relocs): Check invalid x32
|
||||
relocations.
|
||||
|
||||
2011-01-14 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf64-x86-64.c (elf_x86_64_link_hash_table): Add pointer_r_type.
|
||||
|
|
|
@ -1179,6 +1179,39 @@ elf_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
|||
h = (struct elf_link_hash_entry *) h->root.u.i.link;
|
||||
}
|
||||
|
||||
/* Check invalid x32 relocations. */
|
||||
if (!ABI_64_P (abfd))
|
||||
switch (r_type)
|
||||
{
|
||||
default:
|
||||
break;
|
||||
|
||||
case R_X86_64_64:
|
||||
case R_X86_64_DTPOFF64:
|
||||
case R_X86_64_TPOFF64:
|
||||
case R_X86_64_PC64:
|
||||
case R_X86_64_GOTOFF64:
|
||||
case R_X86_64_GOT64:
|
||||
case R_X86_64_GOTPCREL64:
|
||||
case R_X86_64_GOTPC64:
|
||||
case R_X86_64_GOTPLT64:
|
||||
case R_X86_64_PLTOFF64:
|
||||
{
|
||||
if (h)
|
||||
name = h->root.root.string;
|
||||
else
|
||||
name = bfd_elf_sym_name (abfd, symtab_hdr, isym,
|
||||
NULL);
|
||||
(*_bfd_error_handler)
|
||||
(_("%B: relocation %s against symbol `%s' isn't "
|
||||
"supported in x32 mode"), abfd,
|
||||
x86_64_elf_howto_table[r_type].name, name);
|
||||
bfd_set_error (bfd_error_bad_value);
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (h != NULL)
|
||||
{
|
||||
/* Create the ifunc sections for static executables. If we
|
||||
|
|
Loading…
Add table
Reference in a new issue