From owner-svn-src-all@FreeBSD.ORG Mon May 7 17:13:37 2012 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 71308106566C; Mon, 7 May 2012 17:13:37 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4207B8FC12; Mon, 7 May 2012 17:13:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q47HDbIa074565; Mon, 7 May 2012 17:13:37 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q47HDbri074562; Mon, 7 May 2012 17:13:37 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201205071713.q47HDbri074562@svn.freebsd.org> From: Dimitry Andric Date: Mon, 7 May 2012 17:13:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r235133 - in head: contrib/binutils/ld/emultempl share/mk X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2012 17:13:37 -0000 Author: dim Date: Mon May 7 17:13:36 2012 New Revision: 235133 URL: http://svn.freebsd.org/changeset/base/235133 Log: Revert r234656, and apply a proper fix for binutils PR 10474, which caused linking clang on 32-bit PowerPC to fail with "relocation truncated to fit: R_PPC_REL24" errors. Original diffs (relicensed under GPLv2 with permission from author): http://sourceware.org/git/?p=binutils.git;a=commit;h=1fd262ff7d7ea5adf4894c6b960e092e7e43e3cd http://sourceware.org/git/?p=binutils.git;a=commit;h=053c49fbff58bd33bd0d12200ea61302f92caceb Tested by: andreast MFC after: 1 week Modified: head/contrib/binutils/ld/emultempl/ppc32elf.em head/share/mk/bsd.own.mk Modified: head/contrib/binutils/ld/emultempl/ppc32elf.em ============================================================================== --- head/contrib/binutils/ld/emultempl/ppc32elf.em Mon May 7 15:41:31 2012 (r235132) +++ head/contrib/binutils/ld/emultempl/ppc32elf.em Mon May 7 17:13:36 2012 (r235133) @@ -119,7 +119,40 @@ ppc_before_allocation (void) } } } + gld${EMULATION_NAME}_before_allocation (); + + /* Turn on relaxation if executable sections have addresses that + might make branches overflow. */ + if (!command_line.relax) + { + bfd_vma low = (bfd_vma) -1; + bfd_vma high = 0; + asection *o; + + /* Run lang_size_sections (if not already done). */ + if (expld.phase != lang_mark_phase_enum) + { + expld.phase = lang_mark_phase_enum; + expld.dataseg.phase = exp_dataseg_none; + one_lang_size_sections_pass (NULL, FALSE); + lang_reset_memory_regions (); + } + + for (o = output_bfd->sections; o != NULL; o = o->next) + { + if ((o->flags & (SEC_ALLOC | SEC_CODE)) != (SEC_ALLOC | SEC_CODE)) + continue; + if (o->rawsize == 0) + continue; + if (low > o->vma) + low = o->vma; + if (high < o->vma + o->rawsize - 1) + high = o->vma + o->rawsize - 1; + } + if (high > low && high - low > (1 << 25) - 1) + command_line.relax = TRUE; + } } EOF Modified: head/share/mk/bsd.own.mk ============================================================================== --- head/share/mk/bsd.own.mk Mon May 7 15:41:31 2012 (r235132) +++ head/share/mk/bsd.own.mk Mon May 7 17:13:36 2012 (r235133) @@ -442,8 +442,7 @@ __T=${TARGET_ARCH} __T=${MACHINE_ARCH} .endif # Clang is only for x86 and powerpc right now, by default. -# XXX: Temporarily disabled for 32-bit powerpc, due to a binutils bug. -.if ${__T} == "amd64" || ${__T} == "i386" || ${__T} == "powerpc64" +.if ${__T} == "amd64" || ${__T} == "i386" || ${__T:Mpowerpc*} __DEFAULT_YES_OPTIONS+=CLANG .else __DEFAULT_NO_OPTIONS+=CLANG