[英]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.