Невозможность разобрать имя символа в библиотеке (nm, objdump, c++filter)

Я заметил неразборчивые функции в моем выводе perf script и изначально думал perfможет делать что-то не так.
Но если заглянуть глубже в некоторые из *.so файлов, мне удалось воспроизвести проблему с c++filt -t, nm -C, а также .

Я немного не понимаю, что могло пойти не так в процессе демонтажа.
Один из символов, который не удаляется, это:

      _ZZNK5Gaudi10Functional7details16MultiTransformerIFSt5tupleIJSt6vectorIN4LHCb14VPLightClusterESaIS6_EESt5arrayIjLm53EEEERK12EventContextRKNS5_8RawEventERK4DeVPENS0_6Traits4use_IJNS5_7DetDesc21useConditionHandleForIJSI_EEENSM_11BaseClass_tINSO_23ConditionAccessorHolderI10FixTESPathINS_9AlgorithmEEEEEEEEELb0EE7executeESE_ENKUlDpRT_E_clIJK21DataObjectWriteHandleIS8_S8_EKS15_ISA_SA_EEEEDaS12_

Библиотека была скомпилирована с GCC 10.1. Но если я скомпилирую с clang 11, я могу найти тот же символ в objdump -D -C.

Я сейчас немного в тупике, поэтому любые предложения относительно того, что я мог бы проверить, были бы очень признательны. :)

1 ответ

Resolved by using the tool suggested in the comments.

llvm-cxxfilt also works and might be already available on some machines.

c++filt, nm, perf, and objdump use functionality that is implemented in libiberty which is part of GCC.Thus I've filed a bug report there: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102851

Другие вопросы по тегам