Модификация AST-дерева компилятора GCC

Требуется собрать необходимую информацию о единице перевода с помощью плагина для GCC и модифицировать AST на его основе. Я уже понял, как собирать информацию. Но я пока не понимаю, как модифицировать AST до того, как он будет передан в CRT. Информации по этому вопросу очень мало. Подскажите пожалуйста, что почитать на эту тему? Делитесь мыслями, ссылками.

Спасибо.

P.S. Я уже все прочитал по этим ссылкам:

http://en.wikibooks.org/wiki/GNU_C_Compiler_Internals/Print_version http://developer.apple.com/library/mac/#documentation/DeveloperTools/gcc-4.2.1/gccint/index.html#Top


person niXman    schedule 05.08.2011    source источник
comment
Пожалуйста, можно точный пример того, что вы хотите изменить.   -  person osgx    schedule 06.08.2011
comment
На основе собранной информации мне нужно создать таблицу rtti_extended в разделе .data исполняемого файла и интегрировать ее с моим кодом.   -  person niXman    schedule 06.08.2011


Ответы (2)


Набор тестов GCC содержит основные примеры таких модификаций. См. http://gcc.gnu.org/viewcvs/gcc/trunk/gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c и start_unit_plugin.c показывают, как создать переменную. К сожалению, для более серьезных модификаций лучше всего подойдет исходный код GCC.

person g_u_e_s_t    schedule 23.09.2011

Вы связаны с GCC для этого начинания? Компилятор ROSE создан специально для выполнения модификации на уровне исходного кода с последующей передачей полученного кода внутреннему компилятору.

person Phil Miller    schedule 05.08.2011