Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 12 Oct 2017 21:53:17 +0200
From:      Roman Divacky <rdivacky@freebsd.org>
To:        Justin Hibbits <jhibbits@FreeBSD.org>
Cc:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r324511 - head/contrib/binutils/bfd
Message-ID:  <20171012195317.GA3199@vlakno.cz>
In-Reply-To: <201710110239.v9B2dKlx022588@repo.freebsd.org>
References:  <201710110239.v9B2dKlx022588@repo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20171012195317.GA3199>