diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2009-12-03 11:35:27 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2009-12-03 11:35:27 -0800 |
commit | ad025d8db847c1100b25478191a1a0ca9ad22db1 (patch) | |
tree | 9ef71058871710ac3737f5902d0ad82014f5c5b8 | |
parent | 8c53d9597b4d1dbe3da719f106ae46bf6ac3b1e8 (diff) | |
download | txr-ad025d8db847c1100b25478191a1a0ca9ad22db1.tar.gz txr-ad025d8db847c1100b25478191a1a0ca9ad22db1.tar.bz2 txr-ad025d8db847c1100b25478191a1a0ca9ad22db1.zip |
Fix for failing test suite on MIPS machine, due to
gc failing to mark a local variable in txr_main.
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | txr.c | 4 |
2 files changed, 14 insertions, 2 deletions
@@ -1,3 +1,15 @@ +2009-12-03 Kaz Kylheku <kkylheku@gmail.com> + + Fix for failing test suite on MIPS machine, due to + gc failing to mark a local variable in txr_main. + + * txr.c (txr_main): Changed from internal linkage to external. + This prevents gcc -O2 from inlining txr_main into main. + We need separate stack frames for main and txr_main, + in order to be sure that when walking to the bottom of + stack pointer, we visit all locals in main. This is the + whole reason why there is a separate txr_main. + 2009-12-02 Kaz Kylheku <kkylheku@gmail.com> * Makefile (tests): Don't depend on the executable. Otherwise, @@ -138,7 +138,7 @@ static val remove_hash_bang_line(val spec) } } -static int txr_main(int argc, char **argv); +int txr_main(int argc, char **argv); int main(int argc, char **argv) { @@ -148,7 +148,7 @@ int main(int argc, char **argv) return txr_main(argc, argv); } -static int txr_main(int argc, char **argv) +int txr_main(int argc, char **argv) { val specstring = nil; val spec = nil; |