2016-07-28 26 views
1

私はELFファイルのセクションを削除して、わずかに変更された内容の別のセクションに置き換えるプロジェクトがあります。 最初に元のセクションを削除してから、objcopyを使用して目的のセクションを追加することができました。しかし、私はいつも次のような警告を受ける。objcopyまたはlibelfを使用してelfファイルのセクションを置き換えて、メモリにロードされるようにする方法は?

warning: allocated section `.nv_fatbin' not in segment 

これは、セクションがメモリにロードされず、したがって望ましい機能が達成されないことにつながります。

セグメントを追加してセグメントに戻すにはどうすればよいでしょうか?

libelf? これはobjcopyでも可能ですか?

+0

リンカスクリプトです。 https://cygwin.com/ml/binutils/2003-05/msg00704.html。どのようなplatofrm/toolsを使っているのかを知ることは賢明です –

+0

標準のubuntuシステムでバイナリを編集しようとしていました。残念なことに、私はこれに新しいので、私は完全にこれでリンカスクリプトのアプローチを理解していない。 また、私はソースコードにアクセスできません。リンカスクリプトは純粋にバイナリで動作するでしょうか? – Abhay

+0

いいえ、リンカースクリプトは、バイナリを作成するために一緒にリンクするときに動作しています。 –

答えて

1

objcopyの--update-sectionオプションを使用するとよいでしょう。 objcopyをマニュアルから

抽出物(https://sourceware.org/binutils/docs/binutils/objcopy.html):

--updateセクションセクション名=ファイル名

は、ファイル名の内容がセクション名前セクション名の既存の内容を交換します。セクションのサイズは、ファイルのサイズに合わせて調整されます。 sectionnameのセクションフラグは変更されません。 ELF形式のファイルでは、セクションからセグメントへのマッピングも変更されず、--remove-sectionの後に--add-sectionを付けても使用できません。このオプションは複数回指定できます。

注::これにはbinutils v2.26以上が必要です。

関連する問題