Quantcast

[Fwd: Re: [spf4linux] на gentoo тоже компилируется, но собранная версия не работает, хотя собранная под debian версия там работает]

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[Fwd: Re: [spf4linux] на gentoo тоже компилируется, но собранная версия не работает, хотя собранная под debian версия там работает]

Andrey Cherezov
Привет!

В общем, текущая CVS-версия компилируется (линуксовым spf4, собранным под debian), но не работает - ни на FC8, ни на Gentoo.
Т.е. в качестве платформы для сборки рабочих ELF у меня получается использовать только debian (испытывал Ubuntu и andLinux).
От версии ld и gcc не зависит (на FC8 обновлял до текущих).
Запрошенные файлы прилагаю. В чем грабли на этих системах - не пойму :( Может с автовключаемым crt какая-то несовместимость?
ELF получается больше на 2-3 Кб, чем на debain.

-------- Исходное сообщение --------
Тема: Re: [spf4linux] на gentoo тоже компилируется, но собранная версия не работает, хотя собранная под debian версия там работает
Дата: Tue, 20 May 2008 20:55:22 +0300
От: ygrek [hidden email]

On Tue, 20 May 2008 18:20:29 +0300
Andrey Cherezov [hidden email] wrote:

> ac SPF # ./spf4
> Ошибка сегментирования
> 
> ac SPF # uname -a
> Linux ac.koenig.ru 2.6.18-028stab053 #1 SMP Tue Apr 29 00:19:38 EEST 
> 2008 i686 Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz GenuineIntel GNU/Linux
> 
> Бинарник прилагаю.

Лучше шли в spf-dev. Я не настолько хорошо разбираюсь что там и как.
Скорее всего дело в линковке. Думаю надо написать правильный скрипт ld, но пока не знаю как :)
Может быть spf-dev придумает что-нибудь более надёжное..
На всякий случай пришли все сгенеренные файлы - spf4.o posix/config.auto.f и вывод ld --verbose

-- 
 ~ygrek

===========
[hidden email]'s password:
cvs checkout: Updating src
U src/Makefile
U src/compile
U src/compile.bat
U src/default.ld
U src/diff.txt
U src/done.f
U src/elf.f
U src/forth.ld
U src/macroopt.f
U src/noopt.f
U src/spf.f
U src/spf.fres
U src/spf.ico
U src/spf.rc
U src/spf_compileoptions.f
U src/spf_con_io.f
U src/spf_date.f
U src/spf_defkern.f
U src/spf_except.f
U src/spf_floatkern.f
U src/spf_forthproc.f
U src/spf_forthproc_hl.f
U src/spf_init.f
U src/spf_module.f
U src/spf_print.f
U src/spf_stub.f
U src/spf_xmlhelp.f
U src/tc-dl-imm.f
U src/tc-dl-tc.f
U src/tc-dl.f
U src/tc_spf.F
U src/tsave.f
U src/xsave.f
cvs checkout: Updating src/compiler
U src/compiler/spf_compile.f
U src/compiler/spf_compile0.f
U src/compiler/spf_defwords.f
U src/compiler/spf_error.f
U src/compiler/spf_find.f
U src/compiler/spf_immed_control.f
U src/compiler/spf_immed_lit.f
U src/compiler/spf_immed_loop.f
U src/compiler/spf_immed_transl.f
U src/compiler/spf_inline.f
U src/compiler/spf_literal.f
U src/compiler/spf_modules.f
U src/compiler/spf_nonopt.f
U src/compiler/spf_parser.f
U src/compiler/spf_read_source.f
U src/compiler/spf_translate.f
U src/compiler/spf_wordlist.f
U src/compiler/spf_words.f
cvs checkout: Updating src/posix
U src/posix/.cvsignore
U src/posix/Makefile
U src/posix/api.f
U src/posix/con_io.f
U src/posix/config.c
U src/posix/const.f
U src/posix/defwords.f
U src/posix/dl.f
U src/posix/envir.f
U src/posix/except.f
U src/posix/init.f
U src/posix/io.f
U src/posix/memory.f
U src/posix/module.f
U src/posix/mtask.f
U src/posix/save.f
cvs checkout: Updating src/win
U src/win/spf_pe_save.f
U src/win/spf_win_api.f
U src/win/spf_win_cgi.f
U src/win/spf_win_con_io.f
U src/win/spf_win_const.f
U src/win/spf_win_conv.f
U src/win/spf_win_defwords.f
U src/win/spf_win_envir.f
U src/win/spf_win_except.f
U src/win/spf_win_init.f
U src/win/spf_win_io.f
U src/win/spf_win_memory.f
U src/win/spf_win_module.f
U src/win/spf_win_mtask.f
U src/win/spf_win_proc.f

cvs checkout: Updating lib
U lib/ENVIR.SPF
U lib/SPF.ERR
U lib/SPF.eng.ERR
cvs checkout: Updating lib/alg
U lib/alg/lzss.f
U lib/alg/md5-jz.f
U lib/alg/rle.f
cvs checkout: Updating lib/asm
U lib/asm/486ASM.DOC
U lib/asm/486asm.f
U lib/asm/COPYASM.486
U lib/asm/README.TXT
U lib/asm/SUPPORT.486
U lib/asm/asmmac.f
cvs checkout: Updating lib/bench
cvs checkout: Updating lib/ext
U lib/ext/case.f
U lib/ext/caseins-tools.f
U lib/ext/caseins.f
U lib/ext/const.f
U lib/ext/disasm.f
U lib/ext/disasmi.f
U lib/ext/help.f
U lib/ext/locals.f
U lib/ext/onoff.f
U lib/ext/patch.f
U lib/ext/rnd.f
U lib/ext/spf-asm-tmp.f
U lib/ext/spf-asm.f
U lib/ext/struct.f
U lib/ext/util.f
U lib/ext/vocs.f
cvs checkout: Updating lib/ext/debug
U lib/ext/debug/accert.f
U lib/ext/debug/throw.f
U lib/ext/debug/tracer.f
cvs checkout: Updating lib/include
U lib/include/README.TXT
U lib/include/ansi-block.f
U lib/include/ansi-current.f
U lib/include/ansi-file.f
U lib/include/ansi.f
U lib/include/common.f
U lib/include/core-ext.f
U lib/include/defer.f
U lib/include/double.f
U lib/include/facil.f
U lib/include/float.f
U lib/include/float2.f
U lib/include/string.f
U lib/include/tools.f
cvs checkout: Updating lib/posix
U lib/posix/key.f
cvs checkout: Updating lib/std
cvs checkout: Updating lib/win
U lib/win/const.f
U lib/win/cslog.f
U lib/win/mutex.f
U lib/win/osver.f
U lib/win/winerr.f
cvs checkout: Updating lib/win/api-call
U lib/win/api-call/altwinapi.f
U lib/win/api-call/capi.f
U lib/win/api-call/capi2.f
cvs checkout: Updating lib/win/spfgui
U lib/win/spfgui/dtyps.f
U lib/win/spfgui/spfgui.f
cvs checkout: Updating lib/win/spfwc
cvs checkout: Updating lib/win/winconst
U lib/win/winconst/windows.const

ac src # ./compile
rm: невозможно удалить `spf4.o': Нет такого файла или каталога
make: Entering directory `/root/SPF/src/posix'
gcc -Wall -Werror -O0 -g config.c -oconfig.gen
../config.gen > config.auto.f
make: Leaving directory `/root/SPF/src/posix'
Wait a bit while compiling...

No src/compile.ini - using defaults
Build options :
     CREATE-XML-HELP : FALSE
             ARCH-P6 : FALSE
     BUILD-OPTIMIZER : FALSE
       USE-OPTIMIZER : FALSE
    OPTIMIZE-BY-SIZE : FALSE
           WIDE-CHAR : FALSE
    UNIX-ENVIRONMENT : TRUE
        TARGET-POSIX : TRUE

Base address of the image 0x8082000
FIXME test return result of sigaction
Dummy B, B@ B! and /CHAR
=============================================================
Done. Saving the system.
=============================================================
VIRT offset is -204800
Используются внутренние спецификации.
Целевая архитектура: i686-pc-linux-gnu
Параметры конфигурации: 
/var/tmp/portage/sys-devel/gcc-4.1.2/work/gcc-4.1.2/configure 
--prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.2 
--includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include 
--datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2 
--mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/man 
--infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/info 
--with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include/g++-v4 
--host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec 
--enable-nls --without-included-gettext --with-system-zlib 
--disable-checking --disable-werror --enable-secureplt 
--disable-libunwind-exceptions --disable-multilib --enable-libmudflap 
--disable-libssp --disable-libgcj --with-arch=i686 
--enable-languages=c,c++,treelang,fortran --enable-shared 
--enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Модель многопотоковости: posix
gcc версия 4.1.2 (Gentoo 4.1.2 p1.0.2)
 /usr/libexec/gcc/i686-pc-linux-gnu/4.1.2/collect2 --eh-frame-hdr -m 
elf_i386 -dynamic-linker /lib/ld-linux.so.2 
/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../crt1.o 
/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../crti.o 
/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/crtbegin.o 
-L/usr/lib/gcc/i686-pc-linux-gnu/4.1.2 
-L/usr/lib/gcc/i686-pc-linux-gnu/4.1.2 
-L/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../../i686-pc-linux-gnu/lib 
-L/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../.. spf4.o -ldl -lpthread 
-Tdefault.ld -Tforth.ld -lgcc --as-needed -lgcc_s --no-as-needed -lc 
-lgcc --as-needed -lgcc_s --no-as-needed 
/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/crtend.o 
/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../crtn.o
ac src # ac src #

ac SPF # ./spf4
Ошибка сегментирования

ac SPF # uname -a
Linux ac.koenig.ru 2.6.18-028stab053 #1 SMP Tue Apr 29 00:19:38 EEST 
2008 i686 Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz GenuineIntel GNU/Linux

Бинарник прилагаю.


-------------------------------------------------------------------------
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

gentoo-spf4.rar (64K) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [Fwd: Re: [spf4linux] на gentoo тоже компилируется, но собранная версия не работает, хотя собранная под debian версия там работает]

Andrey Cherezov
Добрый день!

Моё сообщение от 20.05.2008 21:47:
> ac SPF # ./spf4
> Ошибка сегментирования
>  
Если запускать под gdb, то чуть больше информации о сбое:

Program received signal SIGSEGV, Segmentation fault.
0xb7f286a6 in ?? () from /lib/ld-linux.so.2


-------------------------------------------------------------------------
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [Fwd: Re: [spf4linux] на gentoo тоже компилируется, но собранная версия не работает, хотя собранная под debian версия там работает]

Andrey Cherezov
Моё сообщение от 21.05.2008 5:03:
ac SPF # ./spf4
Ошибка сегментирования  
    
Если запускать под gdb, то чуть больше информации о сбое:

Program received signal SIGSEGV, Segmentation fault.
0xb7f286a6 in ?? () from /lib/ld-linux.so.2
  
Стек на момент сбоя:
(gdb) #0  0xb7f286a6 in ?? () from /lib/ld-linux.so.2
(gdb) #1  0xb7f41650 in _r_debug ()
(gdb) #2  0x20000000 in ?? ()
(gdb) #3  0x00000000 in ?? ()


-------------------------------------------------------------------------
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [Fwd: Re: [spf4linux] на gentoo тоже компилируется, но собранная версия не работает, хотя собранная под debian версия там работает]

ygrek-3
On Wed, 21 May 2008 05:09:37 +0300
Andrey Cherezov <[hidden email]> wrote:

> Моё сообщение от 21.05.2008 5:03:
> >> ac SPF # ./spf4
> >> Ошибка сегментирования  
> >>    
> > Если запускать под gdb, то чуть больше информации о сбое:
> >
> > Program received signal SIGSEGV, Segmentation fault.
> > 0xb7f286a6 in ?? () from /lib/ld-linux.so.2
> >  
> Стек на момент сбоя:
> (gdb) #0  0xb7f286a6 in ?? () from /lib/ld-linux.so.2
> (gdb) #1  0xb7f41650 in _r_debug ()
> (gdb) #2  0x20000000 in ?? ()
> (gdb) #3  0x00000000 in ?? ()
Гипотеза.
В обоих бинарниках (fc8 и gentoo) было больше сегментов чем в рабочих.
readelf -l spf4
Тот default.ld который в src рассчитан именно на 8 (там вручную
патчилось одно значение). Но с другой стороны с перегенерированным
default.ld ведь тоже не заработало..
По стеку видно что сбоит подгрузка динамических либ. Если запустить в
gdb и поставить бряку на _start -- то валится до того как попадает на
_start. Т.е. самая первая подгрузка либ -- явно прописанных в секциях
elf. Т.е. с ними что-то не так.

ЗЫ Вот кстати проверка проще :

ygrek@lemon:~/work/forth/spf-bugs/spf4_bin_ac_20080520$ ldd spf4
ldd: завершено с неизвестным выходным кодом (139)

ygrek@lemon:~/work/forth/spf$ ldd spf4
        linux-gate.so.1 =>  (0xffffe000)
        libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7fb8000)
        libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb7fa0000)
        libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7e51000)
        /lib/ld-linux.so.2 (0xb7fce000)

--
 ~ygrek

-------------------------------------------------------------------------
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

attachment0 (196 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [Fwd: Re: [spf4linux] на gentoo тоже компилируется, но собранная версия не работает, хотя собранная под debian версия там работает]

ygrek-3
On Wed, 21 May 2008 08:00:39 +0300
ygrek <[hidden email]> wrote:

> Тот default.ld который в src рассчитан именно на 8 (там вручную
> патчилось одно значение). Но с другой стороны с перегенерированным
> default.ld ведь тоже не заработало..

Раньше линковка запускалась :
cc spf4.o -ldl -lpthread -D_REENTRANT -Xlinker -Tdefault.ld -Xlinker -Tforth.ld -v
(т.е. запускался ld ... -Tdefault.ld -Tforth.ld ...)
т.е. замещался встроенный ld-скрипт на defauld.ld и потом
применялся forth.ld. Очевидно поэтому и работало только на
debian-системах т.к. default.ld был взят из debian'а и в таком случае замещение никакого
эффекта не оказывало, на других же системах происходила бяка.

Теперь линкуемся так
gcc -o spf4 spf4.o -Wl,forth.ld -ldl -lpthread -v
(т.е. ld ... forth.ld ...)
в таком случае forth.ld применяется поверх встроенного в линкер скрипта который на каждой системы свой.

Но с предыдущим forth.ld этот подход в лоб не срабатывал т.к. линкер не объединял
секции .space и .forth в один сегмент и размещал их в совершенно разных адресах и в результате
видимо при запуске форт-система лезла в запрещённую память и сбоила. Пришлось в forth.ld явно
прописать позицию .space сразу же за .forth (.space это место для расширения кодофайла).

В результате default.ld был удалён с CVS и сохранение по SAVE больше не требует никаких дополнительных
файлов (forth.ld генерируется словом forth.ld в src/posix/save.f)

Также из команды линковки убрал -D_REENTRANT т.к. это указание препроцессору и не может влиять на линковку..

Думаю проблема решена.

--
 ~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://sourceforge.net/services/buy/index.php
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev

attachment0 (196 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [Fwd: Re: [spf4linux] на gentoo тоже компилируется, но собранная версия не работает, хотя собранная под debian версия там работает]

Andrey Cherezov
Добрый день!

Сообщение ygrek от 29.06.2008 11:52:
> В результате default.ld был удалён с CVS и сохранение по SAVE больше не требует никаких дополнительных
> файлов (forth.ld генерируется словом forth.ld в src/posix/save.f)
>
> Думаю проблема решена.
>  
Подтверждаю: на redhat и gentoo скомпилированные бинарники теперь
работают без segfault. И сохраняются по SAVE.
Больше Linux'ов, на которых spf4 не работает, найти не удалось :)
В общем, с этой проблемой, как и с предыдущей (полноценный перехват
исключений) Ygrek справился доблестно!

И, по-моему, на текущий момент не осталось серьезных оснований считать
Linux-версию недоделанной.
Поэтому при разработке новых либ стоит как минимум "держать в уме"
возможность их использования не только на Windows.
Пока нет единого способа прозрачного подключения внешних портабельных
dll/so взамен WINAPI: или "<( ))" в Linux-версии.
Я пользуюсь ~ac/lib/ns/so-xt.f (многочисленные примеры см. в
~ac/lib/lin). Но способ привязки к расположению конкретных dll/so там -
предмет для дискуссии :)

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Loading...