mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-26 11:33:45 +08:00
Display signed hex number in x32 addend overflow check
bfd/ * elf64-x86-64.c (elf_x86_64_relocate_section): Display signed hex number in x32 addend overflow check. gas/ * config/tc-i386.c (tc_gen_reloc): Display signed hex number in x32 addend overflow check. ld/testsuite/ * ld-x86-64/ilp32-11.d: Updated.
This commit is contained in:
parent
95554aad6c
commit
6f2c9068ed
@ -1,3 +1,8 @@
|
||||
2012-05-10 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf64-x86-64.c (elf_x86_64_relocate_section): Display signed
|
||||
hex number in x32 addend overflow check.
|
||||
|
||||
2012-05-10 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf64-x86-64.c (elf_x86_64_reloc_type_class): Handle
|
||||
|
@ -3686,19 +3686,28 @@ elf_x86_64_relocate_section (bfd *output_bfd,
|
||||
!= (rel->r_addend & 0x80000000))
|
||||
{
|
||||
const char *name;
|
||||
long addend = rel->r_addend;
|
||||
if (h && h->root.root.string)
|
||||
name = h->root.root.string;
|
||||
else
|
||||
name = bfd_elf_sym_name (input_bfd, symtab_hdr,
|
||||
sym, NULL);
|
||||
(*_bfd_error_handler)
|
||||
(_("%B: addend %ld in relocation %s against "
|
||||
"symbol `%s' at 0x%lx in section `%A' is "
|
||||
"out of range"),
|
||||
input_bfd, input_section,
|
||||
(long) rel->r_addend,
|
||||
x86_64_elf_howto_table[r_type].name,
|
||||
name, (unsigned long) rel->r_offset);
|
||||
if (addend < 0)
|
||||
(*_bfd_error_handler)
|
||||
(_("%B: addend -0x%lx in relocation %s against "
|
||||
"symbol `%s' at 0x%lx in section `%A' is "
|
||||
"out of range"),
|
||||
input_bfd, input_section, addend,
|
||||
x86_64_elf_howto_table[r_type].name,
|
||||
name, (unsigned long) rel->r_offset);
|
||||
else
|
||||
(*_bfd_error_handler)
|
||||
(_("%B: addend 0x%lx in relocation %s against "
|
||||
"symbol `%s' at 0x%lx in section `%A' is "
|
||||
"out of range"),
|
||||
input_bfd, input_section, addend,
|
||||
x86_64_elf_howto_table[r_type].name,
|
||||
name, (unsigned long) rel->r_offset);
|
||||
bfd_set_error (bfd_error_bad_value);
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
2012-05-10 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* config/tc-i386.c (tc_gen_reloc): Display signed hex number in
|
||||
x32 addend overflow check.
|
||||
|
||||
2012-05-09 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* config/tc-i386.c (tc_gen_reloc): Use fits_in_signed_long.
|
||||
|
@ -9177,10 +9177,17 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
|
||||
/* Check addend overflow. */
|
||||
if (!fits_in_signed_long (fixp->fx_offset))
|
||||
{
|
||||
as_bad_where (fixp->fx_file, fixp->fx_line,
|
||||
_("cannot represent relocation %s with addend %lld in x32 mode"),
|
||||
bfd_get_reloc_code_name (code),
|
||||
(long long) fixp->fx_offset);
|
||||
long long addend = fixp->fx_offset;
|
||||
if (addend < 0)
|
||||
as_bad_where (fixp->fx_file, fixp->fx_line,
|
||||
_("cannot represent relocation %s with "
|
||||
"addend -0x%llx in x32 mode"),
|
||||
bfd_get_reloc_code_name (code), -addend);
|
||||
else
|
||||
as_bad_where (fixp->fx_file, fixp->fx_line,
|
||||
_("cannot represent relocation %s with "
|
||||
"addend 0x%llx in x32 mode"),
|
||||
bfd_get_reloc_code_name (code), addend);
|
||||
}
|
||||
break;
|
||||
case BFD_RELOC_X86_64_DTPOFF64:
|
||||
|
@ -1,3 +1,7 @@
|
||||
2012-05-10 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* ld-x86-64/ilp32-11.d: Updated.
|
||||
|
||||
2012-05-10 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* ld-x86-64/pr13082-1a.d: Check RELACOUNT.
|
||||
|
@ -1,3 +1,3 @@
|
||||
#as: --x32
|
||||
#ld: -shared -melf32_x86_64
|
||||
#error: .*addend 2147483647 in relocation R_X86_64_64 against symbol `.text' at 0x0 in section `.data.rel.local' is out of range
|
||||
#error: .*addend 0x7fffffff in relocation R_X86_64_64 against symbol `.text' at 0x0 in section `.data.rel.local' is out of range
|
||||
|
Loading…
Reference in New Issue
Block a user