Skip to content

v3.2

Compare
Choose a tag to compare
@Azq2 Azq2 released this 20 Feb 05:24
· 17 commits to master since this release
0a749de

2024.02.20 - @Azq2

Багфиксы:

  1. Заменил все "way" на "path"
  2. Исправил пик при клике на .elf, который не является эльфом (часто бывает, что файл нулевого размера и при клике на него пикало).
  3. Исправлен баг swi.blib, когда она не использовалась для EP3 эльфов, всегда передавался указатель на library.vkp.
  4. Исправлен баг, когда в R_ARM_ABS32 не учитывался предварительный offset.
  5. Добавлены данные для восстановления, чтобы можно было нормально откатывать патч ElfPack.
  6. Удалена AddrLibrary из патча ELFLoader.

Изменения:

  1. Теперь "Realtime lib cache cleaner" включен по-умолчанию.

  2. Добавлено автоматическое изменение номера диска в конфиге Elfloader (при первом запуске).

    Раньше могла быть ситуация, когда конфиг создаётся на 0:\Zbin\etc\Elfpack3.bcfg, но пути в нём остаются 4:\....

    Теперь конфиг создаётся с правильным диском.

  3. __sys_switab_addres и __switab теперь предоставляются самим ELFLoader, вместо libcrt_helper.so.

  4. Встроенные символы __ex, __sys_switab_addres и __switab теперь работают так же и в R_ARM_GLOB_DAT.

  5. Копирование библиотеки функций в RAM перенесено из libcrt_helper.so в сам ELFLoader.

  6. Все несуществующие функции теперь не 0xFFFFFFFF, а 0xFFFFxxx0, где xxx это swi-номер.

    Если раньше при попытке доступа к неизвестной функции происходил непонятный дата-аборт (в GCC-эльфах), то теперь будет явная ошибка доступа к адресу 0xFFFFxxx0, из которого можно понять, какая именно из функций отсутствует.

    При этом проблем не будет, в swilib никогда не указывались адреса или данные 0xFFFFxxxx.

  7. Базовая поддержка для реализации gdbstub.

    • Возможность установить хук на загрузку elf/so.
    • Первым эльфом грузится 0:\Zbin\Daemons\EP3DebugHook.elf (если он присутствует на диске), в него передаётся указатель на ElfloaderDebugHook, в который можно будет прописать указатели на hook() и _r_debug.
  8. Удалось сократить размер EP3 почти на 0.5-0.7 кб.

  9. Уменьшено кол-во malloc/free при загрузке ELF.

  10. Удалены бесполезные функции из swilib: elfclose, elfopen, elf_entry, GetBinSize, LoadSections, DoRelocation.

  11. PT_DYNAMIC для GCC-эльфов теперь работает по стандарту, а для IAR'овских оставлен костыль с клонированием в раму (это нужно для gdbstub).

  12. Новая система сборки.

  13. Опциональный пропуск загрузки демона, если присутствует файл с его именем с постфиксом .skip (например: 0:\Zbin\Daemons\XTASK3_ELKA.elf.skip).
    Это нужно, чтобы можно было управлять автозагрузкой без переноса файлов (для будущего пакетного менеджера).

Изменения работы swi.blib

  1. Теперь можно переопределять почти всю библиотеку функций, а не только добавлять новые функции.
  2. При этом добавлена проверка на совместимость. Если некоторые базовые функции (strcat, strchr, strcmp, strcpy) не совпадают с прошивочными, значит, это swi.blib от другого телефона. Он не будет загружен.
  3. Safe-Mode (# при загрузке) теперь действует и на swi.blib. Раньше кривая swi.blib могла убить телефон.