簡體   English   中英

在Clang中處理函數名稱

[英]Function name mangling in clang

我想在c上創建函數,該函數在用clang轉換為llvm代碼后具有特定名稱。 一個問題-目標函數名稱必須包含點('。')。 是否有可能添加“ MyName”。 改名,除了“查找並替換”?

名稱修改主要由其他二進制文件使用dllimport導入該功能/變量使用。

如果不使用此方法,則可以對名稱進行任何操作。 如果是這樣,則還必須修改引用它的內容。

到目前為止,您可能會創建LLVM IR傳遞(請參閱opt等)以在目標中設置函數名稱。

簡單的例子:

for(auto f = M.getFunctionList().begin(); f != M.getFunctionList().end(); f = M.getFunctionList().begin()) {
    if (F->getName().find("MyMangledFunctionName") != StringRef::npos) {
        F->setName(F->getName() + "."); // add "dot"
    }
}

“ M”變量為llvm :: Module。

暫無
暫無

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

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