[英]Extended asm with goto, including an example from the gcc docs, fails to compile
[英]Trying to port GCC specific asm goto to Clang
我一直試圖將一些GNU擴展轉換為實際的標准C,因此它將在clang上運行,知道標准C而不是GNU擴展,我有點虧。
__asm__ (goto("1:"
STATIC_KEY_INITIAL_NOP
".pushsection __jump_table, \"aw\" \n\t"
_ASM_ALIGN "\n\t"
_ASM_PTR "1b, %l[l_yes], %c0 \n\t"
".popsection \n\t"
: : "i" (key) : : l_yes););
我試圖把它變成實際的asm,但還沒有成功。
如果你很好奇,這是我剛剛建立在clang上的內核的一部分,除了那一部分。
您似乎在編譯arch / x86 / include / asm / jump_label.h時遇到問題 。 整個代碼段是為了支持“跳轉標簽修補”。 一個新功能非常有用,允許調試(打印日志等)在禁用調試時具有接近零的開銷。
您遇到的實現取決於gcc(v4.5),它添加了一個新的asm goto
語句 ,允許分支到標簽。
作為正確編譯Linux內核的快速解決方案,您可以在內核配置中禁用CONFIG_JUMP_LABEL
。 此配置選項用於在編譯器不支持asm goto
時禁用優化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.