On Wed, 21 May 2008 08:00:39 +0300
ygrek <
ygrek@...> 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
Spf-dev@...
https://lists.sourceforge.net/lists/listinfo/spf-dev