のアドレスを決定する:仮想アドレスを使用していない組み込みシステム用:プログラムでこれは私が今してに実行するような状況であるCOFF/ELF/DWARF実行与えられたC/C++変数
、私が持っていますデバッグ情報を含むCまたはC++コードからコンパイルされた実行可能ファイル。それは通常COFFまたはELF/DWARF(私はそれらの2つの混在した)形式です。
実行時に、PC上で、その名前が付いた変数のアドレスを特定したいと思います。 (例えば、 "foo.bar [7] .baz")これは、(この質問の範囲を超えたデバッグプロトコルがあれば)組み込みシステム上で変数の値を読み書きすることができます。明らかに、静的アドレスを持たないため、スタックベースまたはヒープベースの変数はすべてアウトです。
私は2800シリーズDSP用のTIのコンパイラからCOFFファイルを解析するためにこれをC++でやっていましたが、それは苦痛でした。他のプロセッサーの実行可能ファイルが1つか2つあるのと同じことに直面しているので、すでにこの種のことをしているJavaライブラリーがあるかどうかは疑問でした。
更新:(2009年11月18日)有望な手がかり!
誰もEclipse CDT ELFパーサーを使用していますか?
は(Eclipseベース)
TIののCode Composer 4本を使用しているようだ(のjavadoc PGSのいずれかのhttp://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.cdt.doc.isv/reference/api/org/eclipse/cdt/core/model/IBinary.htmlを参照)、そのドキュメントは多分私はそれを使用することができますここで私が把握できる場合のように思えます私の問題を解決する。
残念ながら、GPLは問題にはなりませんが、このアイデアに感謝します。 –
私はそれがまだ私が使っているどんな実装に対してもテストするのに非常に便利だと思います。 –