c - 向 gcc 添加通行证?

标签 c gcc compiler-construction

有人给 gcc 添加了通行证吗?或者不是真正的通过,而是添加一个选项来做一些讨厌的事情......:-) ...

关于在从另一个函数返回之前调用一个函数,我仍然有同样的问题...所以我想通过在 gcc 中实现一些东西来调查它...

干杯。

编辑:向编译器添加传递意味着重新访问树以执行一些优化或一些分析。我想模拟 __cyg_profile_func_exit 的行为,但仅限于某些函数并且能够访问原始返回值。

所以我将尝试强化我的问题。我想模拟真正基本的类似 AOSD 的行为。 AOSD 或面向方面的编程可以添加横切关注点(调试是横切关注点)。

int main(int argc, char ** argv) {
  return foo(argc);
}

int foo(int arg_num) { 
   int result = arg_num > 3 ? arg_num : 42;
   return result;
}

int dbg(int returned) {
   printf("Return %d", returned);
}

我想说,我想在函数 foo 执行后触发 dbg 函数。问题是如何告诉编译器修改控制流并执行dbg。 dbg 应该在 return 和 foo(argc) 之间执行 ...

这真的很像 __cyg_profile_function_exit 但只是在某些情况下(__cyg_profile_function_exit 中的问题是您无法轻易查看和修改返回值)。

最佳答案

如果您仍然对添加 GCC 通行证感兴趣,您可以开始阅读 GCC Wiki Material :

关于c - 向 gcc 添加通行证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/731639/

相关文章:

c - 与 CUDA 和 GCC 的链接错误

c++ - 如何让 lambda 函数在 gcc 5+ 上不起作用

javascript - JavaScript 语法部分的左因式分解

c - 汉诺塔中圆盘的移动

c - 如何将地形写入 .raw 文件?

c++ - Makefile 问题 - 部分执行两次

c++ - 如何在 Android NDK GCC 上使用 AddressSanitizer?

C++ 代码翻译和名称查找

c++ - 简单的 "Hello World"样式程序在执行开始后很快关闭

c - 一个 Cruncher 程序