Построение плагина g cc для windows на linux - PullRequest
1 голос
/ 29 февраля 2020

Попробуйте построить следующий плагин g cc на linux для windows с кросс-компилятором mingw. Плагины от встроенного компилятора avr также для windows. Адаптирован следующий плагин https://github.com/jcmvbkbc/avr-flash-vtbl.

#include <gcc-plugin.h>
#include <cp/cp-tree.h>

#ifdef _WIN32
__declspec(dllexport)
#endif

int plugin_is_GPL_compatible = 1;

void fn(void *gcc_data, void *user_data)
{
    TYPE_ADDR_SPACE (TREE_TYPE (vtbl_type_node)) = 1;
    TYPE_ADDR_SPACE (TREE_TYPE (vtbl_ptr_type_node)) = 1;
}

#ifdef _WIN32
__declspec(dllexport)
#endif    

int plugin_init (struct plugin_name_args *plugin_info,
         struct plugin_gcc_version *version)
{
    register_callback("", PLUGIN_START_UNIT, fn, NULL);
    return 0;
}

Вывод во время компиляции и компоновки:

i686-w64-mingw32-g++ -shared -I/home/andreas/omgwtfbbq/win64/bin/../lib/gcc/avr/9.2.0/plugin/include -Wl,--export-all-symbols /home/andreas/
omgwtfbbq/win64/bin/../lib/gcc/avr/9.2.0/plugin/cc1plus.exe.a avr-flash-vtbl.c -o avr-flash-vtbl.so -I./
/usr/bin/i686-w64-mingw32-ld: /tmp/cc28ZVde.o:avr-flash-vtbl.c:(.text+0x4): undefined reference to `cp_global_trees'
/usr/bin/i686-w64-mingw32-ld: /tmp/cc28ZVde.o:avr-flash-vtbl.c:(.text+0x10): undefined reference to `cp_global_trees'
/usr/bin/i686-w64-mingw32-ld: /tmp/cc28ZVde.o:avr-flash-vtbl.c:(.text+0x44): undefined reference to `register_callback'
collect2: error: ld returned 1 exit status
make: *** [Makefile:11: avr-flash-vtbl.so] Fehler 1

Флаги компилятора адаптированы с https://gcc.gnu.org/onlinedocs/gccint/Plugins-building.html. Кто-нибудь уже сталкивался с такой проблемой?

1 Ответ

0 голосов
/ 01 марта 2020

Проблема решена. Изменен компилятор хоста с i686-w64-mingw32-g ++ на x86_64-w64-mingw32-g ++ и изменен порядок опций. /home/andreas/omgwtfbbq/win64/bin/../lib/gcc/avr/9.2.0/plugin/cc1plus.exe.a должен go после avr-fla sh -vtbl. c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...