Hi, As I sent already the error message shows the discrepancy starts from include/linux/cache.h, So I added the same #pragma thing around that #include <linux/cache.h> and the compile error is gone. This is only for debugging a boot failure in a qemu machine (which is for a real fpga board), so I can follow the code with gdb. And I needed to analyzing what kernel does until the problem occurs, though it isn't an easy task for me to follow.(but I think it's worth it.) Thanks for the comments. Chan > -----Original Message----- > From: jim.cromie@xxxxxxxxx <jim.cromie@xxxxxxxxx> > Sent: Monday, January 24, 2022 1:47 AM > To: Chan Kim <ckim@xxxxxxxxxx> > Cc: kernelnewbies <kernelnewbies@xxxxxxxxxxxxxxxxx> > Subject: Re: adding GCC optimze O0 to early_fixmap_init causes compiler > error (BUILD_BUG failed) > > On Sun, Jan 23, 2022 at 4:23 AM Chan Kim <ckim@xxxxxxxxxx> wrote: > > > > Hello all, > > > > In linux 5.4.21, when tell the compiler to use no optimzation for > > function early_fixmap_init as below, > > > > (I need to compile with O0 to follow what’s happening here using gdb.) > > > > #pragma GCC push_options > > > > #pragma GCC optimze ("O0") > > > > void __init early_fixmap_init(void) > > > > { > > > > ... > > > > } > > > > #pragma GCC pop_options > > > > > > > > I get this compiler error below. (make ARCH=arm64 > > CROSS_COMPILE=aarch64-none-elf- Image -j24) > > > > CALL scripts/atomic/check-atomics.sh > > > > CALL scripts/checksyscalls.sh > > > > CHK include/generated/compile.h > > > > CC arch/arm64/mm/mmu.o > > > > CC drivers/irqchip/irq-gic-v3.o > > > > In file included from ./include/linux/build_bug.h:5, > > > > from ./arch/arm64/include/asm/sysreg.h:758, > > > > from ./arch/arm64/include/asm/cputype.h:126, > > > > from ./arch/arm64/include/asm/cache.h:8, > > > > from ./include/linux/cache.h:6, > > > > from arch/arm64/mm/mmu.c:9: > > > > ./arch/arm64/include/asm/pgalloc.h: In function > '__pgd_populate.constprop': > > > > ./include/linux/compiler.h:350:38: error: call to > > '__compiletime_assert_88' declared with attribute error: BUILD_BUG > > failed > > > > 350 | _compiletime_assert(condition, msg, __compiletime_assert_, > > __LINE__) > > > > | ^ > > > > ./include/linux/compiler.h:331:4: note: in definition of macro > '__compiletime_assert' > > > > 331 | prefix ## suffix(); \ > > > > | ^~~~~~ > > > > ./include/linux/compiler.h:350:2: note: in expansion of macro > '_compiletime_assert' > > > > 350 | _compiletime_assert(condition, msg, __compiletime_assert_, > > __LINE__) > > > > | ^~~~~~~~~~~~~~~~~~~ > > > > ./include/linux/build_bug.h:39:37: note: in expansion of macro > 'compiletime_assert' > > > > 39 | #define BUILD_BUG_ON_MSG(cond, msg) > > compiletime_assert(!(cond), msg) > > > > | ^~~~~~~~~~~~~~~~~~ > > > > ./include/linux/build_bug.h:59:21: note: in expansion of macro > 'BUILD_BUG_ON_MSG' > > > > 59 | #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed") > > > > | ^~~~~~~~~~~~~~~~ > > > > ./arch/arm64/include/asm/pgalloc.h:88:2: note: in expansion of macro > 'BUILD_BUG' > > > > 88 | BUILD_BUG(); > > > > | ^~~~~~~~~ > > > > make[2]: *** [scripts/Makefile.build:265: arch/arm64/mm/mmu.o] Error 1 > > > > make[1]: *** [scripts/Makefile.build:509: arch/arm64/mm] Error 2 > > > > make: *** [Makefile:1652: arch/arm64] Error 2 > > > > make: *** Waiting for unfinished jobs.... > > > > AR drivers/irqchip/built-in.a > > > > AR drivers/built-in. > > > > > > > > What does this mean and what should I do? > > > > it means that some precondition failed, and you reached a known broken > setup. > Instead of giving you a broken kernel, its told you that you have to fix > this 1st. > > try making an intermediate output, forex: > make init/main.i > > that should provide hints as to how you got to the BUILD_BUG > > I dont think banging on -O compile options will help, at least not after > seeing GregKH opine on it. > > > Thanks! > > > > Chan Kim > > > > > > > > _______________________________________________ > > Kernelnewbies mailing list > > Kernelnewbies@xxxxxxxxxxxxxxxxx > > https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies