在编译时自定义/重写符号名

Customizing/overriding symbol names at compile time

本文关键字:重写 符号 自定义 编译      更新时间:2023-10-16

我对重写编译器符号名很感兴趣,通常使用像这样的字符串自动生成:

modules::ModuleAPI::ModuleAPI()变为_ZN7modules9ModuleAPIC2Ev

我知道有一个别名属性:

void name1() __attribute__((alias ("name2")));

我更愿意做同样的事情,除了混叠,完全覆盖它。

这可能吗?

是的,gcc支持__asm__关键字:

void name1() __asm__("name2");