c/c++语言开发共享将转到标签暴露给符号表

我想知道是否可以将函数中的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

      (0)
      上一篇 2021年1月4日
      下一篇 2021年1月4日

      精彩推荐