aarch64 head -r338921 vs. man ld vs. ld -v : man ld describes GNU when ld is lld

Mark Millard marklmi at yahoo.com
Tue Sep 25 06:06:23 UTC 2018


[This is based on buildworld buildkernel and installing.]

I've updated to:

# uname -apKU
FreeBSD pine64 12.0-ALPHA7 FreeBSD 12.0-ALPHA7 #17 r338921M: Mon Sep 24 19:19:08 PDT 2018     markmi at pine64:/usr/obj/cortexA53_clang/arm64.aarch64/usr/src/arm64.aarch64/sys/GENERIC-NODBG  arm64 aarch64 1200084 1200084

For which:

# ld -v
LLD 6.0.1 (FreeBSD 335540-1200004) (compatible with GNU linkers)

But man ld reports GNU/BFD material:

# man ld
LD(1)                        GNU Development Tools                       LD(1)



NAME
       ld - The GNU linker

SYNOPSIS
       ld [options] objfile ...

DESCRIPTION
. . .
       This man page does not describe the command language; see the ld entry
       in "info" for full details on the command language and on other aspects
       of the GNU linker.

       This version of ld uses the general purpose BFD libraries to operate on
       object files. . . .

       Aside from its flexibility, the GNU linker is more helpful than other
       linkers in providing diagnostic information.  . . .

       The GNU linker ld is meant to cover a broad range of situations, and to
       be as compatible as possible with other linkers.  As a result, you have
       many choices to control its behavior.
. . .

(I do not see such in my amd64 builds.)

I'm not claiming this is new: I just noticed.

For reference on the Pine64+ 2GB aarch64 system
being used for this (avoiding >>> prefixes on lines):

# ~/sys_build_scripts.aarch64-host/make_cortexA53_nodebug_clang_bootstrap-aarch64-host.sh check-old
Script started, output file is /root/sys_typescripts/typescript_make_cortexA53_nodebug_clang_bootstrap-aarch64-host-2018-09-24:22:53:10
... Checking for old files
... Checking for old libraries
... Checking for old directories
To remove old files and directories run 'make delete-old'.
To remove old libraries run 'make delete-old-libs'.

Script done, output file is /root/sys_typescripts/typescript_make_cortexA53_nodebug_clang_bootstrap-aarch64-host-2018-09-24:22:53:10

(So I'd run delete-old before this.)

# more ~/sys_build_scripts.aarch64-host/make_cortexA53_nodebug_clang_bootstrap-aarch64-host.sh
kldload -n filemon && \
script ~/sys_typescripts/typescript_make_cortexA53_nodebug_clang_bootstrap-aarch64-host-$(date +%Y-%m-%d:%H:%M:%S) \
env __MAKE_CONF="/root/src.configs/make.conf" \
SRCCONF="/dev/null" SRC_ENV_CONF="/root/src.configs/src.conf.cortexA53-clang-bootstrap.aarch64-host" \
WITH_META_MODE=yes \
MAKEOBJDIRPREFIX="/usr/obj/cortexA53_clang/arm64.aarch64" \
make $*

# more ~/src.configs/src.conf.cortexA53-clang-bootstrap.aarch64-host 
TO_TYPE=aarch64
#
KERNCONF=GENERIC-NODBG
TARGET=arm64
.if ${.MAKE.LEVEL} == 0
TARGET_ARCH=${TO_TYPE}
.export TARGET_ARCH
.endif
#
#WITH_CROSS_COMPILER=
WITH_SYSTEM_COMPILER=
WITH_SYSTEM_LINKER=
#
#CPUTYPE=soft
WITH_LIBCPLUSPLUS=
#WITH_LLD_BOOTSTRAP=
WITHOUT_BINUTILS_BOOTSTRAP=
WITH_ELFTOOLCHAIN_BOOTSTRAP=
#WITH_CLANG_BOOTSTRAP=
WITH_CLANG=
WITH_CLANG_IS_CC=
WITH_CLANG_FULL=
WITH_CLANG_EXTRAS=
WITH_LLD=
WITH_LLD_IS_LD=
WITHOUT_BINUTILS=
WITH_LLDB=
#
WITH_BOOT=
WITHOUT_LIB32=
#
WITHOUT_GCC_BOOTSTRAP=
WITHOUT_GCC=
WITHOUT_GCC_IS_CC=
WITHOUT_GNUCXX=
#
NO_WERROR=
#WERROR=
MALLOC_PRODUCTION=
#
WITH_REPRODUCIBLE_BUILD=
WITH_DEBUG_FILES=
#
# Use of the .clang 's here avoids
# interfering with other C<?>FLAGS
# usage, such as ?= usage.
CFLAGS.clang+= -mcpu=cortex-a53
CXXFLAGS.clang+= -mcpu=cortex-a53
CPPFLAGS.clang+= -mcpu=cortex-a53
ACFLAGS.arm64cpuid.S+=  -mcpu=cortex-a53+crypto
ACFLAGS.aesv8-armx.S+=  -mcpu=cortex-a53+crypto
ACFLAGS.ghashv8-armx.S+=        -mcpu=cortex-a53+crypto

# more ~/src.configs/make.conf
CFLAGS.gcc+= -v
LDFLAGS.lld+= -Wl,--no-threads




===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)



More information about the freebsd-toolchain mailing list