RTTI元数据存储在可执行文件中的哪个位置?

时间:2017-09-14 10:20:32

标签: windows delphi portable-executable rtti

我正在查看RTTI的文档,其中说:

  

如果启用了RTTI生成,则生成的二进制文件包含特殊元数据,其中包含有关类型的信息(例如,类祖先,声明的字段,带注释的属性)。

PETI文件中存储的RTTI元数据在哪里,它具有什么结构?

1 个答案:

答案 0 :(得分:0)

Windows PE文件没有存储RTTI的标准部分,其格式和存储位置完全取决于编译器供应商。

即使它没有指定存储格式(只有内存布局),Itanium C++ ABI specification也是一个很好的起点,如果你想了解更多,可以转到GCC源代码。 This answer显示GCC v3 +在除Windows之外的任何地方都使用此ABI,而我猜测它们会尝试遵循Microsoft格式。

具体情况无关紧要,因为编译器可以随时自由更改其实现,如果要与其RTTI数据进行交互,则必须调查特定版本。

对于Delphi特定信息,可能值得查看Free Pascal code,但我不知道它们是否完全兼容ABI。