Is there a compiler (for GCC and/or Clang) setting that limits compiled function length?
对于我正在处理的程序,我想限制每个已编译函数的长度,以便在达到功能边界2所需的distance1上提供硬上限。在GCC或Clang中(或者实际上是任何编译器框架/工具链)中是否有一个选项可以启用功能拆分来执行此操作?还是有我不知道阻止的限制?
1这里的距离定义为小于功能的任何离散单位-即指令数量,基本块数量,乔恩·斯凯特(Jon Skeet)头3上的白发数量等。
2我将功能边界定义为"将新堆栈框架推入CPU堆栈的位置"。据我了解,这几乎完全是在调用新函数时发生的(偶尔对于本身不调用其他函数的叶子函数除外)。
3这只是个玩笑。我们都知道,乔恩·斯凯特(Jon Skeet)的头发不会变白-只是垃圾收集,并且实例化了一根新头发,就像新头发一样。
我不知道有任何编译器开关,但是您不需要。使用
可以轻松获得文本段中符号的大小
1 2 | $ nm -AP a.out|awk '$3=="T" {print $2"" $5}' main 000000000000005b |
请注意,这需要解压缩的可执行文件。许多