realocações de texto apesar de -fPIC?
Estou tentando recompilar uma pilha de software de tamanho decente (duvida) para ARM. Depois de duas semanas, achei que finalmente consegui, porque as bibliotecas que tinham realocações de texto não estavam mais tendoarmeabi
, armv5te
, armv7-a
. Contudo,armv7-a-neon
ainda os tem ...
Eu sei que vincular contra bibliotecas estáticas ou compartilhadas que contêm realocações de texto também as introduzirá na minha biblioteca e para lutar contra o que se deve usar-fPIC
em seus CFLAGS enquanto recompila tudo para criar código independente de posição. Tudo o que foi feito, eu construí o FFMPEG sem realocações de texto ...
O que eu não entendo é o seguinte:Se estou usando o mesmo conjunto de arquivos de origem para todos os arcos e verificando manualmente manualmente se os arquivos .a têm realocações de texto, por que apenas uma única realocação de texto aparece para o ARMv7 NEON?
Estou verificando usandoreadelf
igual areadelf -a <libame.a> | grep TEXTREL
para ambos.a
e.so
libs.
devshark@ubuntu:~/SCRATCH/doubango_env/doubango/android-projects/output/gpl/armv7-a-neon/lib$ readelf -a libtinyWRAP.so | grep TEXTREL
0x00000016 (TEXTREL) 0x0
0x0000001e (FLAGS) SYMBOLIC TEXTREL BIND_NOW
Como encontro o culpado que está introduzindo as realocações de texto no meu armv7neon.so
biblioteca?
Estou usando o NDK r12b. Aqui está um pastebin de toda a saída da compilação: OK, sem pastie ou pastebin, pois eles não permitem 2,1 MB de texto.
Ótimo. Então, alguma idéia de por que as realocações de texto estão aparecendo apenas para o NEON?
A pergunta pode ser semelhante a esta, exceto que eu não tenho realocações para x86 também.Por que o NDK está gerando biblioteca compartilhada para x86 com realocação de texto, mesmo após a configuração do sinalizador -fPIC?