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