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);
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to