0

Itanium ABI 有一些压缩标识符以进行名称修改的规则:例如,给定

namespace foo {
  struct string { 
    void f();
  };
};

该函数std::string::f()被编码为_ZN3foo6string1fEv但给定

namespace std {
  struct string { 
    void f();
  };
};

该函数foo::string::f()被编码为_ZNSt6string1fEv更短一些。还有其他快捷方式,例如 for std::allocatorstd::basic_string等。

我的问题是:有没有办法为我自己的图书馆指定这样的规则?例如,我有很多包含

_ZZN5boost9container16allocator_traitsINS0_22small_vector_allocatorISt4pairIhhENS0_13new_allocatorIvEEvEEE9constructIS4_JRKS4_EEEvRS7_PT_DpOT0_E5value

_ZGVN5boost4asio6detail30execution_context_service_baseINS1_22deadline_timer_serviceINS1_18chrono_time_traitsINSt6chrono3_V212system_clockENS0_11wait_traitsIS7_EEEEEEE2idE

等等......这无缘无故地让我的二进制文件膨胀。

抢先回答问题:

  • 我已经使用压缩的调试信息,这还不够
  • 我必须导出这些符号(但可以假设动态调用它们的代码知道我将进行的任何更改,我控制着整个工具链)
4

0 回答 0