3

ref属性を持つ関数を含むモジュールがあります。これにより.text、 が別のセクションに配置されます。ARM スタック フレームの巻き戻しが機能する方法は、2 つの追加セクションがELFファイルに配置されることです。これらのセクションは、ARM のunwind.cにテーブルを提供します。module.cファイルは、モジュールをロードするときにこれらのテーブルを設定します。

セクションを使用する場合、このコードをアンワインドできるように、gcc-4.7 によって.ref.text2 つのセクション.ARM.extab.ref.textとセクションが作成されます。.ARM.exidx.ref.text残念ながら、module.c.initは 、などをスキャンするだけで.devinit、これらのセクションは追加しません。CONFIG_DEBUG_KMEMLEAKをオンにし、割り当て中に__refフレームがアクティブな場合、スタック トレース コードは多くのunwind: Index not foundメッセージをカーネル ログに出力します。

  1. __refモジュールで 使用するのは間違っていますか?
  2. extabexidxをコアの.ARM.extab.ARM.exidxセクションに配置する ARM 用のアーキテクチャリンカ ファイルが必要ですか?.ref
  3. なぜ私だけがこれを見るのですか?私は 2.6.36 を持っていますが、メインラインに問題があるようです。
4

1 に答える 1