OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 11 Декабрь, 2019 21:45

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
СообщениеДобавлено: Понедельник, 19 Апрель, 2010 03:32 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2477
XDS не хочет компелироваться на Ubuntu 9.10

Кто нибудь сталкивался с подобной проблемой?

Код:
ivan@ivan-laptop:~/xds/lib/x86$ make -f lib.mkf
gcc  -D_unix -D_linux -DX2C_no_spawn -DX2C_strcmp -DX2C_native_library -O2 -fno-strength-reduce -I../../include -c -o ../../C/X2C.o ../../C/X2C.c
../../C/X2C.c:192:24: error: linux/user.h: No such file or directory
In file included from ../../C/X2C.c:193:
/usr/include/asm/sigcontext.h:56: error: redefinition of ‘struct _fpreg’
/usr/include/asm/sigcontext.h:61: error: redefinition of ‘struct _fpxreg’
/usr/include/asm/sigcontext.h:67: error: redefinition of ‘struct _xmmreg’
/usr/include/asm/sigcontext.h:71: error: redefinition of ‘struct _fpstate’
/usr/include/asm/sigcontext.h:104: error: redefinition of ‘struct sigcontext’
../../C/X2C.c: In function ‘fp_error’:
../../C/X2C.c:797: error: invalid use of undefined type ‘struct user_i387_struct’
../../C/X2C.c:798: error: invalid use of undefined type ‘struct user_i387_struct’
../../C/X2C.c: In function ‘X2C_SIGSEGV_handler’:
../../C/X2C.c:821: warning: passing argument 2 of ‘signal’ from incompatible pointer type
/usr/include/signal.h:101: note: expected ‘__sighandler_t’ but argument is of type ‘void (*)(int,  struct sigcontext)’
../../C/X2C.c: In function ‘X2C_BEGIN’:
../../C/X2C.c:908: warning: passing argument 2 of ‘signal’ from incompatible pointer type
/usr/include/signal.h:101: note: expected ‘__sighandler_t’ but argument is of type ‘void (*)(int,  struct sigcontext)’
make: *** [../../C/X2C.o] Ошибка 1


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Апрель, 2010 05:02 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2477
Нашел оксфордский компилятор,
http://spivey.oriel.ox.ac.uk/corner/Ins ... elease_2.8
Пока очень все понятно, прекрасно работает на Ubuntu.
Сделал простейшую программу на обероне, и собрал ее в бинарник.
Сразу в комплекте идет хелп по имеющимся немногочисленным (15) модулям.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Апрель, 2010 14:36 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4359
Откуда: Россия, Орёл
divan писал(а):
Код:
../../C/X2C.c:192:24: error: linux/user.h: No such file or directory

Не хватает заголовочных файлов.... кабы даже не от ядра. Странно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Апрель, 2010 15:15 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
может, когда последний раз XDS обновлялся, то в ядре такой файл был?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Апрель, 2010 15:35 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
А исходники Linux установлены?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 20 Апрель, 2010 02:29 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2477
Думаю, это исходники нашел... (не ахти какой опытный пользователь линукса)

/usr/include/signal.h
Код:
/* Set the handler for the signal SIG to HANDLER, returning the old
   handler, or SIG_ERR on error.
   By default `signal' has the BSD semantic.  */
__BEGIN_NAMESPACE_STD
#ifdef __USE_BSD
extern __sighandler_t signal (int __sig, __sighandler_t __handler)
     __THROW;
#else
/* Make sure the used `signal' implementation is the SVID version. */
# ifdef __REDIRECT_NTH
extern __sighandler_t __REDIRECT_NTH (signal,
                  (int __sig, __sighandler_t __handler),
                  __sysv_signal);
# else
#  define signal __sysv_signal
# endif
#endif
__END_NAMESPACE_STD


extern __sighandler_t signal (int __sig, __sighandler_t __handler)
злосчастная 101 строка на которую ругается make


Последний раз редактировалось Иван Денисов Вторник, 20 Апрель, 2010 02:45, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 20 Апрель, 2010 02:41 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
divan писал(а):
Думаю, это исходники нашел... (не ахти какой опытный пользователь линкса)

/usr/include/signal.h
Код:
/* Set the handler for the signal SIG to HANDLER, returning the old
   handler, or SIG_ERR on error.
   By default `signal' has the BSD semantic.  */
__BEGIN_NAMESPACE_STD
#ifdef __USE_BSD
extern __sighandler_t signal (int __sig, __sighandler_t __handler)
     __THROW;
#else
/* Make sure the used `signal' implementation is the SVID version. */
# ifdef __REDIRECT_NTH
extern __sighandler_t __REDIRECT_NTH (signal,
                  (int __sig, __sighandler_t __handler),
                  __sysv_signal);
# else
#  define signal __sysv_signal
# endif
#endif
__END_NAMESPACE_STD


extern __sighandler_t signal (int __sig, __sighandler_t __handler)
злосчастная 101 строка на которую ругается make

Компилятор ругается на несовпадение типов __sighandler_t и struct sigcontext:
Цитата:
../../C/X2C.c:821: warning: passing argument 2 of ‘signal’ from incompatible pointer type
/usr/include/signal.h:101: note: expected ‘__sighandler_t’ but argument is of type ‘void (*)(int, struct sigcontext)’
Сейчас нет под рукой XDS для Линукса, но заслуживают внимания комментарии
Код:
 By default `signal' has the BSD semantic.  */
и
Код:
/* Make sure the used `signal' implementation is the SVID version. */


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 20 Апрель, 2010 15:32 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Гм. Исходники компилятора XDS стали публично доступны? Я что-то пропустил?
Кроме того, нафига _компилятору_, заголовки ядра? Это ж не драйвер какой. Вполне себе пользовательсткое приложение.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 20 Апрель, 2010 16:22 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Alexey Veselovsky писал(а):
Гм. Исходники компилятора XDS стали публично доступны? Я что-то пропустил?
Речь шла об исходниках Linux.
Alexey Veselovsky писал(а):
Кроме того, нафига _компилятору_, заголовки ядра? Это ж не драйвер какой. Вполне себе пользовательсткое приложение.
Вообще-то, компиляторы классифицируются как системные приложения, а не прикладные.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 20 Апрель, 2010 16:32 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
igor писал(а):
Alexey Veselovsky писал(а):
Гм. Исходники компилятора XDS стали публично доступны? Я что-то пропустил?
Речь шла об исходниках Linux.

"XDS не хочет компелироваться на Ubuntu 9.10" -- где тут про исходники linux'a? Поскольку XDS компилируется, следовательно есть и его исходники (которые мы как раз компилируем). Нет?

igor писал(а):
Alexey Veselovsky писал(а):
Кроме того, нафига _компилятору_, заголовки ядра? Это ж не драйвер какой. Вполне себе пользовательсткое приложение.
Вообще-то, компиляторы классифицируются как системные приложения, а не прикладные.

А как не классифицируй любой транслятор тупо на вход получает один файл и на выходе дает другой файл. По сути ему ничего кроме работы с файлами от системы не нужно. Т.е. компилятору на самом деле от ОС нужно _меньше_ чем скажем какому-нибудь файловому менеджеру :-)

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

И да, это никак не противоречит тому, что компилятор это системное ПО а не прикладное ПО :-)
Эта классификация по сфере применимости ПО, а не по тому, что ему требуется от среды в которой оно работает.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 20 Апрель, 2010 16:49 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Alexey Veselovsky писал(а):
Нет?
Думаю, что нет. Хотя не уверен.
Топикстартер знает. И Димыч, который спросил про исходники Линукс, а divan ему ответил.
И тут следом Ваш удивлённый вопрос :)
Alexey Veselovsky писал(а):
А как не классифицируй ...
Ладно, не будем отвлекаться от темы, а то сожрут :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 00:35 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2477
Собственно началось с того, что решил XDS Revival опробовать на Убунте, взял вот с этого милого сайта с цветочками
http://oberonrevival.sourceforge.net/download
попробовал скомпилировать пример hello.ob2 но вылетела ошибка, в README написано мол «Может потребоваться перестроение библиотеки XDS.» То бишь сам компилятор с закрытыми кодами, а библиотеки с открытыми, наверное так.
После неудачи с этой самой компиляцией библиотек, скачал XDS с сайта
http://www.excelsior-usa.com/xdsdl.html
подумал, может там нет косяка, но после повторения описанной выше проблемы завел эту тему.

Прошу прощения, что тему назвал коряво. Наверное надо переименовать в «Ошибка при компиляции библиотек XDS на Ubuntu 9.10»


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 06:04 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2477
Поначалу разочаровался в оксфордском компиляторе. Подумал, что создает не независимые бинарники, а файлы, которые без интерпретатора в системе не работают. Вот что показал hexedit
Код:
00000000   23 21 2F 75  73 72 2F 6C  69 62 2F 6F  62 63 2F 6F  #!/usr/lib/obc/o
00000010   62 78 6A 0A  2A B5 05 2A  F2 F4 2A 93  F2 F4 2A 18  bxj.*..*..*...*.

Потом нашел, что автор пишет в FAQ о компиляторе, что так и рассчитано.

Но если указать ключ -С при компиляции, то собирается независимое .ELF приложение (программку приложил тестовую).

Код:
00000000   7F 45 4C 46  01 01 01 00  00 00 00 00  00 00 00 00  .ELF............
00000010   02 00 03 00  01 00 00 00  20 8D 04 08  34 00 00 00  ........ ...4...


Вложения:
Комментарий к файлу: Таблица умножения .ELF
MTable.zip [31.58 КБ]
Скачиваний: 180


Последний раз редактировалось Иван Денисов Четверг, 22 Апрель, 2010 06:32, всего редактировалось 1 раз.
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 06:19 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2318
Откуда: Россия, Томск
Написано, что под Windows работают и без интерпретатора в системе, так как интерпретатор встроен в конечный файл.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 06:36 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2477
Только что исправил, ну значит и для Linux и для Windows собрать реально одним фалом )) все в порядке. Вопрос отпал.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 07:42 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4359
Откуда: Россия, Орёл
А не смотрели, ради спортивного интереса, что он там на входе интерпретатора использует? Ну то есть какой тип "машинного кода"?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 08:18 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Борис Рюмшин писал(а):
А не смотрели, ради спортивного интереса, что он там на входе интерпретатора использует? Ну то есть какой тип "машинного кода"?

http://spivey.oriel.ox.ac.uk/corner/Oxf ... 2_compiler
Цитата:
... I have developed from scratch a portable compiler that translates Oberon-2 into bytecode, which can be either interpreted or dynamically translated into machine code.

То есть какой-то байткод. Исходники компилятора доступны:
http://spivey.oriel.ox.ac.uk/corner/Sof ... rogramming)

Любопытно, почему этот транслятор написан не стандартным для оберонов методом раскрутки, а как-то гибридно -- компилятор на Окамле, а рантайм (с интерпретатором байткода) на Сях?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 08:29 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
А вот в одном из исходном файле транслятора icode.ml основная структура данных этого байткода (если я правильно понял):
Код:
(* icode -- type of intermediate instructions *)
type icode =
    CONST of kind * value       (* Push constant (value) *)
  | SYMBOL of symbol
  | LOCAL of int                (* Push address (offset) *)
  | LOAD of int                 (* Load (size) *)
  | STORE of int                (* Store (size) *)
  | FIXCOPY                     (* Copy multiple values *)
  | FLEXCOPY                    (* Copy open array param *)
  | DUP of int                  (* Duplicate n'th value on stack (n) *)
  | POP of int                  (* Pop values (count) *)
  | SWAP                        (* Swap top two values on stack *)
  | STKMAP of symbol            (* Stack map for call point *)
  | CALL of int * int           (* Proc call (pcount, res size) *)
  | LINK                        (* Pass static link *)
  | SAVELINK                    (* Save static link in frame *)
  | RETURN of int               (* Return from procedure (rsize) *)
  | MONOP of kind * op          (* Unary operation (type, op) *)
  | BINOP of kind * op          (* Binary operation *)
  | CONV of kind * kind         (* Type conversion *)
  | ALIGN of int                (* Align parameter (size) *)
  | BOUND of int                (* Array bound check (line) *)
  | NCHECK of int               (* Check for null pointer (line) *)
  | GCHECK of int               (* Check statlink is zero (line) *)
  | ZCHECK of kind * int        (* Check for zero divisor (line) *)
  | ERROR of int * int          (* Runtime error (kind, line) *)
  | JUMP of codelab             (* Unconditional branch (dest) *)
  | JUMPB of bool * codelab     (* Jump on boolean *)
  | JUMPC of kind * op * codelab  (* Cond. branch (type, cond, dest) *)
  | JCASE of codelab list       (* Case jump *)
  | JRANGE of codelab           (* Range jump *)
  | TYPETEST of int             (* Type test (level) *)
  | LABEL of codelab            (* Set code label *)
  | LINE of int                 (* Line number *)
  | NOP                         (* No-op *)

  | LDK of int * int            (* Load constant (value, size) *)
  | INDEX of int                (* PUSH s/BINOP Times/BINOP PlusA *)
  | LDL of int * int            (* LOCAL n/LOAD s *)
  | STL of int * int            (* LOCAL n/STORE s *)
  | LDG of int * int            (* CONST k/LOAD s *)
  | STG of int * int            (* CONST k/STORE s *)
  | LDI of int                  (* INDEX s/LOAD s *)
  | STI of int                  (* INDEX s/STORE s *)
  | LDNW of int                 (* PUSH n/LDI 4 *)
  | STNW of int                 (* PUSH n/STI 4 *)
  | LDEW of int                 (* LDLW 12/LDNW n *)
  | STEW of int                 (* LDLW 12/STNW n *)
  | INCL of int                 (* LDLW n/INC/STLW n *)
  | DECL of int                 (* LDLW n/DEC/STLW n *)
  | JUMPCZ of kind * op * codelab  (* PUSH 0/JUMPC *)
  | TESTGEQ of codelab          (* Case split = DUP 1/JUMPC Lt *)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB