我想知道是否可以将函数中的goto标签暴露给C / C ++中的符号表
例如,我想从符号表中生成以下代码段的ret标签,并且可以使用标准API(如dlsym())进行引用。
感谢您的帮助!
#include int main () { void *ret_p = &&ret; printf("ret: %pn", ret_p); goto *ret_p; return 1; ret: return 0; }
感谢Marc Glisse关于使用指定标签的内联asm的评论,我可以想出一个问题的解决方法。 以下示例代码段显示了我如何解决问题。
#include int main () { void *ret_p = &&ret; printf("ret: %pn", ret_p); goto *ret_p; return 1; ret: asm("RET:") return 0; }
这将添加符号表条目,如下所示。
jikk@sos15-32:~$ gcc -Wl,--export-dynamic tc -ldl jikk@sos15-32:~$ readelf -s a.out 39: 08048620 0 FUNC LOCAL DEFAULT 13 __do_global_ctors_aux 40: 00000000 0 FILE LOCAL DEFAULT ABS tc 41: 0804858a 0 NOTYPE LOCAL DEFAULT 13 RET 42: 08048612 0 FUNC LOCAL DEFAULT 13 __i686.get_pc_thunk.bx 43: 08049f20 0 OBJECT LOCAL DEFAULT 19 __DTOR_END__ jikk@sos15-32:~$ ./a.out ret: 0x804858a
我将进一步测试这种解决方法,validation这是否会产生任何意外的副作用。
谢谢
以上就是c/c++开发分享将转到标签暴露给符号表相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/541800.html