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

Reply via email to