Jonesforth分段错误

8

我所在的系统:

/tmp/jonesforth $ cat /etc/issue
Ubuntu 16.04.1 LTS \n \l

这是一个32位系统。

从annexia存储库克隆:

git clone git://git.annexia.org/git/jonesforth.git

编译通过:
cd jonesforth

/tmp/jonesforth $ make
gcc -m32 -nostdlib -static -Wl,-Ttext,0  -o jonesforth jonesforth.S

测试未通过:
/tmp/jonesforth $ make test
test_stack_trace.f ... --- .test_stack_trace.test   2016-09-17 17:44:59.488492834 -0500
+++ test_stack_trace.f.out  2016-09-17 17:33:11.171189490 -0500
@@ -0,0 +1,6 @@
+TEST4+0 TEST3+0 TEST2+0 TEST+0 
+3 
+TEST4+0 TEST3+32 TEST2+0 TEST+0 
+TEST4+0 TEST3+0 TEST2+4 TEST+0 
+3 
+TEST4+0 TEST3+32 TEST2+4 TEST+0 
Makefile:34: recipe for target 'test_stack_trace.test' failed
make: *** [test_stack_trace.test] Error 1

启动jonesforth时出现分段错误:

/tmp/jonesforth $ cat jonesforth.f - | ./jonesforth 
Segmentation fault
1个回答

11

jonesforth的Makefile条目中移除-Wl,-Ttext,0

jonesforth: jonesforth.S
    gcc -m32 -nostdlib -static $(BUILD_ID_NONE) -o $@ $<

似乎有所帮助。构建成功:

/tmp/jonesforth $ touch jonesforth.S 
/tmp/jonesforth $ make
gcc -m32 -nostdlib -static  -o jonesforth jonesforth.S

测试通过:

/tmp/jonesforth $ make test
test_stack_trace.f ... ok
test_stack.f ... ok
test_comparison.f ... ok
test_assembler.f ... ok
test_exception.f ... ok
test_read_file.f ... ok
test_number.f ... ok

它开始了:

/tmp/jonesforth $ cat jonesforth.f - | ./jonesforth 
JONESFORTH VERSION 47 
14499 CELLS REMAINING
OK 

2
非常感谢您发布这篇文章。我已经在桌子前苦思冥想了几个小时了。 - Andrew Savinykh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接