svn commit: r324511 - head/contrib/binutils/bfd
Justin Hibbits
jhibbits at FreeBSD.org
Wed Oct 11 02:39:21 UTC 2017
Author: jhibbits
Date: Wed Oct 11 02:39:20 2017
New Revision: 324511
URL: https://svnweb.freebsd.org/changeset/base/324511
Log:
Do exception offset computations in 64 bits, not 32.
This fixes clang-built binaries on a gcc powerpc64 world. Gets us one step
closer to a clang-built world. The same change was made in later upstream
binutils.
Submitted by: rdivacky
MFC after: 2 weeks
Modified:
head/contrib/binutils/bfd/elf-eh-frame.c
Modified: head/contrib/binutils/bfd/elf-eh-frame.c
==============================================================================
--- head/contrib/binutils/bfd/elf-eh-frame.c Wed Oct 11 00:31:54 2017 (r324510)
+++ head/contrib/binutils/bfd/elf-eh-frame.c Wed Oct 11 02:39:20 2017 (r324511)
@@ -1344,7 +1344,7 @@ _bfd_elf_write_section_eh_frame (bfd *abfd,
val = read_value (abfd, buf, per_width,
get_DW_EH_PE_signed (per_encoding));
- val += ent->offset - ent->new_offset;
+ val += (bfd_vma)ent->offset - ent->new_offset;
val -= extra_string + extra_data;
write_value (abfd, buf, val, per_width);
action &= ~4;
@@ -1400,7 +1400,7 @@ _bfd_elf_write_section_eh_frame (bfd *abfd,
}
break;
case DW_EH_PE_pcrel:
- value += ent->offset - ent->new_offset;
+ value += (bfd_vma)ent->offset - ent->new_offset;
address += sec->output_section->vma + ent->offset + 8;
break;
}
@@ -1428,7 +1428,7 @@ _bfd_elf_write_section_eh_frame (bfd *abfd,
if (value)
{
if ((ent->lsda_encoding & 0xf0) == DW_EH_PE_pcrel)
- value += ent->offset - ent->new_offset;
+ value += (bfd_vma)ent->offset - ent->new_offset;
else if (ent->cie_inf->need_lsda_relative)
value -= (sec->output_section->vma + ent->new_offset + 8
+ ent->lsda_offset);
More information about the svn-src-all
mailing list