Вы можете использовать опцию -dump
инструмента abi-Compliance Checker для анализа сигнатур функций и методов из ваших файлов заголовков:
abi-compliance-checker -lib NAME -dump DESC.xml -headers-only -stdout > api.dump
XML-дескриптор (DESC.xml
) имеет следующий вид:
<version>
VERSION
</version>
<headers>
/path(s)/to/headers/
</headers>
Инструмент работает следующим образом:
- Вызов
GCC
с -fdump-translation-unit
и набор автоматически сгенерированных -I...
опции для заголовков, указанных во входном XML-дескрипторе; - Анализировать дамп AST, сгенерированный
GCC
; - Создать сигнатуры функций и определения типов в Data:: Dumper или формат XML (если предусмотрена дополнительная опция
-xml
).
Пример сигнатуры функции int BZ2_bzRead ( int *bzerror, BZFILE *b, void *buf, int len )
из заголовка bzlib.h
выглядит следующим образом:
'228' => {
'Header' => 'bzlib.h',
'Line' => '160',
'Param' => {
'0' => {
'algn' => '4',
'name' => 'bzerror',
'type' => '30'
},
'1' => {
'algn' => '4',
'name' => 'b',
'type' => '16'
},
'2' => {
'algn' => '4',
'name' => 'buf',
'type' => '68'
},
'3' => {
'algn' => '4',
'name' => 'len',
'type' => '41'
}
},
'Return' => '41',
'ShortName' => 'BZ2_bzRead'
},