Безопасно ли использовать раздел .bss в качестве статического стека?

edit/ Немного поискав и поэкспериментировав, я нашел способ частично сделать это, поэтому я создал учетную запись здесь, чтобы ответить на вопрос о моей гостевой учетной записи. / редактировать


Для конкретного набора значков на основе -приложения:

Произведено из За исключением некоторых приложений (, таких как VLC ), использующих текущую тему gtk3

  • создать любую папкуpath/to/FOLDER
  • создать в нем папку icons/
  • поместите в нее папку с нужным набором значков и переименуйте эту папку с именем текущего набора значков

После этого вы можете принудительно использовать этот набор значков с помощью:

XDG_DATA_DIRS=/path/to/FOLDER/:$XDG_DATA_DIRS

Для темной темы вы можете использовать ветерок -темный набор иконок


Cinnamon использует украшение метагорода -, это находится в папке themes/metacity-1/. Я не знаю, как настроить его для конкретного приложения. Приведенный выше хак XDG_DATA_DIRSне сработает.


Итак, если вам нужны собственные темы и значки, вы можете написать в терминале:

GTK_THEME=Adwaita:dark XDG_DATA_DIRS=/path/to/FOLDER/:$XDG_DATA_DIRS

И для запуска приложения с этими настройками в файле приложения.desktop:

Exec=sh -c "GTK_THEME=Adwaita:dark XDG_DATA_DIRS=/path/to/FOLDER/:$XDG_DATA_DIRS %F"

2
28.01.2020, 12:56
1 ответ

Is it safe to allocate 414 bytes in the.bss section and point RSP to the top?

Поскольку вы контролируете все содержимое своего исполняемого файла и, предположительно, не связываетесь с какими-либо библиотеками, все должно быть в порядке. Примечательно, что флагMAP_STACKmmapв настоящее время не действует , любая страница, доступная для чтения и записи, может использоваться для стека.

at least some part of the kernel code operates in the calling executable context

Да, системные вызовы работают внутри вызывающего процесса, но...

Will it smash my stack?

... ядро ​​работает в своих собственных стеках — иначе пользовательское пространство могло бы изменить значения внутри ядра во время выполнения системного вызова! Он не затрагивает стеки пользовательского пространства, хотя некоторые системные вызовы заботятся о стеке (clone, в частности ).

Also, interrupts can happen at any point in the program, and the story behind the "Red Zone" seems to suggest that an arbitrarily large region beyond RSP-128 can be written to at will by interrupt handlers, possibly mangling my data. What kinds of guarantees to I have about this behavior?

Аппаратные прерывания также используют собственные стеки, так что и там вы в безопасности. Чтобы защитить себя от обработчиков сигналов, вы можете настроить выделенный стек, используя sigaltstack.

1
28.04.2021, 23:25

Теги

Похожие вопросы