簡體   English   中英

試圖將GCC特定的asm goto移植到Clang

[英]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語句 ,允許分支到標簽。

似乎Clang / LLVM不支持asm goto

作為正確編譯Linux內核的快速解決方案,您可以在內核配置中禁用CONFIG_JUMP_LABEL 此配置選項用於在編譯器不支持asm goto時禁用優化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM