Вы можете попробовать запустить утилиту strings
. В GCH определено много внутренних макросов gcc, поэтому я предлагаю вам сделать два дампа со строками:
Сначала для вашего gch: $ strings file.h.gch
и второй - для предварительно скомпилированного пустого файла заголовка (или, если вы помните, что было включено в ваш заголовок - также включите в этот файл)
Затем вы можете сохранить оба дампа и выполнить команду diff:
Для моего примера:
#define d1234
#undef dsgf
int asdfgh(char a);
int ghjkl(int g, int h);
в разнице есть все имена в самом верху:
1074a1075
> asdfgh
1189a1191
> d1234
1200a1203
> dsgf
1287a1291
> ghjkl
как получить структуры и параметры функций - я не знаю.
Но я предлагаю вам использовать этот pch (например, заменить #include "file.h"
на #pragma GCC pch_preprocess "file.h.gch"
) - тогда вы можете сделать дамп дерева и rtl с -fdump-tree-all-all
и -frtl-dump-all-all
. Некоторые из дампов будут содержать больше информации, полученной из потерянного заголовка.