Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PIE #22

Open
galaxysite opened this issue Nov 2, 2023 · 4 comments
Open

PIE #22

galaxysite opened this issue Nov 2, 2023 · 4 comments

Comments

@galaxysite
Copy link

Возможно ли сделать в Линуксе компиляцию в PIE ? Этого давно требуют пакетные менеджеры дистрибутивов. Иной формат исполняемых файлов ругает lintian.

И есть ли планы сделать графическую среду ? Портировать на Оберон https://github.com/mse-org/mseide-msegui или создать что-то своё наподобие.

@AntKrotov
Copy link
Owner

  1. Если PIE это Position Independent Executeble, то компилятор и так уже транслирует исключительно позиционно-независимый код как для ELF, так и для PE. Я не знаю, что при этом нужно изменить в структуре исполняемого файла (чтобы не ругался lintian), я с этим не разбирался. Но, тем не менее, Линукс может загружать эти исп. файлы в произвольный адрес и всё будет работать.

  2. Насчет граф. среды, я дальше простых редакторов с подсветкой синтаксиса не продвигался, каких-либо планов, на что-то более серьезное у меня нет.

@galaxysite
Copy link
Author

Да, это он. Когда я запускаю (например) так, то получаю для Оберона:

first@my:~/oberon/oberon-07-compiler/bin$ readelf -a animation
Заголовок ELF:
Magic: 7f 45 4c 46 02 01 01 03 00 00 00 00 00 00 00 00
Класс: ELF64
Данные: дополнение до 2, от младшего к старшему
Version: 1 (current)
OS/ABI: UNIX - GNU
Версия ABI: 0
Тип: EXEC (Исполняемый файл)
Машина: Advanced Micro Devices X86-64
Версия: 0x1
Адрес точки входа: 0x40130d
Начало заголовков программы: 64 (байт в файле)
Начало заголовков раздела: 0 (байт в файле)
Флаги: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 6
Size of section headers: 64 (bytes)
Number of section headers: 0
Section header string table index: 0

А нужно:

first@my:~/mysites/smfg/soft/GORG64$ readelf -a gorg64_spkplay
Заголовок ELF:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Класс: ELF64
Данные: дополнение до 2, от младшего к старшему
Version: 1 (current)
OS/ABI: UNIX - System V
Версия ABI: 0
Тип: DYN (Position-Independent Executable file)
Машина: Advanced Micro Devices X86-64
Версия: 0x1
Адрес точки входа: 0x1470
Начало заголовков программы: 64 (байт в файле)
Начало заголовков раздела: 15944 (байт в файле)
Флаги: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 13
Size of section headers: 64 (bytes)
Number of section headers: 39
Section header string table index: 38

То есть сейчас видимо поддерживается только PIC, а нужно PIC+PIE. Тогда readelf укажет на динамическую загрузку.
Ну и самим lintian'ом можно проверить более полно.

@AntKrotov
Copy link
Owner

Понятно. Если (когда) будет возможность, попробую сделать поддержку PIC+PIE.

@galaxysite
Copy link
Author

Спасибо !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants