Eu tenho uma biblioteca PPC64 AIX herdada mylib.so
.
Inspecionando a saída dump -Tv
, percebi que espera que o símbolo Foo
esteja presente na biblioteca oldfoo.so
ainda mais antiga. No entanto, parece que após o lançamento do novo foo, eles moveram Foo
símbolo para outro soname: foocommon.so
e oldfoo.so
não o exporta mais, mas apenas importa de foocommon.so
.
E mylib.so
é assim quebrado, o vinculador dinâmico se recusa a trabalhar com binário vinculado a mylib.so
, dizendo que Foo
não é exportado de oldfoo.so
.
Não é verdade, agora está em foocommon.so
. Posso de alguma forma editar o binário mylib.so
, mudar o nome da localização real do símbolo Foo
ou, caso contrário, dizer ao vinculador dinâmico onde procurar?
Eu tentei configurar variáveis de ambiente:
export LDR_PRELOAD=foocommon.so
export LDR_PRELOAD64=foocommon.so
esperando que a abordagem normal do Linux funcione, mas isso não alterou o erro produzido pelo linker, ainda se recusando a executar o meu executável, pois Foo
symbols não é exportado por oldfoo.so
.
Isso é especialmente obscuro, já que não está claro se alguém ainda tem mylib.so
fontes para recompactá-lo e vinculá-lo novamente.