问题标签 [gcc-plugins]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
332 浏览

gcc - How to register a GIMPLE_PASS?

I'm trying to do a simple plugin example like this:

But GIMPLE_PASS is not a predefined event in gcc-plugin.h and I know I have to do something with PLUGIN_PASS_MANAGER_SETUP and struct pass_data in tree-pass.h, but I don't know exactly how and I didn't find any examples.

Somebody would show me how? iThanks.

0 投票
1 回答
725 浏览

c++ - 在 gimple 中插入函数调用

我在弄清楚如何做下一件事时遇到了问题。

我有以下代码:

测试.cpp

我想把它变成下一个:

带有 gcc 插件。

在我的插件中不起作用的代码是这个:

然后,当我使用插件编译 test.cpp 时,出现下一条错误消息:

/tmp/cc2VRszt.o: 在函数main': test.cpp:(.text+0x60): Undefined reference to函数中'

任何人都可以帮助我吗?

0 投票
1 回答
412 浏览

macos - 在 Mac OS X 10.9.4 上构建 GCC 插件

我正在尝试重新构建一个简单的 GCC 插件(在 GNU Linux 上构建良好)。

我打算使用我已经在 Mac OS X 下安装的 GNU GCC v4.6.3 编译插件。

Makefile 内容如下:

我收到以下错误:

GCC 编译器是使用以下配置构建的:

0 投票
5 回答
884 浏览

c++ - 使用 gcc 插件插入全局变量声明

我想知道是否可以使用 gcc 插件插入全局变量声明。例如,如果我有以下代码:

测试.c:

我想把它变成:

那可能吗?如果可能的话,在哪一关,我该怎么做?

0 投票
1 回答
385 浏览

gcc - Gcc 插件 api 从 4.8 到 4.9

我正在尝试将我的插件从 gcc4.8.3 更新到 GCC 的 4.9.1 版本,界面似乎有所改变,我不再了解一些基本的东西。我没有在 GCC 文档上找到任何关于如何使用新界面注册通行证的插件或互联网示例。我只想在我的插件中安装一个新的通行证,所以我正在填充结构 register_pass_info 并以这种方式将其传递给 register_callback :

我不明白如何填写结构 register_pass_info 的字段“pass”。现在看来,这个字段是一个 opt_pass 类,不再是一个简单的结构,与 GCC 的内部传递相同的类。所以我很自然地尝试复制内部传递正在做的事情来创建一个新传递,我为我的传递做了这个:

但我不明白我需要实例化我的通行证的参数 gcc::context 是什么。此外, opt_pass 符号在 pass_manager 中定义,其中包括不在插件 API 中的“pass-instances.def”

也许你们中的一些人有一个小例子可以让我重回正轨,或者给我指出一些我错过的文档。

0 投票
1 回答
2241 浏览

gcc - 如何让 gcc LTO 与图书馆档案一起工作?

gcc 专家,

我正在尝试将 gcc lto 与库档案一起使用,因为我的系统(RedHat Enterprise Linux 5.7)附带的 gcc 不适用于 -flto(对于我的 Ubuntu 14.10 也不适用),所以我从头开始构建 binutils && gcc。

这是我所做的:
1. 使用 2 构建 binutils-2.22 。使用--enable-plugins
3 构建 gcc-4.7.2 --with-plugin-ld=/path/to/ld/built/in/step1 --enable-lto
。然后进行以下简单测试:

以下内容可以foo()内联:

虽然以下不能:

由于我正在开发的产品的构建系统必须使用档案,那么我可以做些什么来让 lto 与图书馆档案一起工作?

您的帮助将不胜感激。

非常感谢。

0 投票
2 回答
346 浏览

python - GCC Plugins、GCC Melt 或 gcc Python 插件来编写 gcc 扩展

我需要编写一个 GCC 扩展,我正在尝试使用带有 GCC 的 GCC Plugins API,但它的文档记录很差,而且很难使用,我找不到任何使用它的最新版本的示例.. .

我读到有很多其他方法可以创建 gcc 扩展,例如GCC MeltGCC python 插件,谁能告诉我它们各自的优点/缺点,这 3 种创建插件的方法之间有什么主要区别吗?

0 投票
2 回答
886 浏览

c++ - 使用 GCC 插件打印调用的函数名

我需要打印程序的调用函数的名称,gcc plugins 为此我创建了一个将在之后调用的传递ssa pass,我已经启动了插件,我可以循环它的语句,使用gimple_stmt_iterator

如何使用其 gimple 节点打印被调用函数的名称?我还可以打印其他信息,例如调用它的行号、调用它的函数的名称等吗?

0 投票
2 回答
197 浏览

gcc - 获取使用gcc Plugin编译的c++文件的函数个数

我正在使用 GCC 插件创建一个通行证,这是我的通行证:

所以 toto() 为每个定义的函数执行toto(),如果没有,是否可以在执行时获取所有函数的数量,我怎样才能对整个文件只执行一次传递,并使用 FOR_EACH_FUNCTION() 循环遍历所有函数?

0 投票
2 回答
315 浏览

c++ - 使用 gcc 插件修改变量声明的顺序

我知道这很难做到,我应该避免这样做,但我有我的理由。我想在编译时修改一些字段声明的顺序,例如:

必须转向:

如果我选择交换 and 的顺序ic我想知道如何更改location具有它的字段声明的tree

任何人都知道我该怎么做?谢谢 !

我使用g++ 4.9.2版本的插件