commit 19b745a8b337b51249448cc249210f5d6423f2d2
parent 5666c60c724d863f86a9038a488e925db2a8962e
Author: Alexander Burger <abu@software-lab.de>
Date: Tue, 16 Oct 2012 09:51:26 +0200
emu64 continued
Diffstat:
2 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/src64/Makefile b/src64/Makefile
@@ -1,4 +1,4 @@
-# 12oct12abu
+# 16oct12abu
# (c) Software Lab. Alexander Burger
.SILENT:
@@ -48,7 +48,7 @@ ifeq ($(UNAME), Linux)
AS = as -mppc64 -a64
endif
endif
- LD-MAIN = -rdynamic -lc -lm -ldl
+ LD-MAIN = -Wl,--no-as-needed -rdynamic -lc -lm -ldl
LD-SHARED = -shared -export-dynamic
STRIP = strip
else
@@ -89,7 +89,7 @@ emu: $(sFiles)
picolisp: $(bin)/picolisp $(lib)/ext $(lib)/ht
$(bin)/picolisp: $(ARCH)$(SYS).base.o
- $(CC) -o $(bin)/picolisp $(ARCH)$(SYS).base.o -Wl,--no-as-needed $(LD-MAIN)
+ $(CC) -o $(bin)/picolisp $(ARCH)$(SYS).base.o $(LD-MAIN)
$(STRIP) $(bin)/picolisp
$(lib)/ext: $(ARCH)$(SYS).ext.o
diff --git a/src64/arch/emu.l b/src64/arch/emu.l
@@ -73,7 +73,7 @@
(cons (cadr @) "Data+@1") )
((absCode X)
(if *FPic
- ()
+ (cons @ (pack "(" *Label "+@1)"))
(cons @ "(Code+@1)") ) )
((and *FPic (assoc X *BaseCode))
(cons @ "(Code+@1)") )
@@ -1027,7 +1027,10 @@
"extern void div2(uint64_t);"
"extern void begin(int,int,int,int,int,int,int);"
"extern void *argv(int,ptr);"
- "extern void retv(int,ptr);" )
+ "extern void retv(int,ptr);"
+ "extern uint16_t Code[];"
+ NIL
+ "op Local[] = {" )
(quote
"uint16_t *PC;"
"uint8_t *Stack;"
@@ -1128,12 +1131,10 @@
" while (--i >= 0)"
" p[i].n = (uint64_t)(unsigned long)((uint8_t**)p)[i];"
"}"
- NIL ) ) )
- (mapc prinl
- (quote
- "uint16_t Code[];"
- NIL
- "op Data[] = {" ) )
+ NIL
+ "uint16_t Code[];"
+ NIL
+ "op Data[] = {" ) ) )
(setq
*AsmData (flip *AsmData)
*AsmCode (flip *AsmCode) )