spf/linux by ~yz

89 messages Options
Embed this post
Permalink
1 2 3 4 5
Andrey Cherezov

Re: без [IF] легко (Re: spf/linux by ~yz)

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)
Добрый день, ygrek!

Ваше сообщение от 24.03.2008 22:37:
А ведь тут можно вообще без констант обойтись. [IF] я применил только 
для того чтобы быстро
и надежно убедиться (и другим наглядно показать), как легко 
"двухплатформизируются" обертки над dll/so.
    
Стильно :)
Но всё равно какой-то тупой низкоуровневый метод идентификации нужен.
  
А, ну да, вообще наличие констант, определяющих платформу, пригодится. Не только
для [IF]'ов, от которых не всегда так легко избавиться, но и для табличного выбора, например.
Чтобы не страдать от выбора неподходящего или "нечестного" имени, типа POSIX, LINUX
или GNU/LINUX :), можно просто завести какую-нибудь SYSTEM и считать, что там 0,
если Windows, и не ноль, если не-windows. Когда будет больше двух систем, то 0, 1, 2...
Или битовую маску - разрядность, размер символа и т.п. учесть. Чтобы опять же
легко использовать как селектор по таблице, а не длинными составными условиями
"если windows и если 64 бита, и если unicode...". А ведь что-то у нас про эти константы
в стандарте (про ENVIRONMENT) было вроде...

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
ygrek-3

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
In reply to this post by Andrey Cherezov
On Mon, 24 Mar 2008 03:25:47 +0200
Andrey Cherezov <[hidden email]> wrote:

> Сейчас прикручивал iconv, тоже интересно получилось: где-то
> libiconv.so.2 отдельная
> либа, где-то внутри libc сидит. Где-то имена функций iconv начинаются на
> lib-, где-то без.

Кстати, а зачем ты указываешь полные пути к so? dlopen() сам ищет в
куче мест (включая /lib и /usr/lib).

--
 ~ygrek


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev

attachment0 (196 bytes) Download Attachment
Andrey Cherezov

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
Добрый день, ygrek!

Ваше сообщение от 30.03.2008 13:49:
> Кстати, а зачем ты указываешь полные пути к so? dlopen() сам ищет в
> куче мест (включая /lib и /usr/lib).
>  
Потому что у меня почему-то не ищет. Или на какой-то из систем не искал.
Я думал, что это от флагов dlopen зависит, т.к. в моих ранних
экспериментах dlopen
действительно искал по системным каталогам.

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
ygrek-3

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
Привет,

> Потому что у меня почему-то не ищет. Или на какой-то из систем не искал.
> Я думал, что это от флагов dlopen зависит, т.к. в моих ранних
> экспериментах dlopen
> действительно искал по системным каталогам.

Наверное это проблема той конкретной системы и не стоит на это завязываться.
Флаг 9 = RTLD_LAZY + RTLD_DEEPBIND
Вырезка из man :
  dlopen()
       The function dlopen() loads the dynamic  library  file  named  by  the
       null-terminated string filename and returns an opaque "handle" for the
       dynamic library.  If filename is NULL, then the returned handle is for
       the  main  program.   If  filename  contains a slash ("/"), then it is
       interpreted as a (relative  or  absolute)  pathname.   Otherwise,  the
       dynamic  linker  searches for the library as follows (see ld.so(8) for
       further details):

       o   (ELF only) If the executable file for the calling program contains
           a  DT_RPATH  tag,  and does not contain a DT_RUNPATH tag, then the
           directories listed in the DT_RPATH tag are searched.

       o   If the environment variable LD_LIBRARY_PATH is defined to  contain
           a  colon-separated  list  of directories, then these are searched.
           (As a security measure this variable is  ignored  for  set-user-ID
           and set-group-ID programs.)

       o   (ELF only) If the executable file for the calling program contains
           a DT_RUNPATH tag, then the directories  listed  in  that  tag  are
           searched.

       o   The  cache  file  /etc/ld.so.cache  (maintained by ldconfig(8)) is
           checked to see whether it contains an entry for filename.

       o   The directories /lib and /usr/lib are searched (in that order).

--
 ~ygrek


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev

attachment0 (196 bytes) Download Attachment
Andrey Cherezov

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
Добрый день, ygrek!

Ваше сообщение от 30.03.2008 21:20:
> Наверное это проблема той конкретной системы и не стоит на это завязываться.
>        o   The directories /lib and /usr/lib are searched (in that order).
>  
Хорошо, я удалю "/" в либах, а если столкнусь еще раз с незагрузкой, то
буду разбирать
конкретный случай, не отступая в явное указание /usr/lib.
Описанное поведение похоже на виндовое, и это меня устраивает.

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
ygrek-3

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
In reply to this post by Andrey Cherezov
Привет,

 Ещё бага. ENUM-VOCS даёт неверные адреса - без >VIRT'уализации. Сам
FORTH-WORDLIST патчится в spf.f, а VOC-LIST - нет. Как это исправить
простым способом я что-то не могу сообразить. Если бы в VOC-LIST
вторая ячейка указывала на словарь, а не "была им" -- тогда просто.
Из-за этого и не работает WordByAddr.

--
 ~ygrek


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev

attachment0 (196 bytes) Download Attachment
ygrek-3

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
On Tue, 1 Apr 2008 21:37:06 +0300
ygrek <[hidden email]> wrote:

> Привет,
>
>  Ещё бага. ENUM-VOCS даёт неверные адреса - без >VIRT'уализации. Сам
> FORTH-WORDLIST патчится в spf.f, а VOC-LIST - нет. Как это исправить
> простым способом я что-то не могу сообразить. Если бы в VOC-LIST
> вторая ячейка указывала на словарь, а не "была им" -- тогда просто.
> Из-за этого и не работает WordByAddr.

Кажется пофиксил, но немного нехорошим способом..

--
 ~ygrek


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Register now and save $200. Hurry, offer ends at 11:59 p.m.,
Monday, April 7! Use priority code J8TLD2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev

attachment0 (196 bytes) Download Attachment
ygrek-3

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
Привет,
 
 Теперь можно ловить SIGSEGV и SIGFPE
 Исправление простое : в обработчике восстанавливается EDI так чтобы
HANDLER был правильным и делается THROW, что обходит восстановление
регистров ядром и вызов умолчательного системного обработчика.
 Попутно был добавлен posix/config.c который генерит
платформенно-зависимый форт-код (константы). Туда нужно
перенести все зашитые в линуксовом коде константы/смещения.

--
 ~ygrek


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev

attachment0 (196 bytes) Download Attachment
Andrey Cherezov

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
Добрый день, ygrek!

Ваше сообщение от 20.04.2008 18:56:
>  Теперь можно ловить SIGSEGV и SIGFPE
>  Исправление простое : в обработчике восстанавливается EDI так чтобы
> HANDLER был правильным и делается THROW, что обходит восстановление
> регистров ядром и вызов умолчательного системного обработчика.
>  
Ура!

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
1 2 3 4 5