セクションをロードさせない方法
ELFの中の特定のセクションをローダーやgdbにロードさせない方法を探していましたが、とうとうみつけました。
".bss."で始まる名前の出力セクションは、NOBITSになり、ロードされない。
当初、適当なセクション名にして(NOLOAD)をLDスクリプトで指定しましたが、効果ありません。
次に、
bfin-elf-objcopy -R .sysmmr -R .coremmr
として、.sysmmrおよび.coremmr出力セクションを削除しました。しかし、これはjsp/samples/Makefileをいじらなければなりません。できれば、いじるのはjsp/config/blackfin以下にしたかったので、引き続き調査。googleでの検索結果にしたがい、
bfin-elf-objcopy --set-section-flags .sysmmr=alloc bfin-elf-objcopy --set-section-flags .coremmr=alloc
としてみましたが、これもだめ。gdbも、u-bootも異常をおこします。
結局、googleの検索をさまよった挙句に見つけたのが上の情報です。場所はLKMLのログ。
gcc will produce .bss.page_aligned section
with NOBITS attribute, purely on the basis
of section name starting by '.bss.'
さすが詳しいわ。というか、binutilsのコミュニティとの距離のなせる技かもしれません。LDのマニュアルを改めて調べましたが、この情報を見つけることはできませんでした。
何にせよ、これでMakefileを改変せずにロードされないセクションを作ることができました。