从C声明生成二进制接口规范

时间:2014-03-18 07:30:50

标签: c gcc clang abi

我正在为我的玩具语言实现外部函数接口。我不想手动编写兼容的声明,而是重用操作系统提供的C头文件。

如何从C头文件中获取特定平台的二进制接口(例如函数参数的类型,结构的内存布局,类型对齐,优化提示)?有没有办法使用Clang或GCC来做到这一点?

1 个答案:

答案 0 :(得分:3)

使用abi-compliance-checker工具的-dump选项。它将创建输入头文件的ABI转储。添加-xml选项以生成XML输出。

在您的情况下,您需要以下输入XML描述符(descriptor.xml):

 <version>
     1.0 /* any version */
 </version>

 <headers>
     /path1/to/headers
     /path2/to/headers
     ...
 </headers>

运行该工具的命令:

abi-compliance-checker -l ANY_NAME -dump descriptor.xml -headers-only

如果未在描述符中指定任何共享库(在XML描述符的-headers-only部分中),则需要命令中的附加<libs>...</libs>选项。