E se a biblioteca dinâmica do AIX importar um dos símbolos do lugar errado?

1

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.

    
por Alexander Tumin 08.10.2018 / 19:28

0 respostas