On Thu, 16 Jan 2014 03:15:06 +0100 (CET)
[email protected] wrote:
> Re: [Ghdl-discuss] ghdl-0.31 source release!
> This is controlled by grt/Makefile.inc.  There is already a case for
> i386 FreeBSD.
> 

I tried a few variations in [translate/grt/Makefile.inc] without any
success. Since I don't have anything like a comprehensive understanding
of what is going on (yet), it might be worthwhile to ask for guidance.


GRT stack implementation for amd64 (x86_64)
translate/grt/config/amd64.S

--- Makefile.inc.orig   2014-01-16 09:45:09.000000000 -0500
+++ Makefile.inc        2014-01-16 09:57:52.000000000 -0500
@@ -56,7 +56,12 @@
 ifeq ($(filter-out i%86 freebsd%,$(arch) $(osys)),)
   GRT_TARGET_OBJS=i386.o linux.o times.o
   GRT_EXTRA_LIB=-lm $(GRT_ELF_OPTS)
-  ADAC=gnatgcc
+  ADAC=ada
+endif
+ifeq ($(filter-out x86_64 freebsd%,$(arch) $(osys)),)
+  GRT_TARGET_OBJS=amd64.o linux.o times.o
+  GRT_EXTRA_LIB=-lm $(GRT_ELF_OPTS)
+  ADAC=ada
 endif
 ifeq ($(filter-out i%86 darwin%,$(arch) $(osys)),)
   GRT_TARGET_OBJS=i386.o linux.o times.o

[build then test...]

$ ghdl -r dlx_test_behaviour --assert-level=note
0 X"20020000"
4 X"AC020018"
8 X"20420001"
12 X"6441000A"
16 X"1420FFF0"
20 X"44000000"
ghdl: exec error

--------------------------------
GRT stack implementation for x86
translate/grt/config/i386.S

--- Makefile.inc.orig   2014-01-16 09:45:09.000000000 -0500
+++ Makefile.inc        2014-01-16 10:21:40.000000000 -0500
@@ -56,7 +56,12 @@
 ifeq ($(filter-out i%86 freebsd%,$(arch) $(osys)),)
   GRT_TARGET_OBJS=i386.o linux.o times.o
   GRT_EXTRA_LIB=-lm $(GRT_ELF_OPTS)
-  ADAC=gnatgcc
+  ADAC=ada
+endif
+ifeq ($(filter-out x86_64 freebsd%,$(arch) $(osys)),)
+  GRT_TARGET_OBJS=i386.o linux.o times.o
+  GRT_EXTRA_LIB=-lm $(GRT_ELF_OPTS)
+  ADAC=ada
 endif
 ifeq ($(filter-out i%86 darwin%,$(arch) $(osys)),)
   GRT_TARGET_OBJS=i386.o linux.o times.o

[building...]

gcc -c -O -g -o
i386.o 
/home/hanzer/ghdl_build/source/gcc-4.8-20130808/gcc/vhdl/grt/config/i386.S 
/home/hanzer/ghdl_build/source/gcc-4.8-20130808/gcc/vhdl/grt/config/i386.S:
Assembler
messages: 
/home/hanzer/ghdl_build/source/gcc-4.8-20130808/gcc/vhdl/grt/config/i386.S:49:
Error: suffix or operands invalid for
`push' 
/home/hanzer/ghdl_build/source/gcc-4.8-20130808/gcc/vhdl/grt/config/i386.S:102:
Error: suffix or operands invalid for
`push' 
/home/hanzer/ghdl_build/source/gcc-4.8-20130808/gcc/vhdl/grt/config/i386.S:103:
Error: suffix or operands invalid for
`push' 
/home/hanzer/ghdl_build/source/gcc-4.8-20130808/gcc/vhdl/grt/config/i386.S:104:
Error: suffix or operands invalid for
`push' 
/home/hanzer/ghdl_build/source/gcc-4.8-20130808/gcc/vhdl/grt/config/i386.S:105:
Error: suffix or operands invalid for
`push' 
/home/hanzer/ghdl_build/source/gcc-4.8-20130808/gcc/vhdl/grt/config/i386.S:111:
Error: suffix or operands invalid for
`pop' 
/home/hanzer/ghdl_build/source/gcc-4.8-20130808/gcc/vhdl/grt/config/i386.S:112:
Error: suffix or operands invalid for
`pop' 
/home/hanzer/ghdl_build/source/gcc-4.8-20130808/gcc/vhdl/grt/config/i386.S:113:
Error: suffix or operands invalid for
`pop' 
/home/hanzer/ghdl_build/source/gcc-4.8-20130808/gcc/vhdl/grt/config/i386.S:114:
Error: suffix or operands invalid for `pop' gmake[3]: *** [i386.o]
Error 1

---------------------------------
try generic implementation based on pthreads

--- Makefile.inc.orig   2014-01-16 09:45:09.000000000 -0500
+++ Makefile.inc        2014-01-16 10:32:22.000000000 -0500
@@ -56,7 +56,12 @@
 ifeq ($(filter-out i%86 freebsd%,$(arch) $(osys)),)
   GRT_TARGET_OBJS=i386.o linux.o times.o
   GRT_EXTRA_LIB=-lm $(GRT_ELF_OPTS)
-  ADAC=gnatgcc
+  ADAC=ada
+endif
+ifeq ($(filter-out x86_64 freebsd%,$(arch) $(osys)),)
+  GRT_TARGET_OBJS=pthread.o times.o
+  GRT_EXTRA_LIB=-lpthread -lm 
+  ADAC=ada
 endif
 ifeq ($(filter-out i%86 darwin%,$(arch) $(osys)),)
   GRT_TARGET_OBJS=i386.o linux.o times.o

[build then test...]

$ ghdl -r dlx_test_behaviour --assert-level=note
Assertion failed: (res == 0), function grt_stack_switch,
file 
/home/hanzer/ghdl_build/source/gcc-4.8-20130808/gcc/vhdl/grt/config/pthread.c,
line 180. Assertion failed: (res == 0), function grt_stack_switch,
file 
/home/hanzer/ghdl_build/source/gcc-4.8-20130808/gcc/vhdl/grt/config/pthread.c,
line 174. ghdl: exec error

---------------------------------
try generic implementation based on pthreads
(-pthread instead of -lpthread)
http://www.freebsd.org/doc/en/books/porters-handbook/dads-pthread.html

--- Makefile.inc.orig   2014-01-16 09:45:09.000000000 -0500
+++ Makefile.inc        2014-01-16 11:05:30.000000000 -0500
@@ -56,7 +56,12 @@
 ifeq ($(filter-out i%86 freebsd%,$(arch) $(osys)),)
   GRT_TARGET_OBJS=i386.o linux.o times.o
   GRT_EXTRA_LIB=-lm $(GRT_ELF_OPTS)
-  ADAC=gnatgcc
+  ADAC=ada
+endif
+ifeq ($(filter-out x86_64 freebsd%,$(arch) $(osys)),)
+  GRT_TARGET_OBJS=pthread.o times.o
+  GRT_EXTRA_LIB=-pthread -lm 
+  ADAC=ada
 endif
 ifeq ($(filter-out i%86 darwin%,$(arch) $(osys)),)
   GRT_TARGET_OBJS=i386.o linux.o times.o

[build then test...]

]$ ghdl -r dlx_test_behaviour --assert-level=note
Assertion failed: (res == 0), function grt_stack_switch,
file 
/home/hanzer/ghdl_build/source/gcc-4.8-20130808/gcc/vhdl/grt/config/pthread.c,
line 180. Assertion failed: (res == 0), function grt_stack_switch,
file 
/home/hanzer/ghdl_build/source/gcc-4.8-20130808/gcc/vhdl/grt/config/pthread.c,
line 174. ghdl: exec error


Attachment: signature.asc
Description: PGP signature

_______________________________________________
Ghdl-discuss mailing list
[email protected]
https://mail.gna.org/listinfo/ghdl-discuss

Reply via email to