2024.11.14 - @Azq2
- Теперь можно увеличить размер png-cache до 512 элементов (было 200).
- Реализована возможность размещать папку ZBin на дисках Cache и Config. Выбор диска работает по такой логике:
- первый приоритет - поиск диска с ?:\ZBin\etc\ElfPack.bcfg (MMC -> Data -> Config -> Cache)
- второй приоритет - поиск диска с ?:\ZBin\etc (MMC -> Data -> Config -> Cache)
- третий приоритет - поиск диска с ?:\ZBin\ (MMC -> Data -> Config -> Cache)
- четвёртый приоритет - если нигде нет папки ZBin, выбираем диск 0:
- Добавлена SWI 2FA - версия ELFLoader
2024.07.01 - @Azq2
- В состав ElfPack включены дополнительные патчи:
- Исправлен перезапуск IDLE CSM при ошибке SIM или смене IMSI. Это актуально для multi-IMSI SIM, в которых IMSI может меняться во время работы.
- Запатчены все функции BSD-сокетов, чтобы исключить возможное состояние гонки (если процесс NETCORE тормозит), что приводило к повреждению стека.
- Теперь все модели и версии прошивки из линейки NSG/ELKA получили:
- Правильную область RAM, которая точно не используется прошивкой.
- Врезка в инициализацию ОС для зануления этой несипользуемой памяти.
- Перенос зеркала swilib и конфига из HEAP в неиспользуемую память (экономия 18 кб хипа).
- Инструменты для автоматического генерирования всех патчей, что перечислены выше.
2024.03.14 - @Azq2
-
Изменена область RAM используемая ELFLoader для S75sw52, C81sw51, EL71sw45, E71sw45.
Теперь используется точно неиспользуемая ранее память.
Так же добавлена врезка в инициализацию ОС для зануления этого блока памяти.
Спасибо Feyman за предоставленные адреса несипользуемой памяти и FIL, k1r1t0 за тесты.
-
Для S75sw52, C81sw51, EL71sw45, E71sw45 зеркало swilib и конфиг перенесены в статическую память, вместо HEAP. Это позволило сэкономить до 18 кб heap-памяти.
-
Добавлена защита от двойного запуска ELFLoader и удалён его деструктор (в нём нет смысла).
-
Исправлена работа Explorer, которая была сломана из-за убранного
__thumb
у функцииMyShowMSG
.
2024.02.28 - @Azq2
- Исправлена область RAM используемая ELFLoader для S75sw52
- Исправлена функция FUNC_ABORT, у которой случайно было убратно
__arm
, из-за этого вместо "No function in lib" был пик.
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 могла убить телефон.
2023.10.21 - @Azq2
Багфиксы:
- Исправлена сборка EP3 для устаревших прошивок.
2023.10.21 - @Azq2
Багфиксы:
- Включен GStackAlign=1 для совместимости с AAPCS (8-байт стек)
- Починена сборка EP3, добавлены отсутствующие файлы
2018.12.28 - @Azq2
Багфиксы:
- Исправлен адрес StoreErrString для C81sw51
2012.02.02 - @Alexious-sh @zvova7890
- fix dlopen(Data Abort)
- поиск кеш картинок происходит по хешу имени, должно немного дать прироста
2012.01.08 - @Alexious-sh @zvova7890
- Добавлен поиск либ в корне папки с эльфом
- Исправлена утечка в логе
2011.12.11 - @Alexious-sh @zvova7890
- Исправлена серьёзная ошибка из за которой не правильно импортились некоторые функции из либ, обычно собраных на С++. К примеру не работал fstream из stdc++. Я сперва думал что это глюк в либе, но когда линканул статически то удивился что оно заработало, и стал искать ошибку в паке
- По притензиям некоторых, добавлена в конфиг настройка путей к папкам либ
- Добавлен в конфиг опциональный лог. Так как сложно выловить в мессагах че там не хватает эльфу. Чтобы выключить лог, ставим максимальный размер на 0.
2011.??.?? - @Alexious-sh @zvova7890
- Улучшена совместимость со старыми эльфами
- Поддержка симлинков для либ, симлинк обычный текстовый файл содержащий только путь
- Поменян прицыпе вызова конструкторов, они теперь вызываются библиотекой libcrt, разрабам следует обновиться из темы разработки
- Исправлено 2 ошибки в освобождении либ
- Добавлено опциональная очистка либ при не использовании, вы можете выключить реалтайм освобождение тем самым увеличить скорость последующего запуска и освобождения эльфов.
- В свилиб вынесены 4 новых функций
- 0x2F6 getBaseEnviron - указатель на переменную окружения(требуется для либц)
- 0x2F7 dlerror - при ошибке открытия либы эта функция возвратит ошибку в текстовом виде
- 0x2F8 dlclean_cache - принудительная очистка кеша либ(если отключена реалтайм очистка)
- 0x2F9 SHARED_TOP - указатель на последнюю загруженую либу
2011.07.11 - @Alexious-sh @zvova7890
Первая публичная версия