Re: [kbuild-all] Re: include/linux/compiler_types.h:315:38: error: call to '__compiletime_assert_536' declared with attribute error: BUILD_BUG_ON failed: offsetof(struct can_frame, len) != offsetof(struct canfd_frame, len) || offsetof(struct can_frame, data) != offsetof(struc...

From: Oliver Hartkopp
Date: Tue Mar 23 2021 - 04:33:33 EST


Answering myself ...

On 23.03.21 08:45, Oliver Hartkopp wrote:
On 23.03.21 08:34, Marc Kleine-Budde wrote:
On 23.03.2021 10:54:40, Rong Chen wrote:
I tried arm-linux-gnueabi (gcc version 10.2.0) and the problem still
exists, btw we prefer to not use the latest gcc compiler to avoid
false positives.

FWIW:

I'm using latest debian arm compiler and the BUILD_BUG never triggered.
gcc version 10.2.1 20210110 (Debian 10.2.1-6)


@Rong / Marc:

I wonder if the compiler configurations (gcc -v) or the options used at kernel build time are identical.

Maybe there is a different optimization option selected which causes the compiler to extend the u8 union to a 32 bit space?!?

And maybe Debian is a bit more conservative in selecting their optimizations than the setup that Rong was using for the build ...

Best,
Oliver


Thanks Marc!

IMO we facing a compiler problem here - and we should be very happy that the BUILD_BUG_ON() triggered an issue after years of silence.

I do not have a good feeling about what kind of strange effects this compiler issue might have in other code of other projects.

So I would explicitly suggest NOT to change the af_can.c code to work around this compiler issue.

Let the gcc people fix their product and let them thank all of us for detecting it.

Regards,
Oliver