Atualizar

Atualizar

Estou experimentando a RUNPATHvariável ELF para dependências dinâmicas. Ao longo do caminho, obtive uma cópia do bashbinário com change RUNPATH, rodando lddnele retorna:

$ 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 existem caminhos para as dependências (do meu custom RUNPATH) ou not found, o que isso significa?

Meu palpite seria: lddnão consigo encontrar os arquivos, mas eles estão na memória (os números entre parênteses são os endereços), e lddfico sabendo de alguma forma, por meio de algum mecanismo de caixa, está correto? Mas então por que lddnão encontra arquivos? Se não conseguir buscá-los RUNPATH, ele deverá prosseguir para os diretórios padrão, certo?

Atualizar

Hoje ele encontra os arquivos (então foram os cashes 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.2ainda é obtido do diretório do sistema, embora basho binário e todas as bibliotecas acima dele tenham RUNPATH=$ORIGIN/. Por que é tão? Vincula linux-vdso.so.1isso de alguma forma?

informação relacionada