私はobjdumpを使って2つの異なるバージョンのバイナリファイルを比較しようとしていて、objdump出力の次の行からシンボル名を解釈する方法を知っている人がいるのだろうかと疑問に思っていた:objdump出力のシンボル名のコンポーネント
102b33bc l O .rodata 00000058 ThisIsMyStruct::ThisIsMyStruct()::C.24
この出力は、次のコマンドを使用して生成された:
objdump -t -C -r -w --special-syms my.bin > my.bin.txt
は私の問題はmy.binの2つの異なるバージョンが同じラインを持っていることですが、一つは終わりC.24を持っており、他が持っています最後にC.12。
C.#は何を表していますか?
ありがとうございます!
GCCの外部シンボルのマングリングは、Itanium C++ ABI(https://mentorembedded.github.io/cxx-abi/abi.html#mangling)に従います。しかし、ここでシンボルはローカルなので、すべての賭けはオフです。 –