objcopy --redefine-syms
オブジェクト ファイル (.o) 内のシンボルの名前を、Mac で binutils のツールに相当するものに変更したいと考えています。
いいえarm-apple-darwin10-objcopy
。私は MacPorts のarm-elf-binutils
ポートを試し、また少し遊んでみましたが、うまくotool
いきsegedit
ませんでした。
アイデアはありますか?
Agner Fog のobjconvの仕事のように聞こえます。
発表から:
これで、以前の投稿で説明したオブジェクト ファイル コンバーターで Mach-O ファイルを完全にサポートできるようになりました。不足している objcopy ユーティリティの代わりとして使用できます。
Objconv は、次の目的で使用できます。
オブジェクト ファイルとライブラリ/アーカイブ ファイルを、すべての x86 および x86-64 プラットフォームの Mach-O、ELF、COFF、および OMF フォーマット間で変換します。オブジェクト ファイル内のシンボル名を変更し、シンボルを弱体化し、シンボルにエイリアス名を追加します。
プラットフォーム間 (Mac、Linux、BSD、Windows) でスタティック ライブラリ ファイル (*.a、*.lib) をビルド、変更、変換します。
オブジェクトファイルと実行ファイルをダンプする
オブジェクト ファイルと実行可能ファイルを逆アセンブルします。非常に優れた逆アセンブラー。
この投稿を死からよみがえらせていることは知っていますが...
私も突然これを行う必要があり、それobjcopy
が OSX で動作しないことを発見したのは少しショックでした。しかし、同じ効果を達成するために使用できると思います:ld
ld -r input.o -o output.o -alias oldsymbol newsymbol -unexported_symbol oldsymbol
これは、新しい名前でシンボルのエイリアスを作成し、古い名前を隠すだけです。
まだ多くのテストを行う機会はありませんが、出力ファイルを見るとnm
、正しいことをしているように見えます.
objconv は現在 ARM では機能しないため、このオプションは iPhone では使用できません。ただし、mac osx x86/x64 では、elf から mach-o まで objconv を使用しても問題ありません。ARMの解決策を見つけたら教えてください