v3.2
2024.02.20 - @Azq2
Багфиксы:
- Заменил все "way" на "path"
- Исправил пик при клике на .elf, который не является эльфом (часто бывает, что файл нулевого размера и при клике на него пикало).
- Исправлен баг swi.blib, когда она не использовалась для EP3 эльфов, всегда передавался указатель на library.vkp.
- Исправлен баг, когда в
R_ARM_ABS32
не учитывался предварительный offset. - Добавлены данные для восстановления, чтобы можно было нормально откатывать патч ElfPack.
- Удалена AddrLibrary из патча ELFLoader.
Изменения:
-
Теперь "Realtime lib cache cleaner" включен по-умолчанию.
-
Добавлено автоматическое изменение номера диска в конфиге Elfloader (при первом запуске).
Раньше могла быть ситуация, когда конфиг создаётся на
0:\Zbin\etc\Elfpack3.bcfg
, но пути в нём остаются4:\...
.Теперь конфиг создаётся с правильным диском.
-
__sys_switab_addres
и__switab
теперь предоставляются самим ELFLoader, вместо libcrt_helper.so. -
Встроенные символы
__ex
,__sys_switab_addres
и__switab
теперь работают так же и вR_ARM_GLOB_DAT
. -
Копирование библиотеки функций в RAM перенесено из libcrt_helper.so в сам ELFLoader.
-
Все несуществующие функции теперь не 0xFFFFFFFF, а 0xFFFFxxx0, где xxx это swi-номер.
Если раньше при попытке доступа к неизвестной функции происходил непонятный дата-аборт (в GCC-эльфах), то теперь будет явная ошибка доступа к адресу 0xFFFFxxx0, из которого можно понять, какая именно из функций отсутствует.
При этом проблем не будет, в swilib никогда не указывались адреса или данные 0xFFFFxxxx.
-
Базовая поддержка для реализации gdbstub.
- Возможность установить хук на загрузку elf/so.
- Первым эльфом грузится 0:\Zbin\Daemons\EP3DebugHook.elf (если он присутствует на диске), в него передаётся указатель на ElfloaderDebugHook, в который можно будет прописать указатели на
hook()
и_r_debug
.
-
Удалось сократить размер EP3 почти на 0.5-0.7 кб.
-
Уменьшено кол-во malloc/free при загрузке ELF.
-
Удалены бесполезные функции из swilib: elfclose, elfopen, elf_entry, GetBinSize, LoadSections, DoRelocation.
-
PT_DYNAMIC для GCC-эльфов теперь работает по стандарту, а для IAR'овских оставлен костыль с клонированием в раму (это нужно для gdbstub).
-
Новая система сборки.
-
Опциональный пропуск загрузки демона, если присутствует файл с его именем с постфиксом .skip (например:
0:\Zbin\Daemons\XTASK3_ELKA.elf.skip
).
Это нужно, чтобы можно было управлять автозагрузкой без переноса файлов (для будущего пакетного менеджера).
Изменения работы swi.blib
- Теперь можно переопределять почти всю библиотеку функций, а не только добавлять новые функции.
- При этом добавлена проверка на совместимость. Если некоторые базовые функции (strcat, strchr, strcmp, strcpy) не совпадают с прошивочными, значит, это swi.blib от другого телефона. Он не будет загружен.
- Safe-Mode (# при загрузке) теперь действует и на swi.blib. Раньше кривая swi.blib могла убить телефон.