<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Malgun Gothic";
        panose-1:2 11 5 3 2 0 0 2 0 4;}
@font-face
        {font-family:"Malgun Gothic";
        panose-1:2 11 5 3 2 0 0 2 0 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        text-autospace:none;
        word-break:break-hangul;
        font-size:10.0pt;
        font-family:"Malgun Gothic";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Malgun Gothic";
        color:windowtext;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Malgun Gothic";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:3.0cm 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=KO link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span lang=EN-US>I found adding the same #pragma directives warp to #include <linux/cache.h> makes the compiler error go away!<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>#pragma GCC push_options<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#pragma GCC optimize ("O0")<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#include <linux/cache.h><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#pragma GCC pop_option<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Chan<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><div style='border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt'><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal align=left style='text-align:left;text-autospace:ideograph-numeric ideograph-other;word-break:keep-all'><b><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri",sans-serif'>From:</span></b><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri",sans-serif'> Chan Kim <ckim@etri.re.kr> <br><b>Sent:</b> Sunday, January 23, 2022 8:23 PM<br><b>To:</b> kernelnewbies@kernelnewbies.org<br><b>Subject:</b> adding GCC optimze O0 to early_fixmap_init causes compiler error (BUILD_BUG failed) <o:p></o:p></span></p></div></div><p class=MsoNormal align=left style='text-align:left'><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Hello all,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>In linux 5.4.21, when tell the compiler to use no optimzation for function early_fixmap_init as below,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>(I need to compile with O0 to follow what</span>’<span lang=EN-US>s happening here using gdb.)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>#pragma GCC push_options<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>#pragma GCC optimze ("O0")<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>void __init early_fixmap_init(void) <o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>{<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>...<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>#pragma GCC pop_options<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I get this compiler error below. (make ARCH=arm64 CROSS_COMPILE=aarch64-none-elf- Image -j24)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd;text-indent:10.0pt'><span lang=EN-US>CALL    scripts/atomic/check-atomics.sh<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>  CALL    scripts/checksyscalls.sh<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>  CHK     include/generated/compile.h<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>  CC      arch/arm64/mm/mmu.o<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>  CC      drivers/irqchip/irq-gic-v3.o<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>In file included from ./include/linux/build_bug.h:5,<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>                 from ./arch/arm64/include/asm/sysreg.h:758,<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>                 from ./arch/arm64/include/asm/cputype.h:126,<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>                 from ./arch/arm64/include/asm/cache.h:8,<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>                 from ./include/linux/cache.h:6,<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>                 from arch/arm64/mm/mmu.c:9:<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>./arch/arm64/include/asm/pgalloc.h: In function '__pgd_populate.constprop':<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>./include/linux/compiler.h:350:38: error: call to '__compiletime_assert_88' declared with attribute error: BUILD_BUG failed<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>  350 |  _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>      |                                      ^<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>./include/linux/compiler.h:331:4: note: in definition of macro '__compiletime_assert'<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>  331 |    prefix ## suffix();    \<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>      |    ^~~~~~<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>./include/linux/compiler.h:350:2: note: in expansion of macro '_compiletime_assert'<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>  350 |  _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>      |  ^~~~~~~~~~~~~~~~~~~<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>./include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>   39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>      |                                     ^~~~~~~~~~~~~~~~~~<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>./include/linux/build_bug.h:59:21: note: in expansion of macro 'BUILD_BUG_ON_MSG'<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>   59 | #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed")<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>      |                     ^~~~~~~~~~~~~~~~<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>./arch/arm64/include/asm/pgalloc.h:88:2: note: in expansion of macro 'BUILD_BUG'<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>   88 |  BUILD_BUG();<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>      |  ^~~~~~~~~<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>make[2]: *** [scripts/Makefile.build:265: arch/arm64/mm/mmu.o] Error 1<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>make[1]: *** [scripts/Makefile.build:509: arch/arm64/mm] Error 2<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>make: *** [Makefile:1652: arch/arm64] Error 2<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>make: *** Waiting for unfinished jobs....<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd'><span lang=EN-US>  AR      drivers/irqchip/built-in.a<o:p></o:p></span></p><p class=MsoNormal style='margin-left:20.0pt;mso-para-margin-left:2.0gd;text-indent:10.0pt'><span lang=EN-US>AR      drivers/built-in.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>What does this mean and what should I do?<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Thanks!<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Chan Kim<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div></div></body></html>