glibc 标准库中的 libc_hidden_proto 有什么作用?
What does libc_hidden_proto in the glibc standard libraries do?
我试图在 unistd.h
中查找 getpgrp()
函数的原型,但找不到。该文件中唯一包含 getpgrp 的行是 libc_hidden_proto (tcgetpgrp)
行,我假设这是一个宏,但我不知道它的作用。
我用谷歌搜索,但在网络上找不到任何关于 libc_hidden_proto
实际作用的解释。任何关于该宏在 glibc 中的用途的解释将不胜感激。
您不小心查看了 内部 副本 (include/unistd.h
) 而不是 public 副本 (posix/unistd.h
)。不,我也不明白 glibc 的源代码是如何组织的。
The following macros are used for PLT bypassing within libc.so
(and if needed other libraries similarly).
First of all, you need to have the function prototyped somewhere,
say in foo/foo.h:
int foo (int __bar);
If calls to foo within libc.so should always go to foo defined in libc.so,
then in include/foo.h you add:
libc_hidden_proto (foo)
我试图在 unistd.h
中查找 getpgrp()
函数的原型,但找不到。该文件中唯一包含 getpgrp 的行是 libc_hidden_proto (tcgetpgrp)
行,我假设这是一个宏,但我不知道它的作用。
我用谷歌搜索,但在网络上找不到任何关于 libc_hidden_proto
实际作用的解释。任何关于该宏在 glibc 中的用途的解释将不胜感激。
您不小心查看了 内部 副本 (include/unistd.h
) 而不是 public 副本 (posix/unistd.h
)。不,我也不明白 glibc 的源代码是如何组织的。
The following macros are used for PLT bypassing within libc.so
(and if needed other libraries similarly).
First of all, you need to have the function prototyped somewhere,
say in foo/foo.h:
int foo (int __bar);
If calls to foo within libc.so should always go to foo defined in libc.so,
then in include/foo.h you add:
libc_hidden_proto (foo)