問題タブ [elf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - どの ELF 依存関係が満たされていないかを見つけるにはどうすればよいですか?
LSB SDK を使用してテスト ELF プログラムを作成しました (私の質問は LSB に固有のものではないことに注意してください)。
しかし、私はそれを起動できません (はい、ファイルがディレクトリにあることを保証します... ):
満たされていないELF依存関係があると思いますが、それを見つける方法がわかりません。ミッシングリンクを見つけるために使用できるライブラリ用の ldd に似たツールはありますか?
LSB コンパイラが動作しているため、2.6.15/2.6.28-15 の違いとは関係ないと思います。
念のため、a.out の ELF 動的セクションを次に示します。
arrays - リンカー ファイルの .bss セクションでの静的配列の整列
私は機能を持っています:
およびリンカー ファイル:
4 バイト境界に揃えるために静的配列 (.bss データ) が必要ですが、配列はそうするのを拒否しているようです。構造体とプリミティブ型は問題なく配置されていますが (塗りつぶしの行を参照)、配列はすべて終わっています。これが私のマップファイルです:
配列を整列する方法を知っている人はいますか?
linux - オンデマンドで ELF セクションをロード/アンロードしますか?
かなりあいまいなユースケースの場合、小さな制御コードと大きな静的 (読み取り専用) データで構成される (大きな) 静的にリンクされた Linux 実行可能ファイルが必要です。メモリを節約するために、ローダーに制御コードのセクションのみをロードさせ、必要に応じて RO データのセクションを手動でロードし、処理が完了したら再度アンロードすることは可能ですか?
これは可能ですか?
(これを解決するために(ファイルシステムレベルの)データストリームを使用できると思いますが、それらは私には利用できず(EXT3)、データストリームは簡単に失われるため、配布は難しいでしょう。)
linux - LinuxでELFファイルのデータセクションの内容を調べるにはどうすればよいですか?
私はobjdumpLinuxELFバイナリのアセンブリコードを調べるために使用してきました。
rodata(読み取り専用データ)セクションに格納されているジャンプテーブルを介した間接ジャンプがある場合があります。
このデータセクションの内容を表示するための取得方法objdumpやその他のツールはありますか?
プログラムを実行してデバッガーで関連するアドレスを調べることはできますが、インタラクティブに実行する必要があるため、実行したくありません。
理想的な答えは、コンテンツを表示するだけでなく、表示形式を制御できるツールを特定することですod。
c++ - Linux上のCでのChar配列とポインタのセグメンテーション違反
だから私は次のプログラムを持っています:
「one[1]='b'」の行でセグフォールトします。これは、ポインタ「one」が指すメモリが読み取り専用メモリにある必要があるため、意味があります。ただし、問題は、「two [1]='b'」という行がセグメンテーション違反ではないのはなぜかということです。gccからのアセンブリ出力を見てください。
両方の文字列がrodataセクションにあるため、読み取り専用であることがわかります。では、どうして「two [1]='b'」という行がセグメンテーション違反にならないのでしょうか。
linux - Linux ユーザー空間 ELF ローダー
私はかなり珍しいことをする必要があります: elf 実行可能ファイルを手動で実行します。つまり、すべてのセクションを適切な場所にロードし、main() を照会して呼び出します (その後、クリーンアップします)。実行可能ファイルは静的にリンクされるため、ライブラリをリンクする必要はありません。ベースアドレスも管理しているので競合の心配はありません。
それで、そのためのライブラリはありますか?
OSKit とその liboskit_exec を見つけましたが、プロジェクトは 2002 年以来死んでいるようです。
プロジェクトの一部を取り (もちろんライセンスを尊重して)、自分のニーズに合わせて調整することは問題ありませんが、私は Linux の世界では初心者なので、それらの部分がどこにあるかさえ知りません! :)
PS。ARMプラットフォームにはそれが必要です。
UPDうーん、elfs をロードするという問題は、それについての十分な知識が必要なようです (ため息)。それで、仕様書とマニュアルを読みに行きます。そして、bionic/linker と libelfsh に固執すると思います。みんなありがとう!
要約された調査結果:
- libelf : http://directory.fsf.org/project/libelf/
- elfsh と libelfsh (現在は eresi の一部): http://www.eresi-project.org/
- elfio (別のエルフ ライブラリ): http://sourceforge.net/projects/elfio/
- OSKit および liboskit_exec (古い): http://www.cs.utah.edu/flux/oskit/
- バイオニック/リンカー: https://android.googlesource.com/platform/bionic
c++ - ソースコードをelfファイルに追加
C++ ソース コードを対応するバイナリ ファイルに追加したいのですが、elfこれを行う最善の方法を探しています。(私は自分のコードのいくつかのバージョンを使用していますが、すべてのバージョンを svn にコミットする必要はありません)。
elfbash の>>演算子を使用してファイルを破棄せずに、ソース コードを追加することはできますか? またはobjcopy --add-section、これを行う方法はありますか?
ところで、使用されているすべてのソース コード ファイルを決定するために、ソース コード ファイルからgrepすべての行を再帰的に 'ing するほうがよい考えはありますか?#include
linux - '-rpath-link'オプションを尊重しないのはなぜですか?
私はstraceを使用してこれを検出します:
よくわかりません; -rpath-linkマニュアルによると、最初はパスで見つけようとする必要があります。
windows - Linux では COFF、Windows では ELF
UNIX で COFF 実行可能ファイルを実行したり、Windows で ELF 実行可能ファイルを実行したりすることはできますか? また、Windows と UNIX でいずれかのファイル タイプを実行できるようにするための手順は何でしょうか。私はただ興味があります。
gdb - Solaris10のGNUgdb6.4で認識されないファイル形式
以下の詳細は、Solaris10を実行しているSunマシンでのセッションからのものです。
gdbがファイル形式を認識しない理由の詳細はdevli?インターネットで検索しましたが、この特定の問題に関連するものは見つかりませんでした。任意のポインタが役立ちます。
a.cに入るa、gccを使用して構築された; devliSun ONEStudio8を使用します。