2017-06-05 7 views
0

リンクフェーズで特定の関数/セクションを保存したいプロジェクトがあります。gcc/diab:未使用の関数/セクションを保持する

私が試した:

static void stub_enforcer(void) __attribute__ ((used)) 

をしかし、これはコンパイラのためではなく、リンカのためです。

使用されている今、リンカは充電と-gc-セクションを取ることを、私は維持したい機能は「ゴーン」である:(

私は私が必要とする機能を削除しないようにリンカに指示することができますどのように
Removing unused section '.text.func2' in file './src/func2.o' 

私はこれをしたい理由は、バイナリ上のものを変更することで、機能のポストビルドの使用である。私はLDスクリプトを制御することによって、解決策を見つけた

+0

コンパイラ/リンカは決して真ではないが、コンパイラ/リンカは以下のことができないという条件で関数を "使用する"可能性があります:if(argc == 1222333){stub_enforcer(); } ' – TripeHound

答えて

0

私はstub_enforcerをセクションに入れ、KEEP()コマンドを使ってリンカーがそれを投げないようにしました。

これは機能します。

+0

シンボルを予約する場合は、特定のシンボルを保持するために" -u "フラグを使用できます。 –

関連する問題