[PowerPC64] Use ld.bfd to build LIB32 and STAND - when using llvm
Summary: This patch is to support ongoing work for replacing "GCC/BFD" by "CLANG/LLD" on target PowerPC64 [1], by proposing a way to specify and/or locate a secondary ld.bfd linker. This is necessary as LLD currently doesn't support PowerPC 32 bits, so we keep using BFD for the 32 bit stuff on PowePC64(LIB32 compatibility and STAND/slof/loader.) - creates LD_BFD variable pointing to ld.bfd - use LD_BFD as linker for LIB32/compat - Default behavior for other platforms aren't changed. [1] https://wiki.freebsd.org/powerpc/llvm-elfv2 Submitted by: alfredo.junior_eldorado.org.br Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D20261
This commit is contained in:
parent
7821a820d0
commit
b451cd4544
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=356054
@ -47,11 +47,20 @@ LIB32CPUFLAGS= -mcpu=powerpc
|
|||||||
.else
|
.else
|
||||||
LIB32CPUFLAGS= -mcpu=${COMPAT_CPUTYPE}
|
LIB32CPUFLAGS= -mcpu=${COMPAT_CPUTYPE}
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
|
.if ${COMPAT_COMPILER_TYPE} == "gcc"
|
||||||
LIB32CPUFLAGS+= -m32
|
LIB32CPUFLAGS+= -m32
|
||||||
|
.else
|
||||||
|
LIB32CPUFLAGS+= -target powerpc-unknown-freebsd13.0
|
||||||
|
|
||||||
|
# Use BFD to workaround ld.lld issues on PowerPC 32 bit
|
||||||
|
LIB32CPUFLAGS+= -fuse-ld=${LD_BFD}
|
||||||
|
.endif
|
||||||
|
|
||||||
LIB32_MACHINE= powerpc
|
LIB32_MACHINE= powerpc
|
||||||
LIB32_MACHINE_ARCH= powerpc
|
LIB32_MACHINE_ARCH= powerpc
|
||||||
LIB32WMAKEFLAGS= \
|
LIB32WMAKEFLAGS= \
|
||||||
LD="${XLD} -m elf32ppc_fbsd"
|
LD="${LD_BFD} -m elf32ppc_fbsd"
|
||||||
|
|
||||||
.elif ${COMPAT_ARCH:Mmips64*} != ""
|
.elif ${COMPAT_ARCH:Mmips64*} != ""
|
||||||
HAS_COMPAT=32
|
HAS_COMPAT=32
|
||||||
|
@ -412,3 +412,17 @@ CFLAGS_NO_SIMD += ${CFLAGS_NO_SIMD.${COMPILER_TYPE}}
|
|||||||
# These come from make.conf or the command line or the environment.
|
# These come from make.conf or the command line or the environment.
|
||||||
CFLAGS += ${CFLAGS.${MACHINE_ARCH}}
|
CFLAGS += ${CFLAGS.${MACHINE_ARCH}}
|
||||||
CXXFLAGS += ${CXXFLAGS.${MACHINE_ARCH}}
|
CXXFLAGS += ${CXXFLAGS.${MACHINE_ARCH}}
|
||||||
|
|
||||||
|
|
||||||
|
# Defines a variable for Binutils linker, to be used to workaround some
|
||||||
|
# issue with LLVM LLD (i.e. support for PowerPC32 bit on PowerPC64)
|
||||||
|
#
|
||||||
|
# This is an unavoidable cross coupling with Makefile.inc1 and
|
||||||
|
# normal builds works when CROSS_BINUTILS_PREFIX and could be removed
|
||||||
|
# when LLD PowerPC 32 bit support is completed
|
||||||
|
.if defined(CROSS_BINUTILS_PREFIX)
|
||||||
|
LD_BFD=${LOCALBASE}/bin/${CROSS_BINUTILS_PREFIX}-ld.bfd
|
||||||
|
.else
|
||||||
|
LD_BFD=${OBJTOP}/tmp/usr/bin/ld.bfd
|
||||||
|
.endif
|
||||||
|
|
||||||
|
@ -99,6 +99,10 @@ CFLAGS+= -DLOADER_DISK_SUPPORT
|
|||||||
# or powerpc64.
|
# or powerpc64.
|
||||||
.if ${MACHINE_ARCH} == "powerpc64"
|
.if ${MACHINE_ARCH} == "powerpc64"
|
||||||
CFLAGS+= -m32 -mcpu=powerpc
|
CFLAGS+= -m32 -mcpu=powerpc
|
||||||
|
# Use ld.bfd to workaround ld.lld issues on PowerPC 32 bit
|
||||||
|
.if "${COMPILER_TYPE}" == "clang" && "${LINKER_TYPE}" == "lld"
|
||||||
|
CFLAGS+= -fuse-ld=${LD_BFD}
|
||||||
|
.endif
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
# For amd64, there's a bit of mixed bag. Some of the tree (i386, lib*32) is
|
# For amd64, there's a bit of mixed bag. Some of the tree (i386, lib*32) is
|
||||||
|
Loading…
Reference in New Issue
Block a user