1

特定の 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_strmy_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

私は何を間違っていますか?

4

1 に答える 1