[devel] Предотвращение недолинковки

Mikhail Novosyolov mikhailnov на altlinux.org
Вс Май 31 01:14:43 MSK 2020


30.05.2020 20:55, Alexey Tourbin пишет:
> On Sat, May 30, 2020 at 6:31 PM Mikhail Novosyolov
> <mikhailnov на altlinux.org> wrote:
>> Пытаюсь понять, как сделать так, чтобы verify_elf выдал ошибку при обнаружении unresolved symbols, но не ругался на non-LFS functions.
>>
>> Поставил "%global _verify_elf_method sctrict", получил:
>> verify-elf: ERROR: ./usr/bin/audacity: uses non-LFS functions: __open_2 __xstat fcntl fopen getrlimit open readdir
> ...
>> Задача - на этапе сборки убеждаться, что в рантайме не будет ошибки unresolved symbols. Зачем при этом проверять на соответствие LFS, не ясно. Поставить -Wl,--no-undefined не всегда вариант, т.к. многие апстримы допускают недолинковку плагинов. Мне кажется правильным в общем случае проверять, что /usr/bin/*, /usr/lib/*.so* не имеют недолинковки, а то, что лежит в нестандартных директориях вида /usr/lib64/xxx/*.so, не проверять, но при этом иметь возможность принудительно включить их проверку.
> Недолинковка может быть только в shared objects, грубо говоря в *.so*.
> Недолинковку в executables линкер пресекает на стадии линковки
> (поэтому поверять /usr/bin/* особого смысла нет).
Теперь пазл до конца сошелся, спасибо
> В частности и в
> audacity нет таких файлов, которые оправдывали бы проверку:
>
> $ rpmfile audacity-2.3.3-alt2.x86_64.rpm |grep ELF
> /usr/bin/audacity       100755  ELF 64-bit LSB executable, x86-64,
> version 1 (GNU/Linux), dynamically linked (uses shared libs), for
> GNU/Linux 3.2.0, stripped


Подробная информация о списке рассылки Devel