【发布时间】:2012-04-30 01:43:12
【问题描述】:
我正在编写一个脚本,以使 uClibc 可以在现有的 glibc 目标 gcc/binutils 工具链上使用,而我剩下的一个问题是 pthread_cancel 需要 dlopen libgcc_s.so.1。主机 gcc 提供的版本链接到依赖 glibc,所以我改为使用 ld 的 -u 选项从 libgcc_eh.a 中提取所需的符号(及其依赖项)以替换 @987654327 @:
gcc -specs uclibc.specs -Wl,-u,_Unwind_Resume -Wl,-u,__gcc_personality_v0 \
-Wl,-u,_Unwind_ForcedUnwind -Wl,-u,_Unwind_GetCFA -shared -o libgcc_s.so.1
原则上我会完成,但libgcc_eh.a 中的所有符号都将其可见性设置为隐藏,因此在输出.so 文件中,它们都变为本地并且不会添加到.dynsym 符号表。
我正在寻找一种在.so 文件或libgcc_eh.a 中的原始.o 文件上使用binutils(可能是objcopy?或链接器脚本?)的方法来取消隐藏这些符号。这可能吗?
【问题讨论】:
标签: c gcc visibility binutils