Re: git: 8b83d7e0ee54 - main - Make -Wunused-but-set-variable a fatal error for clang 13+ for kernel builds.

From: Mateusz Guzik <mjguzik_at_gmail.com>
Date: Tue, 19 Apr 2022 12:47:35 UTC
As of 19447fc4888379e539dfca7e4c62362d6c279357 the amd64 kernel +
modules build without with a config with these options removed:
diff --git a/sys/amd64/conf/GENERIC b/sys/amd64/conf/GENERIC
index 53c6043a0146..98b4be69dc94 100644
--- a/sys/amd64/conf/GENERIC
+++ b/sys/amd64/conf/GENERIC
@@ -69,43 +69,14 @@ options     COMPAT_FREEBSD11        # Compatible
with FreeBSD11
 options        COMPAT_FREEBSD12        # Compatible with FreeBSD12
 options        COMPAT_FREEBSD13        # Compatible with FreeBSD13
 options        SCSI_DELAY=5000         # Delay (in ms) before probing SCSI
-options        KTRACE                  # ktrace(1) support
-options        STACK                   # stack(9) support
 options        SYSVSHM                 # SYSV-style shared memory
 options        SYSVMSG                 # SYSV-style message queues
 options        SYSVSEM                 # SYSV-style semaphores
 options        _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time
extensions
 options        PRINTF_BUFR_SIZE=128    # Prevent printf output being
interspersed.
 options        KBD_INSTALL_CDEV        # install a CDEV entry in /dev
-options        HWPMC_HOOKS             # Necessary kernel hooks for hwpmc(4)
-options        AUDIT                   # Security event auditing
-options        CAPABILITY_MODE         # Capsicum capability mode
-options        CAPABILITIES            # Capsicum capabilities
-options        MAC                     # TrustedBSD MAC Framework
-options        KDTRACE_FRAME           # Ensure frames are compiled in
-options        KDTRACE_HOOKS           # Kernel DTrace hooks
-options        DDB_CTF                 # Kernel ELF linker loads CTF data
 options        INCLUDE_CONFIG_FILE     # Include this file in kernel
-options        RACCT                   # Resource accounting framework
-options        RACCT_DEFAULT_TO_DISABLED # Set kern.racct.enable=0 by default
-options        RCTL                    # Resource limits
-
-# Debugging support.  Always need this:
-options        KDB                     # Enable kernel debugger support.
-options        KDB_TRACE               # Print a stack trace for a panic.
-# For full debugger support use (turn off in stable branch):
-options        BUF_TRACKING            # Track buffer history
-options        DDB                     # Support DDB.
-options        FULL_BUF_TRACKING       # Track more buffer history
-options        GDB                     # Support remote GDB.
-options        DEADLKRES               # Enable the deadlock resolver
-options        INVARIANTS              # Enable calls of extra sanity checking
-options        INVARIANT_SUPPORT       # Extra sanity checks of
internal structures, required by INVARIANTS
-options        QUEUE_MACRO_DEBUG_TRASH # Trash queue(2) internal
pointers on invalidation
-options        WITNESS                 # Enable checks to detect
deadlocks and cycles
-options        WITNESS_SKIPSPIN        # Don't run witness on
spinlocks for speed
-options        MALLOC_DEBUG_MAXZONES=8 # Separate malloc(9) zones
-options        VERBOSE_SYSINIT=0       # Support
debug.verbose_sysinit, off by default


On 4/19/22, Mateusz Guzik <mjguzik@gmail.com> wrote:
> Looks like this needs a pass on a kernel without AUDIT, MAC,
> CAPABILITIES, dtrace and probably some other default stuff which also
> happens to be enabled in all kernel built with tinderbox.
>
> On 4/19/22, Stefan Esser <se@freebsd.org> wrote:
>> Am 19.04.22 um 01:11 schrieb John Baldwin:
>>> The branch main has been updated by jhb:
>>>
>>> URL:
>>> https://cgit.FreeBSD.org/src/commit/?id=8b83d7e0ee54416b0ee58bd85f9c0ae7fb3357a1
>>>
>>> commit 8b83d7e0ee54416b0ee58bd85f9c0ae7fb3357a1
>>> Author:     John Baldwin <jhb@FreeBSD.org>
>>> AuthorDate: 2022-04-18 23:06:27 +0000
>>> Commit:     John Baldwin <jhb@FreeBSD.org>
>>> CommitDate: 2022-04-18 23:06:27 +0000
>>>
>>>     Make -Wunused-but-set-variable a fatal error for clang 13+ for
>>> kernel
>>> builds.
>>>
>>>     Reviewed by:    imp, emaste
>>>     Differential Revision:  https://reviews.freebsd.org/D34949
>>
>> I'm seeing kernel build issues in several drivers (at commit
>> f2edc9155721).
>>
>> The first one could be fixed this way:
>>
>> diff --git a/sys/dev/cxgbe/tom/t4_cpl_io.c
>> b/sys/dev/cxgbe/tom/t4_cpl_io.c
>> index 4c8b1fa27579..470f03313b72 100644
>> --- a/sys/dev/cxgbe/tom/t4_cpl_io.c
>> +++ b/sys/dev/cxgbe/tom/t4_cpl_io.c
>> @@ -2192,7 +2192,7 @@ static void
>>  t4_aiotx_process_job(struct toepcb *toep, struct socket *so, struct
>> kaiocb
>> *job)
>>  {
>>         struct sockbuf *sb;
>> +#ifdef MAC
>>         struct file *fp;
>> +#endif
>>         struct inpcb *inp;
>>         struct tcpcb *tp;
>>         struct mbuf *m;
>> @@ -2201,10 +2201,10 @@ t4_aiotx_process_job(struct toepcb *toep, struct
>> socket
>> *so, struct kaiocb *job)
>>
>>         sb = &so->so_snd;
>>         SOCKBUF_UNLOCK(sb);
>> -       fp = job->fd_file;
>>         m = NULL;
>>
>>  #ifdef MAC
>> +       fp = job->fd_file;
>>         error = mac_socket_check_send(fp->f_cred, so);
>>         if (error != 0)
>>                 goto out;
>>
>> But then the build failed again at:
>>
>> /usr/src/sys/fs/ext2fs/ext2_extents.c:452:8: error: variable 'error_msg'
>> set
>> but not used [-Werror,-Wunused-but-set-variable]
>> Building /usr/obj/usr-14/git/src/amd64.amd64/sys/SE/vdev_mirror.o
>>
>> I have stopped trying to fix this and (any remaining) issues and have
>> locally reverted the commit that made this warning fatal ...
>>
>> Regards, STefan
>>
>
>
> --
> Mateusz Guzik <mjguzik gmail.com>
>


-- 
Mateusz Guzik <mjguzik gmail.com>