32 lines
661 B
Ruby
32 lines
661 B
Ruby
# This file is part of Metasm, the Ruby assembly manipulation suite
|
|
# Copyright (C) 2006-2009 Yoann GUILLOT
|
|
#
|
|
# Licence is LGPL, see LICENCE in the top-level directory
|
|
|
|
|
|
# metasm dasm plugin: try to demangle all labels as c++ names, add them as
|
|
# comment if successful
|
|
|
|
def demangle_all_cppnames
|
|
cnt = 0
|
|
prog_binding.each { |name, addr|
|
|
cname = name.sub(/^thunk_/, '')
|
|
if dname = demangle_cppname(cname)
|
|
cnt += 1
|
|
add_comment(addr, dname)
|
|
each_xref(addr, :x) { |xr|
|
|
if di = di_at(xr.origin)
|
|
di.add_comment dname
|
|
di.comment.delete "x:#{name}"
|
|
end
|
|
}
|
|
end
|
|
}
|
|
cnt
|
|
end
|
|
|
|
if gui
|
|
demangle_all_cppnames
|
|
gui.gui_update
|
|
end
|