svn commit: r324511 - head/contrib/binutils/bfd

Roman Divacky rdivacky at freebsd.org
Thu Oct 12 20:04:12 UTC 2017


Note that this allows to use C++ EH on a gcc built PPC64 world for
applications built by clang++.

Roman

On Wed, Oct 11, 2017 at 02:39:20AM +0000, Justin Hibbits wrote:
> 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);
> _______________________________________________
> svn-src-head at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscribe at freebsd.org"


More information about the svn-src-all mailing list