現在(要件ごとに)多数のsrecファイルを作成し、それらをマージするクラスプロジェクトの埋め込みコードに取り組んでいます。このコードをQEMUにロードできるようにしたいのですが、通常はELFファイルでしか満足できません。srecの代わりに元のELFファイルをマージする最も簡単な方法は何ですか。また、srecをELFに変換し直して、結果のファイルをロード可能にする方法も受け入れられます(objcopyは、これを行うとかなり壊れたファイルを生成するようです(他のアーキテクチャはありません)。ツールはm68kバイナリで動作できる必要がありますが、ホストシステムはプレーンx86です。
4 に答える
ELFIO ライブラリを参照してください。WriteObj と Writer の例が含まれています。このライブラリを使用すると、さまざまなホスト プラットフォームで ELF バイナリ ファイルを作成できます。
簡単...仮定しましょう:acとbc
gcc a.c -c -o a.o
gcc b.c -c -o b.o
ld -r a.o b.oc -o c.o
co には、ao と bo の両方が再配置可能な ELF ファイルとして含まれるようになりました。
--イヴァン
おそらくリンカーを使用しますか?
srec ファイルには、リンクされた/配置されたロード可能なバイナリのみが含まれます。elf ファイルには、バイナリの生成時に失われる追加のメタデータが含まれるため、特に elf を再配置可能にする必要がある場合は、elf に戻すことができない場合があります。
元の問題に対する最も簡単な解決策は、実際には SREC の読み込みを qemu に追加することであることがわかりました。ボードのサポートを追加するために既にソースを変更しているので、SREC のサポートはそれほど追加の作業ではありません。私はすでにそうしている誰かから github でいくつかのコードを見つけ、それを私の仕事の基礎として使用しました。
https://github.com/MegabytePhreak/qemu-mcf5307/commit/d3bceb911893b37b2524d6e804bac96691d4d33c