組み込みプラットフォーム用のコードを書いています。サードパーティの SDK とリンクする必要があります。ただし、その SDK のシンボルは特定のセクション ( ではありません.text
) に移動する必要があります。それは可能ですか?
xtensa-lx106 プロセッサ用の GNU ベースのツールチェーンを使用し、ESP8266 チップ用にビルドします。
組み込みプラットフォーム用のコードを書いています。サードパーティの SDK とリンクする必要があります。ただし、その SDK のシンボルは特定のセクション ( ではありません.text
) に移動する必要があります。それは可能ですか?
xtensa-lx106 プロセッサ用の GNU ベースのツールチェーンを使用し、ESP8266 チップ用にビルドします。
そのためには、使用しているリンカー スクリプトを変更する必要があります。
最終的なバイナリをリンクする行の makefile にある可能性があります。-T
リンカー スクリプトは、オプションを介して渡されるファイルです。
これを取得したら、テキスト エディターで開き、SECTION
ディレクティブを検索します。.text
おそらく、最終的なテキスト セグメントに入る必要があるすべてのセクションをリストする、その中に呼び出されるグループが見つかるでしょう。
SDK のコード セクション名をこのリストに追加するだけです。SDK に共通のプレフィックスを持つ複数のセクションがある場合は、ワイルドカードを使用することもできます (これは非常に頻繁に発生します)。
.data
グループと必要に応じてグループを使用して同じことができます.bss
。
これらの変更を行った後、実行可能ファイルを再リンクすると、SDK ライブラリのセクションが.text
および.data
グループに直接移動するはずです。
MEMORY
必要に応じて、リンカー ファイルの先頭にある宣言で新しいグループを作成することもできます。これにより、リンカーが使用する正確なアドレスを直接制御できます。次に、SDK ライブラリ セクションを、作成した新しいメモリ領域に直接リダイレクトすると、ライブラリが常に同じアドレスに配置されます。