0

データを含む位置相対コードを書きたいと思います。

つまり、printf の絶対アドレスを取得し、単純な文字列を出力する関数です。

パラメータ-fPICを指定してarm-none-eabi-gccを使用して ELF をコンパイルすることで、これを達成することができました。問題は、 objcopyを使用して ELF ファイルをフラット バイナリに変換することです。

objcopyは文字列をファイルの先頭に配置するため、関数の最後に文字列を残す代わりに、データが位置に依存しなくなり、プログラム カウンターによってアドレス指定されます。

何か不足していますか?objcopy が位置に依存しないデータでフラット バイナリを作成することは可能ですか?

編集:

添付の画像で、文字列が関数の最後ではなく関数の上の絶対アドレスにあり、PC によって指されていることがわかります。

4

0 に答える 0