Что за проход в GCC обрабатывает константные строки? - PullRequest
0 голосов
/ 06 июня 2019

Какое имя в GCC используется для обработки массива строк в разделе .rodata? Я хотел бы написать плагин для перехвата также строк в исходном коде, я знаю, что в binutils есть куча инструментов, способных достичь той же цели, но что если мы захотим выполнить некоторую постобработку, например, проверить слова.

1 Ответ

0 голосов
/ 09 июля 2019

Секция данных только для чтения, также известная как .rodata, генерируется после последнего шага всех проходов rtl.Вы можете увидеть, как это работает, в файле varasm.c, который лежит в папке /gcc.Посмотрите на раздел

section *
default_function_rodata_section (tree decl) 

и ниже.Вы также можете легко добавить некоторые функции для перехвата данных в файл asm или другой выходной файл здесь или написать внешнюю функцию.

varasm.c файл обрабатывает генерацию всего кода ассемблера , кроме инструкция функции.Это включает объявления переменных и их начальные значения.

...