oberon-07-compiler
oberon-07-compiler copied to clipboard
PIE
Возможно ли сделать в Линуксе компиляцию в PIE ? Этого давно требуют пакетные менеджеры дистрибутивов. Иной формат исполняемых файлов ругает lintian.
И есть ли планы сделать графическую среду ? Портировать на Оберон https://github.com/mse-org/mseide-msegui или создать что-то своё наподобие.
-
Если PIE это Position Independent Executeble, то компилятор и так уже транслирует исключительно позиционно-независимый код как для ELF, так и для PE. Я не знаю, что при этом нужно изменить в структуре исполняемого файла (чтобы не ругался lintian), я с этим не разбирался. Но, тем не менее, Линукс может загружать эти исп. файлы в произвольный адрес и всё будет работать.
-
Насчет граф. среды, я дальше простых редакторов с подсветкой синтаксиса не продвигался, каких-либо планов, на что-то более серьезное у меня нет.
Да, это он. Когда я запускаю (например) так, то получаю для Оберона:
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'ом можно проверить более полно.
Понятно. Если (когда) будет возможность, попробую сделать поддержку PIC+PIE.
Спасибо !