Описание тега gcc-plugins

Для вопросов / ответов, касающихся подключаемых модулей GCC (сборник компиляторов Gnu). Этот API позволяет вам получить доступ к внутренним компонентам компилятора для выполнения анализа и модификации кода с помощью модулей, загружаемых во время выполнения. Вопрос по общему использованию плагинов в порядке, например, как передавать аргументы. Тег НЕ предназначен для создания других плагинов приложений, которые компилируются с помощью gcc.
0 ответов

Как добавить встроенную функцию в плагин GCC?

Возможно ли для плагина GCC добавить новую встроенную функцию? Если так, как это сделать правильно? Версия GCC 5.3 (или новее). Код, который компилируется и обрабатывается плагином, написан на C. В обосновании плагинов GCC на gcc-melt.org упоминаетс…
01 сен '16 в 19:00
1 ответ

Используйте плагины gcc для изменения порядка объявления переменных

Я знаю, что это очень трудно сделать, и что мне следует этого избегать, но у меня есть свои причины для этого. Я хочу изменить порядок некоторых объявлений полей во время компиляции, например: class A { char c; int i; } должен обратиться к: class A …
07 апр '15 в 09:57
0 ответов

Как попросить gcc повторить отладочную информацию типа после его изменения?

В ядре Linux есть плагин gcc, который перетасовывает элементы некоторых структур во время перехвата события PLUGIN_FINISH_TYPE. Он отлично работает на создаваемом двоичном файле (порядок членов рандомизирован), но не влияет на информацию отладки два…
20 июн '19 в 17:46
1 ответ

Создание настраиваемого атрибута gcc для конкретных функций прибора: белый, а не черный список

Я использую gcc -finstrument-functions вариант. Чтобы минимизировать накладные расходы, я хочу использовать только несколько функций. Тем не менее, GCC позволяет только черный список функций (с no_instrument_function атрибут, или путем предоставлени…
28 июл '19 в 12:48
1 ответ

Как скомпилировать gcc-плагин для создания файла общих объектов?

Я установил gcc-plugin в свой бит Ubuntu 16.10-32, и установка была выполнена правильно: >$ gcc -print-file-name=plugin /usr/lib/gcc/i686-linux-gnu/6/plugin Однако, когда я пытаюсь скомпилировать плагин, я получаю огромное количество ошибок, пред…
10 окт '19 в 11:48
1 ответ

Использование плагинов gcc с кросс-компилятором, неопределенный символ

Я пытаюсь понять, можно ли использовать плагин gcc в кросс-компиляторе ARM (arm-none-eabi-gcc). Однако я сталкиваюсь с ошибками компилятора и задаюсь вопросом, возможно ли то, что я пытаюсь сделать. Плагин, который я пытаюсь настроить: https://githu…
31 янв '20 в 21:32
0 ответов

Получение соответствующего узла Gimple для регистра в RTL

Я пытаюсь понять расширенный проход в GCC. Я пишу плагин для анализа кода до и после прохода расширения. Временные переменные Gimple (переменные, созданные с целью преобразования в 3-адресный код) на этом проходе преобразуются в регистры. Я хочу зна…
26 фев '20 в 11:23
0 ответов

Как добавить ассемблерный код в пролог и эпилог всех функций с инструментальным кодом?

Каждый .Я работаю над проектом C, и мне нужен способ добавления кода сборки в пролог и эпилог каждой функции в исходном коде. Позвольте привести пример. Это исходный код: int main(int argc, char *argv[]){ char buff[20]; int a = 20; printf("Variable …
27 апр '20 в 11:33
0 ответов

Динамическое определение виртуального метода с помощью API плагина GCC

Мне сложно создать плагин GCC (8.3.0). Я пытаюсь определить виртуальный метод для определенного пользователем класса, используя некоторую информацию, предоставленную [[C++11::attributes]]. Пока что я пытался сделать - прежде чем переходить к более с…
06 окт '19 в 19:19
0 ответов

Уровень области видимости переменных с плагином GCC

Я пытаюсь написать простой плагин GCC, который идентифицирует все объявления переменных (глобальные и локальные) и их область действия, до сих пор я смог определить только локальные / глобальные. Я бы хотел сделать что-то вроде: int a = 3; /* Scope …
11 дек '19 в 04:42
0 ответов

КОНФИГУРАЦИЯ GCC в ядре 5.5

У меня проблема с ПЛАГИНАМИ GCC в ядре новостей. Я подготовил собственное ядро ​​Linux, чтобы усилить безопасность моей будущей компиляции, но я не могу активировать следующие параметры: CONFIG_GCC_PLUGINS CONFIG_GCC_PLUGIN_RANDSTRUCT CONFIG_GCC_PLU…
28 янв '20 в 15:27
0 ответов

РЕШЕНО: Ошибка построения программы с использованием плагина gcc из дерева исходных кодов ядра Linux.

Я пытаюсь использовать плагин grsecurity gcc, который я нашел в их неофициальном дереве исходных текстов ядра Linux (respectre_plugin/один). Моя версия GCC - 4.7, я модифицировалscripts/gcc-plugins/Makefile чтобы он скомпилировал плагин, и я собрал …
21 апр '20 в 18:23
1 ответ

Проблема с компиляцией плагина GCC

Я пытаюсь скомпилировать собственный модуль ядра (из этого git), который зависит от плагина, изначально скомпилированного внутри git (он находится в $git/buildtools/gcc-nexmon-plugin/nexmon.c). Изначально это дерево предназначалось для сборки непоср…
03 июн '20 в 13:26
0 ответов

Как получить выписку в GIMPLE?

Я изучаю разработки gcc-plugin. Теперь у меня есть функцияprint_gimple_stmt(stderr, stmt, 0, TDF_SLIM)который может распечатать детали заявления, например D.2579 = argc + 100;но мне нужно найти способ сохранить его в строковой переменной, а затем мн…
08 июн '20 в 11:05
0 ответов

Как я могу создать вызов функции в представлении GIMPLE?

Я пытаюсь создать вызов функции в Gimple.Поскольку документация по этому поводу очень скудная, я не понимаю, как действовать дальше.В частности, я хотел бы знать, как построить эту функцию: uint32_t *m_addr = mmap(0,8, PROT_READ | PROT_WRITE , MAP_P…
18 май '20 в 17:52
0 ответов

Есть ли способ получить тип перечисления значения в древовидной структуре GCC?

Я пишу плагин GCC для GCC 9, и у меня возникла следующая проблема: Представьте себе простую инициализацию: enum en{ENUM_VAL1, ENUM_VAL2, ...}; int a = ENUM_VAL1; Я бы хотел, чтобы он мог извлекать информацию о том, что значение a является значением …
21 фев '20 в 15:39
1 ответ

Отладка плагина gcc

В настоящее время я пишу плагин для gcc (9.2) и ищу способ отладить этот плагин. Для этого я построил gcc, используя эти инструкции, чтобы включить символы отладки для gcc. Затем я пытаюсь отладить плагин, вызывая gcc внутри gdb с помощью следующей …
11 дек '19 в 16:59
0 ответов

Плагин GCC: можно ли переместить последовательность базового блока одной функции в базовый блок другой функции?

Я пытаюсь создать плагин для gcc, который позволяет вам инструментировать пролог и эпилог функции.Код инструментария вставлен в две функции "instrument_entry" и "instrument_exit". Эти две функции записаны в файле с именем Instrumentation.h, который …
0 ответов

Можно ли вставить код в каждую или выбранные функции с помощью плагина gcc/clang?

Чтобы использовать gprof, мы передаем флаг -pg в GCC, чтобы некоторый инструментальный код был вставлен в каждую функцию. Меня интересует возможность вставки пользовательского кода в каждую функцию. Например, чтобы измерить время критического пути, …
27 янв '21 в 03:07
1 ответ

Какова цель __mptr в последнем макросе container_of?

Я читаю ядро ​​Linux 5.17.5 и теперь смотрю на макрос container_of(). /** * container_of - cast a member of a structure out to the containing structure * @ptr: the pointer to the member. * @type: the type of the container struct this is embedded in.…
01 май '22 в 04:53