주위를 둘러 보면서, 나는 C++ 심볼을 엉망으로 만드는 방법보다는 주로 붕괴에 관한 질문을 봅니다. 예, -S
옵션을 사용하여 맹 글링 할 심볼을 포함하는 더미 코드에서 g++
을 호출 한 다음 결과 어셈블리를 검사 할 수 있지만 GCC의 이름 변환에서 좋은 참조 또는 사양을 찾을 수 없었습니다. 내가 찾을 수있는 가장 가까운 것은 http://www.int0x80.gr/papers/name_mangling.pdf에 있었지만 이름 템플릿 인스턴스화가 어떻게 엉망이되는지 또는 왜 _Z3fooIN3BarEE3FooIXT_EEv
이 Foo<Bar> foo<Bar>()
으로 변환 될지를 다루지 않는 것 같습니다 (어떻게 볼 수는 있지만, 대체적으로 IXT_EE
) 이 중 뒤에 N
이 없습니까? 그게 무슨 뜻입니까?). GCC의 소스에서GCC C++ 이름 맹 글링 레퍼런스
5
A
답변
9
견적 (https://github.com/gcc-mirror/gcc/blob/master/gcc/cp/mangle.c는) :
이 파일은 IA64 C++ ABI 사양에 따라 C++ 이름 맹 글링을 구현합니다.
그리고 여기이 규격의 규칙입니다 : https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling
GCC가 사용하는 C++에 대한 아이테니엄 ABI를 검색합니다. –