問題タブ [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.
c - ELF ファイルのバージョン
コマンドのクローンに取り組んでいelfdump
ます。
私のプログラムは、すべての実行可能ファイルで実行すると正常に動作elfdump -ecps *file*
します。しかし、libc.so などのライブラリ ファイルでプログラムを実行すると、.symtab セクションのすべてのシンボルに対して間違ったバージョン番号が出力されます (具体的には、すべてゼロです)。ドキュメントを何度も見てきましたが、なぜこれが起こっているのかわかりません。
誰かがいくつかのヒントを提供してもらえますか? または、ライブラリであるかどうかを検出する方法を教えてください。
c++ - .bss セクション ゼロで初期化された変数は、elf ファイルのスペースを占有しますか?
私の理解が正しければ.bss
、ELF ファイルのセクションは、ゼロで初期化された変数にスペースを割り当てるために使用されます。私たちのツール チェーンは ELF ファイルを生成するので、私の質問:.bss
セクションには実際にこれらすべてのゼロを含める必要がありますか? たとえば、グローバルな 10 メガバイトの配列を割り当てると、ELF ファイルに 10 メガバイトのゼロが発生するという、スペースの無駄遣いがあまりにもひどいように思えます。ここで何が間違っているのですか?
java - Java の場合: COFF/ELF/DWARF 実行可能ファイルを指定して C/C++ 変数のアドレスをプログラムで決定する
これは私が時々遭遇する状況です:
仮想アドレッシングを使用しない組み込みシステムの場合、C または C++ コードからデバッグ情報を含めてコンパイルされた実行可能ファイルがあります。通常、COFF または ELF/DWARF (これら 2 つを混同しています) 形式です。
実行時に、PC で、名前が指定された変数のアドレスを特定したいと考えています。(例:「foo.bar [7] .baz」)これにより、組み込みシステムで変数の値を読み書きできます(この質問の範囲を超えるデバッグプロトコルが与えられます)。明らかに、スタックベースまたはヒープベースの変数は静的アドレスを持っていないため、アウトです。
TI の 2800 シリーズ DSP 用に TI のコンパイラから COFF ファイルを解析するために、C++ でこれを行う前に、これを行ったことがあります。1 つまたは 2 つの他のプロセッサの実行可能ファイルで同じ問題に直面しているため、このようなことを行う Java ライブラリが既に存在するかどうか疑問に思っていました。
更新: (2009 年 11 月 18 日) 有望な手がかりです!
Eclipse CDT ELF パーサーを使用した人はいますか?
( http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.cdt.doc.isv/reference/api/org/eclipse/cdt/core/model/IBinary.htmlを参照) javadoc pgs の
TI の Code Composer 4 (Eclipse ベース) はこれを使用しているようです。そのため、ドキュメントがどこにあるかがわかれば、それを使用して問題を解決できるようです。
kernel - カーネル イメージを ELF から PE に変換する
Msys を使用して、Linux で作成した自家製カーネルを構築しています。Linux はバイナリ形式に ELF を使用し、Msys は PE を使用します。マルチブート仕様を使用して Grub で起動できるようにソースをセットアップしました。ビルドの最後に、未定義のシンボルをいくつか取得します。
これらは ELF 指向のシンボルのようです。PE の世界でこれらをどのように扱うべきか、誰かが私にアドバイスできるなら、例えば同等のものがある場合、それは私を大いに助けてくれるでしょう!
executable - プログラムの実行と関数の呼び出しが統一されたシステムはありますか?
シェルから次の 1 つ以上を実行できるようにしたいと考えています。 - main だけでなく、プログラムから任意の関数を呼び出す - 文字列だけではない (argv だけでなく) パラメータを渡す - int だけでなくプログラムを返すようにする(メインからの戻りコード) - 戻り値をシェルレベル変数に割り当てて、それらを他のプログラムに渡すことができるようにします
あなたはアイデアを得る。たとえば、python toplevel は、python プログラムに対してこれを許可します。C++はどうですか?または、それを可能にする Linux の ELF の代替品はありますか?
c++ - WinCE/Window Mobile 用の RVCT を使用して AMR-nb コーデックをコンパイルする
私は amr 音声コーデック (移植/最適化) に取り組んでいます。voiceage のアーム (WinCE 用) に最適化されたバージョンがあり、パフォーマンス テストの参考として使用しています。これまでのところ、私のライブラリで生成されたバイナリは、他のライブラリよりも約 20 ~ 30% 優れています。私は Vs2008 を使用しており、Microsoft コンパイラで生成できる ARM 命令セットへのアクセスが制限されています。そこで、パフォーマンスの違いが何であるかを確認するために、代替コンパイラを探してみました。RVCT コンパイラがありますが、elf バイナリ/オブジェクト ファイルが生成されます。ただし、Wince 携帯電話 (TyTn 2) でテストを実行しているため、RVCT でコンパイルされたコードを WinCE で実行する方法を見つける必要があります。オプションのいくつかは、1) アセンブリ リストを作成する (armcc の -S オプション)、
私の最初の試みは、エクスポートされた関数を 1 つ含む単純な C++ ファイルを作成し、RVCT でコンパイルしてから、その関数をスマートフォンで実行することです。発行されたアセンブリを ms アセンブラーでアセンブルすることはできません (互換性がないだけでなく、ms アセンブラーは RVCT コンパイラーで生成された命令の一部を拒否します。私の場合は ASR オペコード) 次に、ELF オブジェクトを coff 形式に変換しようとしましたが、それに関する情報が見つかりません。ce 用の gcc ポートがあり、そのツールセットの objcopy がタスクを実行できるはずです。しかし、私はそれを働かせることができません。さまざまなスイッチを試しましたが、入力および出力形式の bfdname として正確に何を指定する必要があるかわかりません。だから、私もそれを機能させることができませんでした。fromelf でダンプして、生成された bin ファイルを使用するのはやり過ぎのようですが、それで、私がやるべきことが何かあるか、または誰かがすでに同様のタスクを行っていて、私を助けることができるかどうか、皆さんに尋ねることにしました。基本的に、コードを RVCT コンパイラでコンパイルして、パフォーマンスの違いを確認するだけです。私のコードは、どの C ランタイム関数にも依存していません。
ありがとう!
elf - elfファイルの変更
elfファイルに新しいフラグを追加したいと思います。このフラグは、プロセス記述子でカーネルが使用できるようになります。私の最初のアイデアはlibelfを使用することでしたが、残念ながらUbuntuにはバグがあるようです。Elfeditはおそらく素晴らしいツールだったでしょうが、Linux、特にUbuntu用のバージョンは見つかりませんでした。
それで、elfファイルにカスタムフラグを追加するための便利なツールが他にあるかどうか誰かが私に提案できるかどうか疑問に思っていますか?
助けてくれて本当にありがとうございます!
c - ELFファイルにセクションを追加する
ELFファイルに任意のセクションを追加できるようにする必要があります。このプログラムではGPLコードを使用できないため、BFDは問題外です。libelf / gelfを使用してセクションを読み取ることはできますが、これらのドキュメントはかなりまばらであり、セクションを追加する方法がわかりません。誰かがこれを行う方法を知っていますか?自分でELFコードを書きたくありません。