Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 5 Nov 2017 19:38:51 +0000 (UTC)
From:      Ngie Cooper <ngie@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r325443 - in head: . lib/libclang_rt share/mk
Message-ID:  <201711051938.vA5Jcpnc033399@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ngie
Date: Sun Nov  5 19:38:51 2017
New Revision: 325443
URL: https://svnweb.freebsd.org/changeset/base/325443

Log:
  Fix paths for cross-built versions of lib/libclang_rt and hardfloat arm variants
  
  - Define TARGET_CPUARCH and use in libclang_rt as the basis for CRTARCH
  
    When cross-compiling, the wrong architecture was being embedded in the
    libclang_rt binary filenames. It should be based on TARGET_ARCH (target), not
    MACHINE_ARCH (host).
  
    If TARGET_ARCH isn't defined (host-builds), fallback to MACHINE_ARCH.
  
  - Define CRTARCH to armhf when TARGET/TARGET_ARCH are set to arm/armv[67]
  
    TARGET_ABI/TARGET_CPU in Makefile.inc1 sets the ABI to gnueabihf, which
    affects the clang lookup path per `getArchNameForCompilerRTLib(..)` in
    contrib/llvm/tools/clang/lib/Driver/ToolChain.cpp, so chase clang and
    Linux's assumed naming convention for hard-float arm architectures.
  
    CROSSENV (in Makefile.inc1) sets CPUTYPE/MACHINE(_ARCH)? to the
    TARGET*-relevant values when building the `libraries` target, so test
    those variables instead.
  
  - Add OLD_FILES/OLD_LIBS entries for TARGET/TARGET_ARCH == arm/armv[67]. This
    impacts only arm/armv6 and arm/armv7.
  
  PR:	222925

Modified:
  head/ObsoleteFiles.inc
  head/lib/libclang_rt/Makefile.inc
  head/share/mk/sys.mk
Directory Properties:
  head/   (props changed)

Modified: head/ObsoleteFiles.inc
==============================================================================
--- head/ObsoleteFiles.inc	Sun Nov  5 19:25:06 2017	(r325442)
+++ head/ObsoleteFiles.inc	Sun Nov  5 19:38:51 2017	(r325443)
@@ -38,6 +38,21 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20171105: fixing lib/libclang_rt CRTARCH for arm:armv[67].
+.if ${MACHINE} == "arm"
+.if ${MACHINE_ARCH:Marmv[67]*} != "" && ${CPUTYPE:M*soft*} == ""
+OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-preinit-arm.a
+OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-arm.a
+OLD_LIBS+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-arm.so
+OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan_cxx-arm.a
+OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.profile-arm.a
+OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.safestack-arm.a
+OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.stats-arm.a
+OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.stats_client-arm.a
+OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.ubsan_standalone-arm.a
+OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-arm.a
+.endif
+.endif
 # 20171104: libcap_random should be in /lib not in /usr/lib
 OLD_LIBS+=usr/lib/libcap_random.so.0
 # 20171104: Casper can work only as shared library

Modified: head/lib/libclang_rt/Makefile.inc
==============================================================================
--- head/lib/libclang_rt/Makefile.inc	Sun Nov  5 19:25:06 2017	(r325442)
+++ head/lib/libclang_rt/Makefile.inc	Sun Nov  5 19:38:51 2017	(r325443)
@@ -2,7 +2,14 @@
 
 .include <src.opts.mk>
 
-CRTARCH=	${MACHINE_CPUARCH:C/amd64/x86_64/}
+# NOTE: based on TARGET_ABI/TARGET_CPUTYPE, set in Makefile.inc1 .
+.if ${MACHINE} == "arm"
+.if ${MACHINE_ARCH:Marmv[67]*} != "" && ${CPUTYPE:M*soft*} == ""
+CRTARCH=	armhf
+.endif
+.endif
+
+CRTARCH?=	${TARGET_CPUARCH:C/amd64/x86_64/}
 CRTSRC=		${SRCTOP}/contrib/compiler-rt
 
 .PATH:		${CRTSRC}/lib

Modified: head/share/mk/sys.mk
==============================================================================
--- head/share/mk/sys.mk	Sun Nov  5 19:25:06 2017	(r325442)
+++ head/share/mk/sys.mk	Sun Nov  5 19:38:51 2017	(r325443)
@@ -15,6 +15,11 @@ unix		?=	We run FreeBSD, not UNIX.
 #
 __TO_CPUARCH=C/mips(n32|64)?(el)?(hf)?/mips/:C/arm(v[67])?(eb)?/arm/:C/powerpc(64|spe)/powerpc/:C/riscv64(sf)?/riscv/
 MACHINE_CPUARCH=${MACHINE_ARCH:${__TO_CPUARCH}}
+.ifdef TARGET_ARCH
+TARGET_CPUARCH=${TARGET_ARCH:${__TO_CPUARCH}}
+.else
+TARGET_CPUARCH=${MACHINE_CPUARCH}
+.endif
 .endif
 
 __DEFAULT_YES_OPTIONS+= \



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