1246 Commits

Author SHA1 Message Date
Warner Losh
7a171e3083 test-includes: Build a library instead of a binary
We need to build the .o's, but don't need to link. Build a static
library instead of a binary to accmoplish this. This removes the need to
have all the libc and crt stuff built, which is required for a
binary. In addition, trying to build a non-standard binary runs into
trouble with undefined symbols on arm related to EABI, even when using a
simplified startup with -nostdlib -e start.

Turn back on testing includes, now that it works.

Sponsored by:		Netflix
Reviewed by:		brooks, markj (prior version)
Differential Revision:	https://reviews.freebsd.org/D33452
2021-12-15 15:35:24 -07:00
Jessica Clarke
aee99ab4fe cross-build: Add comment missing from 9e5b0d9eac5b
Whilst the commit message documented some of the details, I had intended
to include this comment in the actual header, but failed to amend the
commit properly.

Fixes:		9e5b0d9eac5b ("cross-build: Fix bmake bootstrap with glibc 2.34")
MFC after:	1 week
2021-12-15 19:45:31 +00:00
Jessica Clarke
9e5b0d9eac cross-build: Fix bmake bootstrap with glibc 2.34
As of glibc 2.34, our unistd.h wrapper's inclusion of stdlib.h exposes
fragility in glibc's sys/wait.h and corresponding part of stdlib.h,
leading to "error: use of undeclared identifier 'WNOHANG'" and similar
errors when bootstrapping bmake.

Work around this by wrapping sys/wait.h to force stdlib.h's inclusion
first before it's implicitly included during the problematic window in
sys/wait.h.

MFC after:	1 week
2021-12-15 05:52:13 +00:00
Jessica Clarke
d752d10e53 cross-build: Add __weak_symbol definition for libdwarf bootstrap
Fixes:		3aa0bc89c6a1 ("libdwarf: Add a weak uncompress() symbol")
MFC after:	1 week
2021-12-15 04:36:11 +00:00
Warner Losh
aab8ed235a test-includes: add missing file
Fixes:		dd55767b86bc
Sponsored by:	Netflix
2021-12-14 21:05:27 -07:00
Warner Losh
dd55767b86 Test various header files to ensure they can be included by themselves.
A number of header files in sys/* have, going back to 7th Edition Unix
in 1979, reqiured other files (like sys/types.h) to compile. Likewise
the 4BSD networking code has had prerequisites. However, going back to
around the turn of the 21st century, other systems have made them be
independently include-able (wide-spread header include protection
post-dates 7th edition Unix by maybe 3 or so years judging from USENET
source postings). Start down the path of making them all independently
include-able by creating this test that fails buildworld when they are
not.

The file 'badfiles.inc' contains a list of the currently broken files
that cannot be included w/o any prerequisites. As files are fixed, 'make
badfiles.inc' should be re-run to remove them from the list. Note: All
files that start with an underscore are considered internal and not
tested.

Please note: once a file is removed from badfiles.inc, it must pass on
all architectures. Buildworld through at least the _includes target is
needed to ensure its working (though a buildkernel should also be done
on all architectures as well).

Sponsored by:		Netflix
Reviewed by:		brooks, markj
Differential Revision:	https://reviews.freebsd.org/D32498
2021-12-14 20:25:37 -07:00
Mark Johnston
73db11a4d1 depend-cleanup.sh: Make the output message more precise
Sponsored by:	The FreeBSD Foundation
2021-12-07 13:01:05 -05:00
Mark Johnston
187fe192ce depend-cleanup.sh: Handle commit cbdec8db18b5
That commit changed libc to use the MI pdfork implementation, but with
an incremental build the object file for the pdfork.S stub lingers and
causes a linker error.

Cleaning the depend file is not enouch, so modify clean_deps() to remove
object files as well, and add a call to ensure that pdfork.*o is
cleaned.  The new file is _pdfork.o.

Reported by:	jhb
Reviewed by:	emaste
Fixes:		cbdec8db18b5 ("libc: Add pdfork to the list of interposed system calls")
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D33322
2021-12-07 12:59:35 -05:00
Jessica Clarke
e0cb1fe7dd cross-build: Provide _PASSWORD_EFMT1 for libcrypt on Linux
Linux's pwd.h does not define _PASSWORD_EFMT1 (macOS's does), so we need
to define it in order to be able to bootstrap libcrypt (crypt-des.c uses
it) on non-FreeBSD, which will be done in a subsequent commit.

MFC after:	1 week
2021-12-07 00:24:20 +00:00
Jessica Clarke
8ceba27a5d cross-build: Define crypt_data in unistd.h for libcrypt
This is where it's defined in the base system, so is where libcrypt
expects it to exist when being built, and will be needed when being
bootstrapped in a subsequent commit.

MFC after:	1 week
2021-12-07 00:24:19 +00:00
Jessica Clarke
8d5d329553 Bootstrap libz when cross-building from non-FreeBSD
This is needed now libdwarf depends on libz.

Fixes:		dbf05458e3bd ("libdwarf: Support consumption of compressed ELF sections")
MFC after:	1 week
2021-12-06 19:16:28 +00:00
Jessica Clarke
7ba31d58f0 tools: Also create ${WORLDTMP}/legacy/usr/libdata/pkgonfig
This is needed for the next commit which will make libz a bootstrap
library as needed by ctfconvert. We could just not install the .pc file
as it's not needed, but that requires a per-library hack every time a
bootstrap library gains a .pc file, so this keeps bootstrap-tools
looking as much like a normal build as possible.

MFC after:	1 week
2021-12-06 19:16:27 +00:00
Jessica Clarke
5022d54e06 Makefile.boot: Fix copy/paste error in LIBNV's crossbuild override
Only noticed due to needing to change the surrounding lines, so
presumably nothing currently needs this.

MFC after:	1 week
2021-12-06 19:16:27 +00:00
Jessica Clarke
05066fad68 Makefile.boot: Make -Wno-typedef-redefinition Clang-specific
GCC doesn't have this warning and so also doesn't have the flag to
disable it, resulting in it spewing a bunch of warnings about the
command line option being unrecognised.

MFC after:	1 week
2021-12-06 19:16:26 +00:00
John Baldwin
60a8277413 Only use OLD_LIBS with shared libraries.
Use OLD_FILES for a few symbolic links and static libraries previously
included in OLD_LIBS.

Add a missing shared library major number to an old libroken entry.
2021-12-02 17:30:00 -08:00
Herbert J. Skuhra
a58135eb09 OptionalObsoleteFiles.inc: Add rc.d/zfskeys
While here, sort the etc/rc.d entries.

PR:		256483
Reviewed by:	allanjude
Approved by:	allanjude (src)
MFC after:	3 days
Sponsored by:	Modirum MDPay
Sponsored by:	Klara Inc.
Differential Revision:	https://reviews.freebsd.org/D33238
2021-12-03 02:05:55 +01:00
Cy Schubert
db0ac6ded6 Revert "wpa: Import wpa_supplicant/hostapd commit 14ab4a816"
This reverts commit 266f97b5e9a7958e365e78288616a459b40d924a, reversing
changes made to a10253cffea84c0c980a36ba6776b00ed96c3e3b.

A mismerge of a merge to catch up to main resulted in files being
committed which should not have been.
2021-12-02 14:45:04 -08:00
Cy Schubert
266f97b5e9 wpa: Import wpa_supplicant/hostapd commit 14ab4a816
This is the November update to vendor/wpa committed upstream 2021-11-26.

MFC after:      1 month
2021-12-02 13:35:14 -08:00
Ed Maste
145a574fa1 WITH_/WITHOUT_CXX: update description
Contrary to the previous description WITHOUT_CXX does not disable
/usr/bin/c++, which is just a link to Clang.  We also no longer have
gperf.

MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
2021-12-02 11:30:22 -05:00
Ed Maste
c3f345ae3c OptionalObsoleteFiles.inc: remove MK_CXX rule for usr/bin/c++
In fact MK_CXX does not control whether /usr/bin/c++ is built -- it is
installed as a link to Clang (which is always a C/C++ compiler), and it
already exists in OptionalObsoleteFiles under MK_TOOLCHAIN.

Sponsored by:	The FreeBSD Foundation
2021-12-01 21:42:48 -05:00
John Baldwin
610d908f8a Add lib32 entries for WITHOUT_PROFILE.
Reported by:	Mark Millard
2021-12-01 14:25:37 -08:00
John Baldwin
07c2b29b6e Trim a couple of duplicate entries from WITHOUT_PROFILE. 2021-12-01 14:23:31 -08:00
John Baldwin
99188582cc Add various profiled libraries missing from the WITHOUT_PROFILE list.
Reported by:	Mark Millard
2021-12-01 14:22:29 -08:00
Ed Maste
f7ea22e211 OptionalObsoleteFiles: move /usr/bin/CC to MK_TOOLCHAIN section
/usr/bin/CC is installed by usr.bin/clang/clang/Makefile, as with
/usr/bin/cc, /usr/bin/cpp, etc., and is not controlled by MK_CXX.
Move it to the same section as those tools.

(It may be that these should all be under
MK_TOOLCHAIN == no || MK_CLANG_IS_CC == no, but that seems like
unnecessary complexity.)

Sponsored by:	The FreeBSD Foundation
2021-12-01 16:43:44 -05:00
Ed Maste
1b9344add4 OptionalObsoleteFiles: remove GCC remnants
g++ and cc1plus were GCC components that are already removed
unconditionally in ObsoleteFiles.inc.

Reported by:	jhb (in review D33108)
Fixes:		57f804675e65 ("remove GCC 4.2.1 build infrastructure")
Sponsored by:	The FreeBSD Foundation
2021-11-30 13:41:41 -05:00
Ed Maste
0179739a00 OptionalObsoleteFiles: remove ping with INET & INET6 disabled
Reported by:	kevans
Fixes:		a4ef9e58bc0c ("sbin: build ping if at least one of...")
Sponsored by:	The FreeBSD Foundation
2021-11-28 13:23:29 -05:00
Warner Losh
4318dc9d13 MK_NAND: this option was retired some time ago
Remove the now-bogus WITH_NAND and WITHOUT_NAND flags.

Sponsored by:		Netflix
2021-11-26 12:22:56 -07:00
Dimitry Andric
6e75b2fbf9 Merge llvm-project release/13.x llvmorg-13.0.0-rc1-97-g23ba3732246a
This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvmorg-13.0.0-rc1-97-g23ba3732246a.

PR:		258209
MFC after:	2 weeks
2021-11-13 21:42:03 +01:00
Dimitry Andric
fe6060f10f Merge llvm-project main llvmorg-13-init-16847-g88e66fa60ae5
This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvmorg-13-init-16847-g88e66fa60ae5, the last commit before
the upstream release/13.x branch was created.

PR:		258209
MFC after:	2 weeks
2021-11-13 21:39:49 +01:00
Ed Maste
e9a994639b ssh: enable FIDO/U2F keys
Description of FIDO/U2F support (from OpenSSH 8.2 release notes,
https://www.openssh.com/txt/release-8.2):

  This release adds support for FIDO/U2F hardware authenticators to
  OpenSSH. U2F/FIDO are open standards for inexpensive two-factor
  authentication hardware that are widely used for website
  authentication.  In OpenSSH FIDO devices are supported by new public
  key types "ecdsa-sk" and "ed25519-sk", along with corresponding
  certificate types.

  ssh-keygen(1) may be used to generate a FIDO token-backed key, after
  which they may be used much like any other key type supported by
  OpenSSH, so long as the hardware token is attached when the keys are
  used. FIDO tokens also generally require the user explicitly
  authorise operations by touching or tapping them.

  Generating a FIDO key requires the token be attached, and will
  usually require the user tap the token to confirm the operation:

    $ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk
    Generating public/private ecdsa-sk key pair.
    You may need to touch your security key to authorize key generation.
    Enter file in which to save the key (/home/djm/.ssh/id_ecdsa_sk):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/djm/.ssh/id_ecdsa_sk
    Your public key has been saved in /home/djm/.ssh/id_ecdsa_sk.pub

  This will yield a public and private key-pair. The private key file
  should be useless to an attacker who does not have access to the
  physical token. After generation, this key may be used like any
  other supported key in OpenSSH and may be listed in authorized_keys,
  added to ssh-agent(1), etc. The only additional stipulation is that
  the FIDO token that the key belongs to must be attached when the key
  is used.

To enable FIDO/U2F support, this change regenerates ssh_namespace.h,
adds ssh-sk-helper, and sets ENABLE_SK_INTERNAL (unless building
WITHOUT_USB).

devd integration is not included in this change, and is under
investigation for the base system.  In the interim the security/u2f-devd
port can be installed to provide appropriate devd rules.

Reviewed by:	delphij, kevans
Relnotes:	Yes
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D32509
2021-11-04 13:01:44 -04:00
Ed Maste
065ef8f783 Add descriptions for WITH_ASAN and WITH_UBSAN
Reviewed by:	jrtc27
Sponsored by:	The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32773
2021-11-01 10:48:56 -04:00
John Baldwin
2f7f899536 libdialog: Bump shared library version to 10.
The upgrade to libdialog 1.3 included changes to the ABI.

Bump libdpv to 3 since it links against libdialog.

Reported by:	Mark Millard <marklmi@yahoo.com>
Reviewed by:	bapt
Fixes:		a96ef4501919 dialog: import dialog 1.3-20210117
Differential Revision:	https://reviews.freebsd.org/D32675
2021-10-27 09:30:24 -07:00
Ed Maste
48cb3fee25 Retire obsolete iscsi_initiator(4)
The new iSCSI initiator iscsi(4) was introduced with FreeBSD 10.0, and
the old intiator was marked obsolete shortly thereafter (in commit
d32789d95cfbf, MFC'd to stable/10 in ba54910169c4).  Remove it now.

Reviewed by:	jhb, mav
Relnotes:	yes
Sponsored by:	The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32673
2021-10-26 16:17:35 -04:00
Ed Maste
7b1e19ad78 Add libfido2 to the build
From https://github.com/Yubico/libfido2:

    libfido2 provides library functionality and command-line tools to
    communicate with a FIDO device over USB, and to verify attestation
    and assertion signatures.

    libfido2 supports the FIDO U2F (CTAP 1) and FIDO 2.0 (CTAP 2)
    protocols.

libfido2 will be used by ssh to support FIDO/U2F keys. It is currently
intended only for use by ssh, and so is installed as a PRIVATELIB and is
placed in the ssh pkgbase package.

This is currently disabled for the 32-bit library build as libfido2 is
not compatible with the COMPAT_32BIT hack in usb_ioctl.h.

Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D32448
2021-10-22 19:57:57 -04:00
Baptiste Daroussin
2a213a2e28 OptionalObsoleteFiles: add more googletest files to remove 2021-10-20 14:18:37 +02:00
Kyle Evans
8c22b9f3ba Fix cross-building on Linux/aarch64
Add necessary bits to detect ELF format on Linux/aarch64; note that
Linux calls it aarch64 where we would typically call it arm64 (uname -m)

Reviewed by:	arichardson, emaste, imp
Sponsored by:	Ampere Computing LLC
Sponsored by:	Klara Inc.
Differential Revision:	https://reviews.freebsd.org/D32542
2021-10-18 11:09:00 -05:00
Ed Maste
2e85df652c Add libcbor to the build
From https://github.com/PJK/libcbor:

    libcbor is a C library for parsing and generating CBOR, the general-
    purpose schema-less binary data format.

libcbor will be used by ssh to support FIDO/U2F keys.  It is currently
intended only for use by ssh, and so is installed as a PRIVATELIB and is
placed in the ssh pkgbase package.

cbor_export.h and configuration.h were generated by the upstream CMake
build.  We could create them with bmake rules instead (as NetBSD has
done) but this is a fine start.

This is currently disabled for the 32-bit library build as libfido2 is
not compatible with the COMPAT_32BIT hack in usb_ioctl.h, and there is
no need for libcbor without libfido2.

Reviewed by:	kevans
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D32347
2021-10-15 15:10:24 -04:00
Cameron Katri
1b85b68da0 llvm-readobj: Attach to buildsystem
Also install it as readelf when MK_LLVM_BINUTILS is set.

Reviewed By:	dim, arichardson
Differential Revision: https://reviews.freebsd.org/D32058
2021-10-14 17:18:05 +01:00
Alex Richardson
a89410ef91 cross-build: fix some redeclaration warnings during bootstrap
MFC after:	3 days
2021-10-11 11:57:54 +01:00
Alex Richardson
88c027338f Update OptionalObsoleteFiles.inc after 021385aba562
I forgot to update this file so make delete-old would incorrectly remove
the newly-installed LLVM binutils. While touching the file also update
for 8e1c989abbd1 since ObsoleteFiles.inc now inludes the tablegen binaries.

Reported by:	Herbert J. Skuhra <herbert@gojira.at>
Reviewed By:	emaste, imp

Differential Revision: https://reviews.freebsd.org/D32022
2021-10-11 11:46:31 +01:00
Warner Losh
880aec7361 cross-build: Remove redundant lines.
There's two identical gid_from_group lines in a row. We only need one.
Ditto for uid_from_user().

Sponsored by:		Netflix
Reviewed by:		bapt, jrtc27
Differential Revision:	https://reviews.freebsd.org/D32442
2021-10-10 11:17:14 -06:00
Ed Maste
032448cd2c Belatedly track private lib renaming for OptionalObsoleteFiles.inc
Reviewed by:	kevans
Fixes:		5551c573554e ("Rework PRIVATELIB")
Sponsored by:	The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32384
2021-10-08 23:15:56 -04:00
Baptiste Daroussin
88741a40c8 check-links.sh: treat PIE executable as elf files 2021-09-23 04:49:57 +02:00
Edward Tomasz Napierala
ddedf2a11e tzcode: Implement timezone change detection
Implement optional timezone change detection for local time libc
functions.  This is disabled by default; set WITH_DETECT_TZ_CHANGES
to build it.

Reviewed By:	imp
Sponsored by:	NetApp, Inc.
Sponsored by:	Klara, Inc.
X-NetApp-PR:	#47
Differential Revision:	https://reviews.freebsd.org/D30183
2021-09-12 03:07:58 +00:00
Jose Luis Duran
94d9439b6b Fix cross-builds after 4e5d32a445f90d37966cd6de571978551654e3f3
Add alignment macros to cross-build's sys/cdefs.h

Pull Request:	https://github.com/freebsd/freebsd-src/pull/531
MFC after:	immediately (build fix)
2021-09-07 10:53:50 +01:00
Alex Richardson
021385aba5 Add WITH_LLVM_BINUTILS to install LLVM binutils instead of Elftoolchain
When WITH_LLVM_BINUTILS is set, we will install the LLVM binutils as
ar/ranlib/nm/objcopy/etc. instead of the elftoolchain ones.
Having the LLVM binutils instead of the elftoolchain ones allows us to use
features such as LTO that depend on binutils that understand LLVM IR.
Another benefit will be an improved user-experience when compiling with
AddressSanitizer, since ASAN does not symbolize backtraces correctly if
addr2line is elftoolchain addr2line instead of llvm-symbolizer.
See https://lists.freebsd.org/archives/freebsd-toolchain/2021-July/000062.html
for more details.

This is currently off by default but will be turned on by default at some
point in the near future.

Reviewed By:	emaste

Differential Revision: https://reviews.freebsd.org/D31060
2021-09-06 09:49:49 +01:00
Justin Hibbits
7b81e6c7ca Support bootstrapping from Linux/ppc* 2021-09-04 11:47:30 -05:00
Dimitry Andric
4544929cb5 Silence unused parameter warnings in fspacectl(2) bootstrap stub
While here, replace spaces with tabs and add a newline at EOF.

Fixes:		5425ba8332571e57f9fe623346cb9d83293264d4
MFC after:	3 days
2021-08-28 15:37:43 +02:00
Ka Ho Ng
5425ba8332 truncate(1): Fix cross-build CI failure due to missing fspacectl
For other platforms, fspacectl(2) is absent. This commit masks out the
calls to fspacectl(2) and replace them with a ENODEV errno.

Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D31619
2021-08-24 17:08:28 +08:00
Jessica Clarke
8a1895a3fa tools/build/cross-build: Fix building libllvmminimal on Linux
There is a __used member in glibc's posix_spawn_file_actions_t in
spawn.h, so we must temporarily undefine __used when including it,
otherwise Support/Unix/Program.inc fails to build. This is based on
similar handling for __unused in other headers.

Fixes:		31ba4ce8898f ("Allow bootstrapping llvm-tblgen on macOS and Linux")
MFC after:	1 week
2021-08-12 23:50:48 +01:00