У меня есть 2 объектных файла, которые должны быть похожи, так как они из 2 разных времен компиляции из одной и той же базы кода. Я хотел сравнить их нм выходы. Однако я не могу, потому что есть много искажения имен. Из-за искажения имени результаты кажутся разными, но на самом деле это не так. Я попробовал следующие шаги, чтобы помочь мне сравнить
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
Я сделал то же самое для второго nmFile2.
Однако в начале все еще есть много искажений имен, которые я не могу удалить, что заставляет меня думать, что нет простого способа сравнить выходные данные нм. Обратите внимание, что меня интересует только искажение начального имени, так как тогда я мог видеть результаты в gvim -d, и я мог бы определить различия вручную. Если есть какой-то прямой инструмент, это будет лучше.
Обратите внимание, что я попытался использовать nm с опцией -C, чтобы показать меня без имени Mangling, но он по-прежнему показывает много искажения имен.
используйте фильтр C ++ для удаления символов как
nm xxx.so | c++filt > compare1.txt
nm xxx.so | c++filt > compare2.txt
Других решений пока нет …