2016-05-15 10 views
1

Ich habe 2 Objektdateien, die ähnlich sein sollen wie sie aus 2 verschiedenen Kompilierungszeiten von der gleichen Code-Basis sind. Ich wollte ihre nm-Ausgänge vergleichen. Allerdings kann ich nicht, da es viele Namen Mangling gibt. Aufgrund des Namens Mangling scheinen die Ergebnisse unterschiedlich zu sein, aber sie sind es tatsächlich nicht. Ich habe versucht, die folgenden Schritte zu mirWie nm Ausgänge zu vergleichen

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 

ich die oben vergleichen zu helfen als auch für die zweite nmFile2 tat.

Allerdings gibt es am Anfang immer noch eine Menge Namensprobleme, die ich nicht entfernen kann, was mich glauben lässt, dass es keine einfache Möglichkeit gibt, nm-Ausgaben zu vergleichen. Beachte, dass ich mich nur mit dem Startnamen beschäftige, da ich die Ergebnisse in gvim -d sehen könnte und ich in der Lage wäre, Unterschiede manuell zu identifizieren. Wenn es ein direktes Werkzeug gibt, wäre es das Beste.

Bitte beachte, dass ich versucht habe, nm mit der Option -C zu verwenden, um mich ohne Namen Mangling zu zeigen, aber es zeigt immer noch eine Menge Name Mangling.

Antwort

1

Verwendung C++ filt de-mangle Symbolen wie

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

dies versuchte .. es hat noch verstümmelte Symbole – MAG

+0

welche Plattform? kann auf Sample-Binär zugreifen? –

+0

Sorry wird nicht in der Lage sein, Binär zu teilen. Ich benutze Linux mit g ++. die OS-Spezifikationen sind: Händler-ID: RedHatEnterpriseClient Beschreibung: Red Hat Enterprise Linux-Client Release 5.10 Release: 5.10 – MAG