Por que o ldd não mostra caminhos de nomes de arquivos para dependências?

2

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?

Atualizar

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?

    
por xealits 01.11.2016 / 21:52

0 respostas