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