On Tue, 18 May 2021 at 03:20, Rasmus Villemoes <rasmus.villem...@prevas.dk> wrote: > > The layout and contents of struct global_data depends on a lot of > CONFIG_* preprocessor macros, not all of which are entirely converted > to Kconfig - not to mention weird games played here and there. This > can result in one translation unit using one definition of struct > global_data while the actual layout is another. > > That can be very hard to debug. But we already have a mechanism that > can help catch such bugs at build time, namely the asm-offsets > machinery which is necessary anyway to provide assembly code with the > necessary constants. So make sure that every C translation unit that > include global_data.h actually sees the same size of struct > global_data as that which was seen by the asm-offsets.c TU. > > It is likely that this patch will break the build of some boards. For > example, without the patch from Matt Merhar > (https://lists.denx.de/pipermail/u-boot/2021-May/450135.html) or some > other fix, this breaks P2041RDB_defconfig: > > CC arch/powerpc/lib/traps.o > AS arch/powerpc/cpu/mpc85xx/start.o > In file included from include/asm-generic/global_data.h:26, > from ./arch/powerpc/include/asm/global_data.h:109, > from include/init.h:21, > from arch/powerpc/lib/traps.c:7: > include/linux/build_bug.h:99:41: error: static assertion failed: > "sizeof(struct global_data) == GD_SIZE" > 99 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg) > | ^~~~~~~~~~~~~~ > include/linux/build_bug.h:98:34: note: in expansion of macro ‘__static_assert’ > 98 | #define static_assert(expr, ...) __static_assert(expr, ##__VA_ARGS__, > #expr) > | ^~~~~~~~~~~~~~~ > include/asm-generic/global_data.h:470:1: note: in expansion of macro > ‘static_assert’ > 470 | static_assert(sizeof(struct global_data) == GD_SIZE); > | ^~~~~~~~~~~~~ > make[1]: *** [scripts/Makefile.build:266: arch/powerpc/lib/traps.o] Error 1 > make: *** [Makefile:1753: arch/powerpc/lib] Error 2 > make: *** Waiting for unfinished jobs.... > > Signed-off-by: Rasmus Villemoes <rasmus.villem...@prevas.dk> > --- > include/asm-generic/global_data.h | 5 +++++ > 1 file changed, 5 insertions(+)
Reviewed-by: Simon Glass <s...@chromium.org>