C++のシンボルをdemangleする

なるべくならC++で書かれたプログラムに関わりたくないような気がしているのだが、 当然のようにそういう訳にもいかない。 C++のシンボルをdemangleする方法をメモしておく。

$ nm /usr/lib/libstdc++.so.9
(snip)
0000000000386d90 V _ZGVNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE
(snip)

$ nm -C /usr/lib/libstdc++.so.9
(snip)
0000000000386d90 V guard variable for std::__cxx11::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::id
(snip)
文字列として得られた場合には、c++filtが使える。
$ c++filt _ZGVNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE
guard variable for std::__cxx11::time_get&t;char, std::istreambuf_iterator&t;char, std::char_traits&t;char> > >::id
GCCとclangでは同じフォーマットになっているようなので、区分を気にしなくて良いはずである。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

pkgsrc/mail/dkimproxyを使ってみたが、受信時の動作は、現在の用途には合わないようだった

とある過去に利用者のいたドメインを所有しているのだが、相当に雑な運用だったようで、いまだにSPAM以外の電子メールが来るし、 そのドメインの存在しないアカウントを装った電子メールが多く送信されているようだった。 しばらく、キャッチオール設定をして受信してみて気付いた...