Необходимо для того, чтобы сохранять нестандарные секции в ELF-ах, которые по умолчанию у нас удаляются на этапе strip'а. Пример изменений в rpm-build в таске 345861 (https://packages.altlinux.org/en/tasks/345861/). Там же пример использования нового макроса на примере racket-core. На примере racket-core: хотелось бы _рабочий_ бинарь с секцией .rackboot, но без остального "мусора" (например - /usr/bin/racket).
Я не вносил и не реализовывал идею стрипать всё неизвестное, но, по моему разумению, мы это сделали по следующим причинам: — чтобы эти секции, попав в память процесса, не выступали случайно или злонамеренно трамплином для уязвимостей; — чтобы малыми усилиями уменьшить вероятность непреднамеренной активации всяких misfeature в ELF-подсистеме и тулчейне, где при исполнении определённым образом составленных программ или библиотек автомагически отключаются различные меры безопасности или включаются меры, ведущие к уязвимостям; — наконец, чтобы ELF-файлы не были толще, чем нужно.
(In reply to Anton Zhukharev from comment #0) > Необходимо для того, чтобы сохранять нестандарные секции в ELF-ах, которые > по умолчанию у нас удаляются на этапе strip'а. > > Пример изменений в rpm-build в таске 345861 > (https://packages.altlinux.org/en/tasks/345861/). > Там же пример использования нового макроса на примере racket-core. > > На примере racket-core: хотелось бы _рабочий_ бинарь с секцией .rackboot, но > без остального "мусора" (например - /usr/bin/racket). А что в этом .rackboot находится? Какого рода контент? Подлежит ли эта секция отображению в память при работе, и если да, то как?
(Ответ для Arseny Maslennikov на комментарий #2) > (In reply to Anton Zhukharev from comment #0) > > Необходимо для того, чтобы сохранять нестандарные секции в ELF-ах, которые > > по умолчанию у нас удаляются на этапе strip'а. > > > > Пример изменений в rpm-build в таске 345861 > > (https://packages.altlinux.org/en/tasks/345861/). > > Там же пример использования нового макроса на примере racket-core. > > > > На примере racket-core: хотелось бы _рабочий_ бинарь с секцией .rackboot, но > > без остального "мусора" (например - /usr/bin/racket). > > А что в этом .rackboot находится? Какого рода контент? Подлежит ли эта > секция отображению в память при работе, и если да, то как? Это, конечно, нужно у меня из октября 2022-го нужно спрашивать - сейчас я уже и не вспомню что там такого находится конкретно - в памяти остался только один факт: без этой секции бинарь /usr/bin/racket даже запускаться не собирался (была довольно странная ошибка, в которой ключевым словом было "boot"). Сейчас попробовал сделать элементарный "strip /usr/bin/racket" и бинарь запускается. Странно - раньше было другое поведение. Видимо, что-то изменилось с того времени и сейчас мне нужно время, чтобы выяснить что конкретно и необходимость этой фичи в целом после такого.
Есть ли прецеденты в других дистрибутивах? В Федоре делают так %global _find_debuginfo_opts --keep-section .rustc В `rr` нужно сохранить секцию .page но почему-то примера я не нашел.