[英]Is there a compiler (for GCC and/or Clang) setting that limits compiled function length?
对于我正在研究的程序,我想限制每个已编译函数的长度,以便在到达函数边界2所需的距离1上提供硬上限。 在GCC或Clang中(或者实际上是任何编译器框架/工具链)中是否有一个选项可以启用功能拆分来执行此操作? 还是有我不知道防止这种限制的限制?
1距离在此定义为小于功能的任何离散单位,即指令数,基本块数,乔恩·斯凯特(Jon Skeet)头3上的白发数量等。
2我将功能边界定义为“将新堆栈框架推入CPU堆栈的位置”。 据我了解,这几乎完全是在调用新函数时发生的(偶尔对于本身不调用其他函数的叶子函数除外)。
3这只是个玩笑。 我们都知道,乔恩·斯基特(Jon Skeet)的头发不会变白-只是垃圾收集,并且实例化了一根新头发,就像新头发一样。
我不知道有任何编译器开关,但是您不需要。 可以使用nm
轻松获得文本段中符号的大小:
$ nm -AP a.out|awk '$3=="T" {print $2 " " $5}'
main 000000000000005b
请注意,这需要未压缩的可执行文件。 许多nm
实现都提供了其他选项,例如用十进制数字代替十六进制,这使得比较数字变得更加容易。 将其转换为脚本以输出大于X的函数:-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.