2016-05-15 14 views
1

2つのオブジェクトファイルが同じコードベースの2つの異なるコンパイル時に存在するので、似ているはずです。私はnm出力を比較したかったのです。しかし、名前のマングリングがたくさんあるので私は傾ける。名前のマングリングの結果は異なるようですが、実際にはそうではありません。私は次のステップを試してみました。比較するのを手伝ってくれました。nm出力の比較方法

1) took last word using command 
sed '/ /s/.* //' nmfile1 >nmfile1_lastword 

2) removed _Z.. starting word with nothing 
sed 's/^_Z...//' nmfile1_lastword > nmfile1_lastword_removed_z 

3) sorted the same 
sort nmfile1_lastword_removed_z > nmfile1_lastword_removed_z_sorted 

私は2番目のnmFile2についても上記を行いました。

しかし、最初に私が取り除くことができない名前のマングリングがたくさんあるので、nm出力を比較する簡単な方法はないと思います。私がgvim -dで結果を見ることができるように、私はmanglingを始めた名前だけに関心があることに注意してください。そして私は手動で違いを特定することができます。直接的なツールがある場合は、それが最適です。

オプションnmでnmを使ってManglingという名前を表示してみましたが、まだ多くの名前のmanglingが表示されています。

答えて

1

使用C++

nm xxx.so | c++filt > compare1.txt 
nm xxx.so | c++filt > compare2.txt 
+0

としてFILTにDE-マングルシンボルが、それはまだシンボルに – MAG

+0

何プラットフォームを台無しにしている。これを試してみましたか?サンプルバイナリにアクセスできますか? –

+0

申し訳ありませんがバイナリを共有することができません..私はg ++でlinuxを使用しています。 OSの仕様は以下のとおりです。RedHatEnterpriseClient 説明:IDディストリビュータのRed Hat Enterprise Linux Clientは、5.10 リリースをリリース:5.10 – MAG

関連する問題