1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-10-18 02:19:39 +00:00
freebsd/sys
Warner Losh 0b82dac337 cdefs.h: Add back fallback define for __printf0like
The format function printf0 is originally a FreeBSD extension. clang has
adopted it as an alias for printf. Starting with gcc 11, gcc doesn't do
a NULL pointer check for fmtarg. Instead, it has to be tagged with a
nonnull attribute, so this gives us the behavior we want.

For earlier gcc and other cmopilers, define it away so do not get false
positives for NULL pointers for the err*/warn* family of functions.
This also fixes -Wsystem-headers by avoiding print0 entirely. My testing
for 67d1a1cd9e didn't test that case, so I introduced a regression.

All these compilers need to be considered because __printf0like is used
in err.h and stdlib.h. Since it's used in system headers, it has to
work on all the compilers we support on FreeBSD, not just the ones that
can build FreeBSD itself.

__printf0like will likely be deleted in the future, since the proper way
to do this is with _Nullable or _Nonnull, but the compiler support for
those hasn't been completely evaluated.

Noticed by: jhb
Fixes: 67d1a1cd9e
Sponsored by: Netflix
Suggestions by: jhb
Differential Revision:	https://reviews.freebsd.org/D45836
2024-07-06 10:15:12 -06:00
..
amd64 amd64 pcpu: fix clobbers, suppress warnings, and clean up 2024-07-03 08:36:31 -07:00
arm net: Remove unneeded NULL check for the allocated ifnet 2024-06-28 18:16:29 +08:00
arm64 arm64: Handle an unaligned start in pmap_mask_set_locked() 2024-07-05 00:42:52 -05:00
bsm
cam ctladm: don't require the use of "-p" with "port -r" 2024-06-10 10:01:25 -06:00
cddl dtrace: Add a partial implementation of dtrace_getarg() on arm64 2024-06-20 12:41:01 -04:00
compat LinuxKPI: Add DEFINE_DEBUGFS_ATTRIBUTE_SIGNED to linux/debugfs.h 2024-06-26 23:51:34 +03:00
conf ossl: Add support for powerpc64/powerpc64le 2024-06-21 03:29:04 -04:00
contrib Mark the zfs.mount_snapshot jail parameter as boolean. 2024-06-24 13:00:49 -07:00
crypto ossl: Add support for powerpc64/powerpc64le 2024-06-21 03:29:04 -04:00
ddb
dev vtblk: Invoke busdma completion callbacks when polling 2024-07-04 10:15:33 -04:00
dts
fs ext4_ext_tree_init: correct memset initialization 2024-06-25 10:41:11 -07:00
gdb
geom
gnu
i386 i386 pcpu: fix clobbers, suppress warnings, and clean up 2024-07-03 08:35:31 -07:00
isa
kern Fix "%hhi" conversion for kvprintf() 2024-06-28 08:57:39 -06:00
kgssapi
libkern gsb_crc32.c: avoid gcc -Wunused-const-variable in user build 2024-07-02 12:12:22 -07:00
modules tpm: Fix standalone build 2024-06-24 23:34:59 -06:00
net ethernet: Retire M_HASFCS 2024-07-05 00:53:51 +08:00
net80211 net: Remove unneeded NULL check for the allocated ifnet 2024-06-28 18:16:29 +08:00
netgraph bluetooth socket sysinit: correct memset initialization 2024-07-01 08:22:31 -07:00
netinet tcp: minor cleanup 2024-06-29 11:06:35 +02:00
netinet6
netipsec
netlink netlink/route: provide pre-2.6.19 Linux compat shim 2024-06-20 16:10:39 -07:00
netpfil if_pflog: Limit the maximum unit via the new KPI 2024-07-03 21:14:09 +08:00
netsmb
nfs
nfsclient
nfsserver
nlm
ofed net: Remove unneeded NULL check for the allocated ifnet 2024-06-28 18:16:29 +08:00
opencrypto
powerpc ofw: convert boolean_t to bool 2024-06-26 11:14:36 -03:00
riscv riscv: remove a redundant check on PGA_WRITEABLE 2024-06-28 11:10:57 -03:00
rpc
security
sys cdefs.h: Add back fallback define for __printf0like 2024-07-06 10:15:12 -06:00
teken
tests
tools
ufs
vm swap_pager: cleanup swapoff_object 2024-06-27 14:06:09 -05:00
x86 x86/pci_early_quirks: Sync Intel 11th+ gen PCI IDs with Linux 2024-06-26 23:42:25 +03:00
xdr
xen
Makefile
README.md man filesystems: fix more xrefs after move to s4 2024-06-27 18:32:05 -06:00

FreeBSD Kernel Source:

This directory contains the source files and build glue that make up the FreeBSD kernel and its modules, including both original and contributed software.

Kernel configuration files are located in the conf/ subdirectory of each architecture. GENERIC is the configuration used in release builds. NOTES contains documentation of all possible entries. LINT is a compile-only configuration used to maximize build coverage and detect regressions.

Documentation:

Source code documentation is maintained in a set of man pages, under section 9. These pages are located in share/man/man9, from the top-level of the src tree. Consult intro(9) for an overview of existing pages.

Some additional high-level documentation of the kernel is maintained in the Architecture Handbook.

Source Roadmap:

Directory Description
amd64 AMD64 (64-bit x86) architecture support
arm 32-bit ARM architecture support
arm64 64-bit ARM (AArch64) architecture support
cam Common Access Method storage subsystem - cam(4) and ctl(4)
cddl CDDL-licensed optional sources such as DTrace
conf kernel build glue
compat Linux compatibility layer, FreeBSD 32-bit compatibility
contrib 3rd-party imported software such as OpenZFS
crypto crypto drivers
ddb interactive kernel debugger - ddb(4)
fs most filesystems, excluding UFS, NFS, and ZFS
dev device drivers and other arch independent code
gdb kernel remote GDB stub - gdb(4)
geom GEOM framework - geom(4)
i386 i386 (32-bit x86) architecture support
kern main part of the kernel
libkern libc-like and other support functions for kernel use
modules kernel module infrastructure
net core networking code
net80211 wireless networking (IEEE 802.11) - net80211(4)
netgraph graph-based networking subsystem - netgraph(4)
netinet IPv4 protocol implementation - inet(4)
netinet6 IPv6 protocol implementation - inet6(4)
netipsec IPsec protocol implementation - ipsec(4)
netpfil packet filters - ipfw(4), pf(4), and ipfilter(4)
opencrypto OpenCrypto framework - crypto(7)
powerpc PowerPC/POWER (32 and 64-bit) architecture support
riscv 64-bit RISC-V architecture support
security security facilities - audit(4) and mac(4)
sys kernel headers
tests kernel unit tests
ufs Unix File System - ffs(4)
vm virtual memory system
x86 code shared by AMD64 and i386 architectures