2016-09-01 1 views
0

私はclangでllvmコードに変換した後に、特定の名前を持つcの作成機能を望みます。 1つの問題 - ターゲット関数名にポイント( '。')が含まれている必要があります。 「MyName」を追加する可能性はありますか? 「見つけて置き換える」を除いて、名前を変更することにclangの機能名mangling

+1

これにはどのようなケースがありますか? –

+2

あなたはどんな問題を解決しようとしていますか?いいえ、関数名のマングリングに関する問題ではなく、あなたが求めている関数名のマングリングに関係する解決策の問題です。 –

答えて

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 ::モジュール。

関連する問題