2016-09-01 4 views
0

나는 clang을 사용하여 llvm 코드로 변환 한 후 특정 이름을 가진 c 함수를 작성하려고합니다. 한 가지 문제 - 대상 함수 이름에 점 ('.')이 있어야합니다. "MyName"을 (를) 추가 할 수 있습니까? "찾기 및 바꾸기"를 제외하고는 맹 글링 (mangling)이라는 이름으로?clang의 기능 이름 mangling

+1

이 용도는 무엇입니까? –

+2

해결하려는 문제는 무엇입니까? 아니요, 함수 이름을 mangling하는 것에 대한 문제는 아니지만, 당신이 요구하는 함수 이름을 mangling하는 것이 솔루션의 문제입니다. –

답변

0

이름 변환은 주로 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 :: 모듈.