Обновлять

Обновлять

Я экспериментирую с RUNPATHпеременной ELF для динамических зависимостей. По пути я получил копию bashбинарного файла с измененным RUNPATH, запуск lddна нем возвращает:

$ 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)

-- почему нет путей к зависимостям (из моего кастома RUNPATH) или not foundчто это значит?

Я бы предположил: lddне может найти файлы, но они есть в памяти (цифры в скобках - адреса), и lddузнает об этом каким-то образом, через какой-то кэш-механизм, это правильно? Но тогда почему lddне находит файлы? Если не получается извлечь их из RUNPATH, то следует перейти к стандартным каталогам, верно?

Обновлять

Сегодня он находит файлы (так это были вчерашние кэши?):

$ 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)

-- но ld-linux-x86-64.so.2все равно извлекается из системного каталога, хотя bashбинарник и все библиотеки выше него имеют RUNPATH=$ORIGIN/. Почему так? linux-vdso.so.1Связывает ли это как-то?

Связанный контент