Re: Fwd: Re: after commit 5e248c2, kernel module build is broken

From: Scheffenegger, Richard <rscheff_at_freebsd.org>
Date: Mon, 26 Feb 2024 08:53:04 UTC
Yes, sorry for the inconvinience;

It turns out that for some reason, the three different compilers used 
across various platforms (gcc12, gcc13 and clang) are not all similarly 
strict with enum vs. int32 types, or are forgiving in slightly different 
ways.

What happend was that I forgot a type conversion to ccsignal_t in the 
fallback newreno reaction - but that (int32 for an enum) was acceptable 
for gcc12 / clang (my local toolchain), only gcc13 complained (upstream).

But when I hurried to fix the gcc13 error (with the proper type in the 
function header), either gcc12 or clang then complained about the 
missing default clause (which I had added in other instances, but wasn't
flagged in my local build previous to submitting the fix).

Thus that broke some toolchains - but it wasn't flagged to me locally 
either.

I'm trying to get my local toolchain upgraded to gcc13 - since this 
appears to be the most stringent set of checks, to prevent similar 
issues in the future.

Richard Scheffenegger



Am 26.02.2024 um 09:32 schrieb Richard Scheffenegger:
> 
> 
> 
> -------- Weitergeleitete Nachricht --------
> Betreff: 	Re: after commit 5e248c2, kernel module build is broken
> Datum: 	Mon, 26 Feb 2024 14:24:48 +0800
> Von: 	Zhenlei Huang <zlei@FreeBSD.org>
> An: 	Michael Butler <imb@protected-networks.net>
> Kopie (CC): 	freebsd-current <freebsd-current@freebsd.org>, Richard 
> Scheffenegger <rscheff@FreeBSD.org>
> 
> 
> 
>> On Feb 25, 2024, at 11:38 PM, Michael Butler <imb@protected-networks.net>  wrote:
>>
>> Building /usr/obj/usr/src/amd64.amd64/sys/VM01-new/modules/usr/src/sys/modules/vmm/machine
>> machine -> /usr/src/sys/amd64/include
>> Building /usr/obj/usr/src/amd64.amd64/sys/VM01-new/modules/usr/src/sys/modules/vmm/x86
>> x86 -> /usr/src/sys/x86/include
>> Building /usr/obj/usr/src/amd64.amd64/sys/VM01-new/modules/usr/src/sys/modules/vmm/i386
>> i386 -> /usr/src/sys/i386/include
>> Building /usr/obj/usr/src/amd64.amd64/sys/VM01-new/modules/usr/src/sys/modules/vmm/opt_acpi.h
>> Building /usr/obj/usr/src/amd64.amd64/sys/VM01-new/modules/usr/src/sys/modules/vmm/opt_ddb.h
>> Building /usr/obj/usr/src/amd64.amd64/sys/VM01-new/cc.o
>> /usr/src/sys/netinet/cc/cc.c:475:10: error: 6 enumeration values not handled in switch: 'CC_ACK', 'CC_DUPACK', 'CC_PARTIALACK'... [-Werror,-Wswitch]
>>  475 |         switch (type) {
>>      |                 ^~~~
> 
> Should be fixed by 8917131e00b0 (tcp: need default in switch statement for enum)
> 
>> 1 error generated.
>> *** [cc.o] Error code 1
>>
> 
> Best regards,
> Zhenlei