Я не нахожу g ++ "уродливым" или трудным для понимания, хотя я работаю с GCC уже более 8 лет.
В Linux метки функций обычно идут с помощью _ZN. Префикс "_ZN" является токеном, который обозначает искажение имени в C ++ (в отличие от C), за которым следует пространство имен, которому принадлежит функция, затем имена функций и типы аргументов, затем шаблоны если есть.
Пример:
// tests::vec4::testEquality()
_ZN5tests4vec412testEqualityEv
_ZN - C++ mangling, 'N' for member (_ZZ for const or others)
5tests - length (5 chars) + name
4vec4 -length (4 chars) + sub namespace
12testEquality - length (12 chars) + function name
Ev - void argument (none)