Вышел совершенно новый ELFPack 3.0 by Z.Vova & Ganster  (обновление от 22.03.2012)

Это не мод и не продолжение епака 3 от Dimadze и Just Crazy


Со времен когда ещё был жив вапер и форумы трепещали новыми темами и новыми эльфами, с последней версии лоадер так и никто не осмелился внести какие-нибудь изменения непосредственно в сам загрузчик эльфов, тобиш парсер форматат Elf. Почему спросите вы меня? Да элементарно, всем было лень читать доки и писать что-либо. Было много модов из которых я ни один не поставил по одной простой причине: эльфлоадер - это загрузчик исполняемых файлов, а не плюшка для баловства. Ну да ладно, пропустим предисловие... И так в один прекрасный день я предложил Лёхе(Ganster) написать нечто похожее на нормальный стандартизированный лоадер, на что он согласился. Было перекурено 100500 доков, перерыто 100500 сорцов и потрачено много времени. Был период когда мы забили на большей половине разработки. Но в скорем времени мы продолжили и сделали полностью соответсвующий стандартам UNIX загрузчик исполняемых файлов ELF. Но возможно возникнет у вас вопросс, а зачем? Дело в том что старый лоадер был простым загрузчик простых эльфов. Новый лоадер даёт обширные возможности. И так начнем.


[+] Shared Library (*.so)

Что это такое и с чем его едят. Наверное вы заметили что эльфы в последнее времени используют все больше спортированных библиотек из OpenSource сообщетва, и соответственно размер 2х эльфов которые используют один и тот-же код растет и занимает место на диске и в памяти. Для этого были разработаны динамически подгружаемые библиотеки называемые Shared Library. Как же это работает? При запуске эльфа эльф не содержит огромный код библиотеки в себе, а просит подлинковать лоадера к нему динамическую библиотеку. Что делает в это время лоадер? Лоадер подгружает разделяемую библиотеку и линкует требуемые функции к эльфу. Потом запускается второй эльф который опять же использует ту же библиотеку, что делает лоадер? Лоадер опять же ищет требуемую библиотеку и находит её среди уже загруженых, он берёт эту библиотеку и линкует ко второму эльфу. Здорово правда? 2 эльфа пользуются одним кодом. Экономия оперативной памяти и места на диске. Это есть самая главная причина по которой мы начали писать загрузчик.

В итоге получился загрузчик который умеет загружать эльфы собраные на gcc безовсяких скриптов, и использовать разделяемые библиотеки. Напомню что загрузчик был переписан _полностью_ от старого лоадера не осталось ни строчки кода. Вследствии чего (мб меня таращит) и увеличилась скорость загрузки эльфов.

Вопрос: А как же совместимость? Будут мои старые эльфы работать на новом лоадере?
Ответ: Да. Мы сделали соместимость со старыми эльфами, наш лоадер вполне с ними дружит и запускает.

Инструкции по сборке эльфов и разделяемых библиотек будут потом, с инструкцией по прикручиванию всего этого дела к IDE Code::Block
Так же потом, я выложу libc.so libm.so и прочую лабуду а так-же хедеры к ним.

Что такое libc.so?
Это набор библиотек стандарта Си, который я портировал для сименса. Не все функции реализованы но большинство уже есть и работают.

Что такое libm.so?
Это набор функций для работы с математикой, тобиш math.h. Который тоже портирован мной.

А как же обстоят дела со сви функциями на гцц?
На освоение гцц, линкера, всех примудростей стандартов и так далее у меня ушло учень много времени но я всё таки пришёл к истине. Я заставил собирать гцц нормальные эльфы и использовать функции из таблицы сви. Вы не увидели ответа? Значит плохо читали. Вызов сви производится по методу switab_addres+(sizeof(void*)*swi_num) в обход процессорной комманды swi. Таким образом вызов функции происходит быстрей чем вызов через swi инструкцию.

А как обстоят дела со свилибой, её нада портировать?
Да её нада портировать. Но я поступил как настоящий программист - написал прогу которая за меня сама все спортировала . Синтаксис свилибы немного отличается от иаровской, это тоже все моё изобретение и труды.

А как обстоят дела с конфигами? Они будут работать?
Да. Я переписал загрузчик конфигов для работы с гцц. Все работает (c)

А долго ли портировать эльфы с иара на гцц?
Нет. Все портируется очень легко. Я собирал натаськи и прочую фигню.

Изменения:


[*] Улучшена совместимость со старыми эльфами
[+] Поддержка симлинков для либ, симлинк обычный текстовый файл содержащий только путь
[*] Поменян прицыпе вызова конструкторов, они теперь вызываются библиотекой libcrt, разрабам следует обновиться из темы разработки
Тестовые эльфы
Фак будет дополнятся.
[*] Исправлено 2 ошибки в освобождении либ
[+] Добавлено опциональная очистка либ при не использовании, вы можете выключить реалтайм освобождение тем самым увеличить скорость последующего запуска и освобождения эльфов.
[+] в свилиб вынесены 4 новых функций

0x2F6 getBaseEnviron - указатель на переменную окружения(требуется для либц)
0x2F7 dlerror - при ошибке открытия либы эта функция возвратит ошибку в текстовом виде
0x2F8 dlclean_cache - принудительная очистка кеша либ(если отключена реалтайм очистка)
0x2F9 SHARED_TOP - указатель на последнюю загруженую либу


11.12.11
[*] исправлена серьёзная ошибка из за которой не правильно импортились некоторые функции из либ, обычно собраных на С++. К примеру не работал fstream из stdc++. Я сперва думал что это глюк в либе, но когда линканул статически то удивился что оно заработало, и стал искать ошибку в паке
[+] По притензиям некоторых, добавлена в конфиг настройка путей к папкам либ
[+] добавлен в конфиг опциональный лог. Так как сложно выловить в мессагах че там не хватает эльфу. Чтобы выключить лог, ставим максимальный размер на 0.

Testing(08.01.12)
[+] Поиск либ в корне папки с эльфом
[*] Утечка в логе

=== 02.02.12
[*] fix dlopen(Data Abort)
[+] поиск кеш картинок происходит по хешу имени, должно немного дать прироста

  • dlcache.elf - по нажатию очистит кеш либ
  • эльф для генерации swi.blib

За версиями для других телефонов и обсуждениями сюда

Установка:
Откатить старый, накатить новый не смотря на ругань Vklay

(саветую перед этим залить чистый фулл ;)) 


 

Тестируем Эльфпак 3.0 beta by Dimadze, багрепорты сюда

Нашел на форумах интересный мод Эльфпака 2.3, несколько расширены возможности и убраны пики  SWI качать отсюда.


Наша Кнопка

Вставъте код нашей кнопки себе на сайт:

<a href="http://s75.siemens-club.org" target="new"><img border="0" src="http://s75.siemens-club.org/s75_button.gif" width="88" height="31" alt="Все о Siemens S75"></a>

Все о Siemens S75