Bug 50190 - Добавить макрос %brp_strip_keep_sections для сохранения секций в ELF-ах
Summary: Добавить макрос %brp_strip_keep_sections для сохранения секций в ELF-ах
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: rpm-build (show other bugs)
Version: unstable
Hardware: all Linux
: P5 enhancement
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-04-26 11:32 MSK by Anton Zhukharev
Modified: 2024-04-28 13:54 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Anton Zhukharev 2024-04-26 11:32:08 MSK
Необходимо для того, чтобы сохранять нестандарные секции в ELF-ах, которые по умолчанию у нас удаляются на этапе strip'а.

Пример изменений в rpm-build в таске 345861 (https://packages.altlinux.org/en/tasks/345861/).
Там же пример использования нового макроса на примере racket-core.

На примере racket-core: хотелось бы _рабочий_ бинарь с секцией .rackboot, но без остального "мусора" (например - /usr/bin/racket).
Comment 1 Arseny Maslennikov 2024-04-26 21:04:06 MSK
Я не вносил и не реализовывал идею стрипать всё неизвестное, но, по моему разумению, мы это сделали по следующим причинам:
— чтобы эти секции, попав в память процесса, не выступали случайно или злонамеренно трамплином для уязвимостей;
— чтобы малыми усилиями уменьшить вероятность непреднамеренной активации всяких misfeature в ELF-подсистеме и тулчейне, где при исполнении определённым образом составленных программ или библиотек автомагически отключаются различные меры безопасности или включаются меры, ведущие к уязвимостям;
— наконец, чтобы ELF-файлы не были толще, чем нужно.
Comment 2 Arseny Maslennikov 2024-04-26 21:04:17 MSK
(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 находится? Какого рода контент? Подлежит ли эта секция отображению в память при работе, и если да, то как?
Comment 3 Anton Zhukharev 2024-04-26 22:52:49 MSK
(Ответ для 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" и бинарь запускается.
Странно - раньше было другое поведение. Видимо, что-то изменилось с того времени и сейчас мне нужно время, чтобы выяснить что конкретно и необходимость этой фичи в целом после такого.
Comment 4 Vitaly Chikunov 2024-04-28 13:54:57 MSK
Есть ли прецеденты в других дистрибутивах?

В Федоре делают так

  %global _find_debuginfo_opts --keep-section .rustc

В `rr` нужно сохранить секцию .page но почему-то примера я не нашел.