OberonCore
https://forum.oberoncore.ru/

Перевод BlackBox под Linux
https://forum.oberoncore.ru/viewtopic.php?f=34&t=1280
Страница 11 из 15

Автор:  Сергей Оборотов [ Вторник, 07 Апрель, 2009 17:20 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Димыч писал(а):
Все ничего, но это верно для стека приложения, а не для стека библиотеки.
Без разницы совершенно. Для стека библиотеки подобную работу производит её загрузчик.
Код:
  /* Run the initializer functions of new objects.  */
  _dl_init (new, args->argc, args->argv, args->env);

и далее в функции call_init
Код:
      /* Call the function.  */
      init (argc, argv, env);

init - это как раз стартовая функция библиотеки. Не пробовали, наверное.

Автор:  Димыч [ Среда, 08 Апрель, 2009 16:40 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

GUEST писал(а):
init - это как раз стартовая функция библиотеки. Не пробовали, наверное.

Я все же поступил по-другому.

В модуле Init сделал процедуру
Код:
PROCEDURE InitSystem*(argc, argv: INTEGER);
и в команде сборки библиотеки libBB.so пометил модуль Init символом "#" (экспортировать из *.so).

В модуле BlackBox.c сделал прототип этой функции, с помощью функции dlsym загружаю функцию из *.so, затем вызываю с параметрами (argc, (int)argv). На всякий случай аргумент(ы) приводятся к int.

В процедуру перенесен код, располагающийся в инициализационной секции модуля Init.
Таким образом, процедура инициализации вызывается после фактической инициализации среды.
Решение, может быть не очень корректное с точки зрения Linux, но, на мой взгляд, полностью проглядываемое, нет никаких подразумеваемых вещей (типа структуры стека).

Следующее. Заставил таки я работать подсистему CDev (Dev, отвязанный от графической части).
Текстовый файл (не odc) компилируется, создаются osf, ocf-файлы.
Теперь надо делать разбор командной строки.

Если получится, то до субботы постараюсь все это выложить (на SVN в том числе), если нет, тогда примерно через неделю выложу.

Автор:  XomA [ Среда, 08 Апрель, 2009 23:21 ]
Заголовок сообщения:  Библиотека libBB.so

Решил я собрать BlackBox.c ключом -lBB , предварительно убрав оттуда динамическую загрузку, но добавив определение функции
Код:
void InitSystem(int argv, char** argc);

и скопировав libBB.so в /lib
Так, у меня gcc выдал
Код:
/lib/../lib/libBB.so: warning: the `gets' function is dangerous and should not be used.
/usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in /lib/../lib/libBB.so
/lib/libc.so.6: could not read symbols: Bad value
collect2: выполнение ld завершилось с кодом возврата 1
:?
Хотя, при использовании libdl всё идёт нормально, в чём тут проблема :?:

Автор:  Valery Solovey [ Четверг, 09 Апрель, 2009 15:34 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Первое, что нашёл в гугле по TLS definitioin: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches

Автор:  Пётр Кушнир [ Пятница, 10 Апрель, 2009 18:48 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Почему-то давно нет обновлений в официальном репозитарии проекта. Как же кто-то сможет вам помочь, если не понятно, что уже сделано, и над чем ведутся работы.

Автор:  Димыч [ Среда, 22 Апрель, 2009 10:38 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

После вынужденного молчания обновил репозиторий по адресу https://svn.oberoncore.ru/community/BlackBox-Linux/

Что изменилось.
1) Внесены изменения от GUEST касаемо защиты памяти. См. модули Kernel, Libc.
2) Изменен механизм инициализации самого ББ. Вместо вызова кода Init производится вызов процедуры Init.InitSystem. Подробности в BlackBox.c
3) Изменен модуль Lin/Docu/Build-Tool.odc. Модуль Init помечен символом "#", что приводит к экспорту процедур из этого модуля в libBB.so;
4) Добавлена подсистема Gnome (она же вызывается при старте, см. Init).
5) Добавлена подсистема CDev. Пример работы CDev\Mod\Test.odc и CDev\Mod\Test.ob2
6) Добавлены файлы с лицензией, изменениями и пустой (пока) README.

Автор:  Сергей Оборотов [ Среда, 22 Апрель, 2009 23:39 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

После копирования библиотек pango* в /usr/lib32/ и редактирования путей в файле /usr/lib32/pango/1.6.0/module-files.d последняя сборка заработала на 64-разрядной Debian. Но трассировка по strace при этом завершается аварийно. Возможно, из-за проблем с самим strace. Если у кого-то похожая ситуация дайте знать.

Автор:  Борис Рюмшин [ Четверг, 30 Апрель, 2009 15:45 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Обсуждение графической части: viewtopic.php?f=34&t=1538

Автор:  Иван Горячев [ Вторник, 14 Июль, 2009 08:39 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Димыч, стандартный вопрос :wink:

Автор:  Димыч [ Вторник, 14 Июль, 2009 10:33 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Иван Горячев писал(а):
Димыч, стандартный вопрос :wink:

тупо глядя на стопку стандартов
Какой именно?
:)

Автор:  Димыч [ Вторник, 14 Июль, 2009 19:23 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Мой предыдущий пост был написан под гнётом убийственного чувства юмора и рабочей обстановки :)

Если говорить конкретно о том, как идут дела с переводом, то я сейчас разбираюсь со внутренностями ББ с тем, чтобы понять, как модель обработки событий GTK наложить на модель обработки сообщений ББ (1) и разбираюсь со структурой подсистемы host для тех же целей (2).

Работа была приостановлена на 2 месяца по двум причинам: сессия и отпуск.
Планировал, что будет возможность уделять время этой работе, но оказалось, что нет.

Сейчас работа возобновлена. О результатах напишу позже (приблизительно через 2 недели).

Автор:  Димыч [ Понедельник, 24 Август, 2009 03:23 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Работа по переводу BlackBox на Linux переезжает на сайт http://oberonrevival.sourceforge.net.

Автор:  Роман М. [ Воскресенье, 18 Октябрь, 2009 23:13 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Есть ли какие-либо новости с фронта? Димыч ещё занимается переносом в Линукс или дело уже заглохло?

Хотелось бы определиться с составом проекта:
  • какие части необходимы для переноса
  • где какие имеются проблемные места
  • как распределить между собой обязанности

Автор:  Димыч [ Понедельник, 19 Октябрь, 2009 14:03 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Роман М. писал(а):
Есть ли какие-либо новости с фронта? Димыч ещё занимается переносом в Линукс или дело уже заглохло?

Хотелось бы определиться с составом проекта:
  • какие части необходимы для переноса
  • где какие имеются проблемные места
  • как распределить между собой обязанности

Предыдущее сообщение в теме видели? :)
Если я скажу, что работа заглохла, это, конечно, будет неправдой. Но работа ведется значительно медленнее, чем хотелось бы. Специально для того, чтобы работой мог заниматься не только один я, и был сделан сайт. Все вопросы практического характера - туда. Welcome!

Автор:  Alexey Veselovsky [ Понедельник, 19 Октябрь, 2009 16:02 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Димыч писал(а):
Роман М. писал(а):
Есть ли какие-либо новости с фронта? Димыч ещё занимается переносом в Линукс или дело уже заглохло?

Хотелось бы определиться с составом проекта:
  • какие части необходимы для переноса
  • где какие имеются проблемные места
  • как распределить между собой обязанности

Предыдущее сообщение в теме видели? :)
Если я скажу, что работа заглохла, это, конечно, будет неправдой. Но работа ведется значительно медленнее, чем хотелось бы. Специально для того, чтобы работой мог заниматься не только один я, и был сделан сайт. Все вопросы практического характера - туда.


А куда там задавать вопросы? По ссылке форума не находится.

Автор:  Димыч [ Понедельник, 19 Октябрь, 2009 16:47 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Alexey Veselovsky писал(а):
А куда там задавать вопросы? По ссылке форума не находится.
На странице разработки есть адреса списков рассылки.

Автор:  Димыч [ Пятница, 30 Октябрь, 2009 13:54 ]
Заголовок сообщения:  Компиляция в Linux

Я запустил в Linux компиляцию модулей, записанных в текстовых файлах.
Исходники выложу чуть позже, пока только описание.

Компиляция:
./BlackBox compile CDev/Mod/Test.ob2

Содержимое Test.ob2:
MODULE Test;

IMPORT
Log;

PROCEDURE Abc*();
BEGIN
Log.String("CDevTest => OK"); Log.Ln;
END Abc;

END Test;

Запуск:
./BlackBox run CDevTest.Abc
CDevTest => OK

*.odc таким образом не компилируются, надо еще думать.

Обнаружилась странная ошибка/особенность.
Переменные из *.so файла не импортируются, в частности, не импортировалась
переменная errno из <errno.h>. Пришлось передавать ее явно в Kernel и заменять вызовы Libc.errno на Kernel.errno(). Может я чего не понимаю?

(опубликовано в списке рассылки, здесь дубль)

Автор:  Евгений Темиргалеев [ Воскресенье, 01 Ноябрь, 2009 11:56 ]
Заголовок сообщения:  Re: Компиляция в Linux

Димыч писал(а):
Обнаружилась странная ошибка/особенность.
Переменные из *.so файла не импортируются, в частности, не импортировалась
переменная errno из <errno.h>. Пришлось передавать ее явно в Kernel и заменять вызовы Libc.errno на Kernel.errno(). Может я чего не понимаю?
Странность заключается в том, что errno с некоторых пор не просто переменная - смотрите как "оно" определено в errno.h

Дружно кидаем скалу в огород макросов.

Автор:  Info21 [ Воскресенье, 01 Ноябрь, 2009 12:53 ]
Заголовок сообщения:  Re: Компиляция в Linux

Евгений Темиргалеев писал(а):
Дружно кидаем скалу в огород макросов.
Много мелких камней лучше, чем один большой :)

( И это не просто остроумство :) )

Автор:  Димыч [ Воскресенье, 01 Ноябрь, 2009 15:13 ]
Заголовок сообщения:  Re: Компиляция в Linux

Евгений Темиргалеев писал(а):
Димыч писал(а):
Обнаружилась странная ошибка/особенность.
Переменные из *.so файла не импортируются, в частности, не импортировалась
переменная errno из <errno.h>. Пришлось передавать ее явно в Kernel и заменять вызовы Libc.errno на Kernel.errno(). Может я чего не понимаю?
Странность заключается в том, что errno с некоторых пор не просто переменная - смотрите как "оно" определено в errno.h
Тем не менее, в libc.so errno присутствует...

Страница 11 из 15 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/