См. этот ответ .
int Func() __asm__("_Func@X");
Это заставит GCC назвать символ _Func@X
независимо от того, что он сделал бы нормально.
Да, @
особенный: он используется для управления версиями символов. Я думал, что __asm__("...@...")
раньше работал, но я думаю, что это больше не так.
int Func() __asm__("_Func");
__asm__(".symver _Func, _Func@X");
Это должно сопровождаться файлом версии скрипта , например:
1 {
global:
_Func;
};
передается gcc -Wl,--version-script=foo.version
при связывании.