リンカー スクリプトを使用して ctor のような関数リストを作成する方法を説明する私の回答に対する素晴らしいコメントは、最近の GNU ld が、-Wl,-T...
およびINSERT BEFORE
/を使用して新しいセクションをシステム リンカー スクリプトに移植するためのサポートを大幅に改善したことを指摘しましたINSERT AFTER
。これにより、他のリンカー スクリプトのトリックについて考えるようになりました。
ネットワーク カード ファームウェアの場合、リンカ スクリプトを修正して、ファームウェアのランタイム モジュールをグループ化し、すべてのモジュールが競合せずに L1 キャッシュに配置できる連続したブロックに配置されるようにしました。ストラグラー ( でグループ化できなかった.o
部分) をクリーンアップするために、個々の関数でセクション属性を使用しました。パフォーマンス カウンターは、実際に機能することを確認しました (L1 命令キャッシュ ミスをほとんどゼロに減らしました)。
リンカー スクリプトを使用して、他にどのような巧妙なことを達成しましたか?