[PATCH] cmd/mem.c: fix undefined behavior in mem cmp

Rasmus Villemoes rasmus.villemoes at prevas.dk
Fri Sep 27 20:56:18 CEST 2024


Quentin Schulz <foss+uboot at 0leil.net> writes:

> From: Quentin Schulz <quentin.schulz at cherry.de>
>
> My linter complains that "When using void pointers in calculations, the
> behaviour is undefined".
>
> GCC does say that "In GNU C, addition and subtraction operations are
> supported on pointers to void"[1] but this hints at this only being
> supported in the GNU flavor of C. And I assume U-Boot may want to be
> compiled with clang/llvm?
>
> Let's fix that warning by casting the void pointer to a u8 pointer since
> the size variable unit is byte.
>
> [1] https://gcc.gnu.org/onlinedocs/gcc/Pointer-Arith.html
>

No, let's please not. Try enabling -Wpointer-arith and see how much
churn that would require all over the tree (doing it in this one place
would be pointless), and all the casts would make the code much much
harder to read.

We do rely on lots of gcc extensions, and Clang has documented that it
"aims to support a broad range of GCC extensions". Arithmetic on void is
one of them, and that's not going to go away.

Rasmus


More information about the U-Boot mailing list