Estou experimentando a variável ELF RUNPATH para dependências dinâmicas. Ao longo do caminho, recebi uma cópia do bash binário com RUNPATH alterado, executando ldd no retorno:
$ ldd ./bash
linux-vdso.so.1 => (0x00007ffe6bdf9000)
libtinfo.so.5 (0x00007fbf8b97c000)
libdl.so.2 (0x00007fbf8b776000)
libc.so.6 (0x00007fbf8b3a5000)
/lib64/ld-linux-x86-64.so.2 (0x00007fbf8bba7000)
- por que não há caminhos para as dependências (do meu RUNPATH personalizado) ou not found , o que isso significa?
Meu palpite seria:
ldd não consegue encontrar os arquivos, mas eles estão na memória (os números entre parênteses são os endereços), e ldd fica sabendo de alguma forma, através de algum mecanismo de caixa, está correto? Mas então como é que ldd não encontra arquivos? Se não conseguir buscá-los a partir de RUNPATH , deve proceder para diretórios padrão, certo?
Hoje ele encontra os arquivos (por isso, foram os prêmios de ontem?):
$ cd dir_chroot2/
$ ldd ./bash
linux-vdso.so.1 => (0x00007ffed3530000)
libtinfo.so.5 => /home/.../dir_chroot2/./libtinfo.so.5 (0x00007f72c14a8000)
libdl.so.2 => /home/.../dir_chroot2/./libdl.so.2 (0x00007f72c12a1000)
libc.so.6 => /home/.../dir_chroot2/./libc.so.6 (0x00007f72c0ed0000)
/lib64/ld-linux-x86-64.so.2 (0x00007f72c16d4000)
- mas ld-linux-x86-64.so.2 ainda é obtido do diretório do sistema, embora bash binary e todas as bibliotecas acima dele tenham RUNPATH=$ORIGIN/ . Por que é tão? O linux-vdso.so.1 liga de alguma forma?
Tags dynamic-linking ld