特定の C ファイル用に生成されたセクションのシンボルを取得し、最終的な実行可能ファイル.data
の別のセクション (例: ) に配置したいと考えています。.mydata
例えば、
normaldata.c: char * my_str = "this should appear in .data";
specialdata.c: char * my_special_str = "this should appear in .mydata";
デフォルトでは、 と の両方がセクションmy_str
にmy_special_str
表示され.data
ます。ただし、 を生成するときは、代わりに に表示さspecialdata.o
れるものをすべて に送信したいと考えています。.data
.mydata
を使用し__attribute__((section(".mydata")))
てこの効果を達成できることは承知していますが、これを構造体のポインターメンバーの指定された初期化子に適用する方法がわかりません (この質問のコードを簡略化しました)。その代わりに、リンカ スクリプトを使用して、特定のファイルのすべてのデータを特別なセクションに送信できるのではないかと考えています。
このリンカー スクリプトを試しました ( link.lds
):
SECTIONS
{
.mydata : { *(.data) }
}
を使用しgcc -c specialdata.c -T link.lds -o specialdata.o
ますが、の出力にobjdump -x specialdata.o
は.data
セクションが表示されますが、セクションは表示されません.mydata
。
私は何を間違っていますか?