Я работаю над сценарием, чтобы сделать uClibc пригодным для использования в существующей цепочке инструментов gcc/binutils, ориентированной на glibc, и единственная проблема, с которой я остался, заключается в том, что pthread_cancel
нужно dlopen
libgcc_s.so.1
. Версия, поставляемая с хостом gcc, связана с зависимостью от glibc, поэтому вместо этого я использую параметр -u
ld
для извлечения необходимых символов (и их зависимостей) из libgcc_eh.a
для замены libgcc_s.so.1
:
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
.
Я ищу способ использовать binutils (возможно, objcopy
? или скрипт компоновщика?) либо в файле .so
, либо в исходных файлах .o
в libgcc_eh.a
, чтобы показать эти символы. Это возможно?