在Linux中。每对dlsym(3)Linux手册页,为什么dlsym()返回的符号值为空?
*Since the value of the symbol could actually be NULL
(so that a NULL return from dlsym() need not indicate an error),*
这是为什么,当可在符号(函数,特别是)是实际NULL?我正在审查代码,并找到一个使用dlerror首先清理,dlsym next和dlerror检查错误的作品。但在调用它之前,它不会检查由此产生的函数为空:
- dlerror();
- a_func_name = ... dlsym(...);
- if(dlerror())goto end;
- a_func_name(...); //从不检查a_func_name == NULL;
我只是一个评论者,所以没有选择只是添加支票。也许作者知道NULL永远不会被返回。我的工作是挑战,但不知道什么可以使这个返回一个有效的NULL,这样我就可以检查在这个代码的上下文中是否可以满足这样的条件。没有找到适合Google阅读的内容,除非您想明确说明哪个更好,否则指向好的文档就足够了。
您可以在汇编程序中或使用GCC特定技巧定义给定的符号位于地址0,并且您可以“符合”该符号。 –
明白了。谢谢。 – bokusama