Bug#441122: FTBFS on mips/mipsel
Thiemo Seufer
ths at networkno.de
Sat Nov 3 22:15:35 UTC 2007
Package: cacao
Version: 0.98-2
Tags: patch
Cacao currently fails to build on mips and mipsel. The appended patch
fixes it. The last hunk of the patch fixes the "undefined reference to
__data_start" mentioned in #441122 for mips/mipsel, s390 may need a
similiar fix.
Thiemo
--- src/vm/jit/mips/linux/md-os.c.old 2007-11-03 21:17:03.000000000 +0000
+++ src/vm/jit/mips/linux/md-os.c 2007-11-03 21:21:16.000000000 +0000
@@ -119,7 +119,8 @@ void md_signal_handler_sigsegv(int sig,
sp = (u1 *) (ptrint) _gregs[REG_SP];
ra = (u1 *) (ptrint) _gregs[REG_RA]; /* this is correct for leafs */
-#if !defined(__UCLIBC__) && ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 5))
+#if !defined(__UCLIBC__)
+# if ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 5))
/* NOTE: We only need this for pre glibc-2.5. */
xpc = (u1 *) (ptrint) _mc->pc;
@@ -142,6 +143,9 @@ void md_signal_handler_sigsegv(int sig,
xpc = xpc - 4;
break;
}
+# else
+ xpc = (u1 *) (ptrint) _mc->pc;
+# endif
#else
xpc = (u1 *) (ptrint) _gregs[CTX_EPC];
#endif
--- src/vm/jit/mips/asmpart.S.old 2007-11-03 21:26:58.000000000 +0000
+++ src/vm/jit/mips/asmpart.S 2007-11-03 21:30:03.000000000 +0000
@@ -219,7 +219,7 @@ L_asm_vm_call_method_compute_pv:
ald a0,offvmargdata(t0)
#endif
#if !defined(ENABLE_SOFT_FLOAT)
- ldc1 fa0,offvmargdata(t0)
+ l.d fa0,offvmargdata(t0)
#endif
aaddi s7,s7,-1
blez s7,calljava_argsloaded
@@ -230,7 +230,7 @@ L_asm_vm_call_method_compute_pv:
ald a1,offvmargdata+sizevmarg*1(t0)
#endif
#if !defined(ENABLE_SOFT_FLOAT)
- ldc1 fa1,offvmargdata+sizevmarg*1(t0)
+ l.d fa1,offvmargdata+sizevmarg*1(t0)
#endif
aaddi s7,s7,-1
blez s7,calljava_argsloaded
@@ -612,12 +612,12 @@ ex_int2:
ldc1 fs3,-1*8(t1)
#else /* SIZEOF_VOID_P == 8 */
# if !defined(ENABLE_SOFT_FLOAT)
- ldc1 fs0,-4*8(t1)
- ldc1 fs1,-3*8(t1)
- ldc1 fs2,-2*8(t1)
- ldc1 fs3,-1*8(t1)
- ldc1 fs4,-1*8(t1)
- ldc1 fs5,-1*8(t1)
+ l.d fs0,-4*8(t1)
+ l.d fs1,-3*8(t1)
+ l.d fs2,-2*8(t1)
+ l.d fs3,-1*8(t1)
+ l.d fs4,-1*8(t1)
+ l.d fs5,-1*8(t1)
# endif /* !defined(ENABLE_SOFT_FLOAT) */
#endif /* SIZEOF_VOID_P == 8 */
@@ -861,22 +861,22 @@ asm_replacement_out:
#else /* SIZEOF_VOID_P == 8 */
- sdc1 $f0 ,( 0*8+offes_fltregs)(sp)
- sdc1 $f2 ,( 2*8+offes_fltregs)(sp)
- sdc1 $f4 ,( 4*8+offes_fltregs)(sp)
- sdc1 $f6 ,( 6*8+offes_fltregs)(sp)
- sdc1 $f8 ,( 8*8+offes_fltregs)(sp)
- sdc1 $f10,(10*8+offes_fltregs)(sp)
- sdc1 $f12,(12*8+offes_fltregs)(sp)
- sdc1 $f14,(14*8+offes_fltregs)(sp)
- sdc1 $f16,(16*8+offes_fltregs)(sp)
- sdc1 $f18,(18*8+offes_fltregs)(sp)
- sdc1 $f20,(20*8+offes_fltregs)(sp)
- sdc1 $f22,(22*8+offes_fltregs)(sp)
- sdc1 $f24,(24*8+offes_fltregs)(sp)
- sdc1 $f26,(26*8+offes_fltregs)(sp)
- sdc1 $f28,(28*8+offes_fltregs)(sp)
- sdc1 $f30,(30*8+offes_fltregs)(sp)
+ s.d $f0 ,( 0*8+offes_fltregs)(sp)
+ s.d $f2 ,( 2*8+offes_fltregs)(sp)
+ s.d $f4 ,( 4*8+offes_fltregs)(sp)
+ s.d $f6 ,( 6*8+offes_fltregs)(sp)
+ s.d $f8 ,( 8*8+offes_fltregs)(sp)
+ s.d $f10,(10*8+offes_fltregs)(sp)
+ s.d $f12,(12*8+offes_fltregs)(sp)
+ s.d $f14,(14*8+offes_fltregs)(sp)
+ s.d $f16,(16*8+offes_fltregs)(sp)
+ s.d $f18,(18*8+offes_fltregs)(sp)
+ s.d $f20,(20*8+offes_fltregs)(sp)
+ s.d $f22,(22*8+offes_fltregs)(sp)
+ s.d $f24,(24*8+offes_fltregs)(sp)
+ s.d $f26,(26*8+offes_fltregs)(sp)
+ s.d $f28,(28*8+offes_fltregs)(sp)
+ s.d $f30,(30*8+offes_fltregs)(sp)
#endif /* SIZEOF_VOID_P == 8 */
@@ -989,22 +989,22 @@ asm_replacement_in:
#else /* SIZEOF_VOID_P == 8 */
- ldc1 $f0 ,( 0*8+offes_fltregs)(a0)
- ldc1 $f2 ,( 2*8+offes_fltregs)(a0)
- ldc1 $f4 ,( 4*8+offes_fltregs)(a0)
- ldc1 $f6 ,( 6*8+offes_fltregs)(a0)
- ldc1 $f8 ,( 8*8+offes_fltregs)(a0)
- ldc1 $f10,(10*8+offes_fltregs)(a0)
- ldc1 $f12,(12*8+offes_fltregs)(a0)
- ldc1 $f14,(14*8+offes_fltregs)(a0)
- ldc1 $f16,(16*8+offes_fltregs)(a0)
- ldc1 $f18,(18*8+offes_fltregs)(a0)
- ldc1 $f20,(20*8+offes_fltregs)(a0)
- ldc1 $f22,(22*8+offes_fltregs)(a0)
- ldc1 $f24,(24*8+offes_fltregs)(a0)
- ldc1 $f26,(26*8+offes_fltregs)(a0)
- ldc1 $f28,(28*8+offes_fltregs)(a0)
- ldc1 $f30,(30*8+offes_fltregs)(a0)
+ l.d $f0 ,( 0*8+offes_fltregs)(a0)
+ l.d $f2 ,( 2*8+offes_fltregs)(a0)
+ l.d $f4 ,( 4*8+offes_fltregs)(a0)
+ l.d $f6 ,( 6*8+offes_fltregs)(a0)
+ l.d $f8 ,( 8*8+offes_fltregs)(a0)
+ l.d $f10,(10*8+offes_fltregs)(a0)
+ l.d $f12,(12*8+offes_fltregs)(a0)
+ l.d $f14,(14*8+offes_fltregs)(a0)
+ l.d $f16,(16*8+offes_fltregs)(a0)
+ l.d $f18,(18*8+offes_fltregs)(a0)
+ l.d $f20,(20*8+offes_fltregs)(a0)
+ l.d $f22,(22*8+offes_fltregs)(a0)
+ l.d $f24,(24*8+offes_fltregs)(a0)
+ l.d $f26,(26*8+offes_fltregs)(a0)
+ l.d $f28,(28*8+offes_fltregs)(a0)
+ l.d $f30,(30*8+offes_fltregs)(a0)
#endif /* SIZEOF_VOID_P == 8 */
@@ -1058,13 +1058,19 @@ asm_criticalsections:
compare_and_swap:
1:
+ .set mips3
all v0,0(a0)
+ .set mips0
bne v0,a1,2f
move t0,a2
+ .set mips3
asc t0,0(a0)
+ .set mips0
beqz t0,1b
2:
+ .set mips2
sync
+ .set mips0
j ra
.end compare_and_swap
--- src/vm/jit/mips/md-asm.h.old 2007-11-03 21:32:21.000000000 +0000
+++ src/vm/jit/mips/md-asm.h 2007-11-03 21:35:08.000000000 +0000
@@ -336,12 +336,12 @@
#define SAVE_RETURN_REGISTERS(off) \
sw v0,(0+(off))*4(sp) ; \
sw v1,(1+(off))*4(sp) ; \
- sdc1 fv0,(2+(off))*4(sp) ;
+ s.d fv0,(2+(off))*4(sp) ;
#define RESTORE_RETURN_REGISTERS(off) \
lw v0,(0+(off))*4(sp) ; \
lw v1,(1+(off))*4(sp) ; \
- ldc1 fv0,(2+(off))*4(sp) ;
+ l.d fv0,(2+(off))*4(sp) ;
#define SAVE_ARGUMENT_REGISTERS(off) \
@@ -349,16 +349,16 @@
sw a1,(1+(off))*4(sp) ; \
sw a2,(2+(off))*4(sp) ; \
sw a3,(3+(off))*4(sp) ; \
- sdc1 fa0,(4+(off))*4(sp) ; \
- sdc1 fa1,(6+(off))*4(sp) ;
+ s.d fa0,(4+(off))*4(sp) ; \
+ s.d fa1,(6+(off))*4(sp) ;
#define RESTORE_ARGUMENT_REGISTERS(off) \
lw a0,(0+(off))*4(sp) ; \
lw a1,(1+(off))*4(sp) ; \
lw a2,(2+(off))*4(sp) ; \
lw a3,(3+(off))*4(sp) ; \
- ldc1 fa0,(4+(off))*4(sp) ; \
- ldc1 fa1,(6+(off))*4(sp) ;
+ l.d fa0,(4+(off))*4(sp) ; \
+ l.d fa1,(6+(off))*4(sp) ;
#define SAVE_TEMPORARY_REGISTERS(off) \
@@ -370,10 +370,10 @@
sw t5,(5+(off))*4(sp) ; \
sw t6,(6+(off))*4(sp) ; \
sw t7,(7+(off))*4(sp) ; \
- sdc1 ft0,(8+(off))*4(sp) ; \
- sdc1 ft1,(10+(off))*4(sp) ; \
- sdc1 ft2,(12+(off))*4(sp) ; \
- sdc1 ft3,(14+(off))*4(sp) ;
+ s.d ft0,(8+(off))*4(sp) ; \
+ s.d ft1,(10+(off))*4(sp) ; \
+ s.d ft2,(12+(off))*4(sp) ; \
+ s.d ft3,(14+(off))*4(sp) ;
#define RESTORE_TEMPORARY_REGISTERS(off) \
lw t0,(0+(off))*4(sp) ; \
@@ -384,10 +384,10 @@
lw t5,(5+(off))*4(sp) ; \
lw t6,(6+(off))*4(sp) ; \
lw t7,(7+(off))*4(sp) ; \
- ldc1 ft0,(8+(off))*4(sp) ; \
- ldc1 ft1,(10+(off))*4(sp) ; \
- ldc1 ft2,(12+(off))*4(sp) ; \
- ldc1 ft3,(14+(off))*4(sp) ;
+ l.d ft0,(8+(off))*4(sp) ; \
+ l.d ft1,(10+(off))*4(sp) ; \
+ l.d ft2,(12+(off))*4(sp) ; \
+ l.d ft3,(14+(off))*4(sp) ;
#endif /* SIZEOF_VOID_P == 8 */
--- src/mm/boehm-gc/include/private/gcconfig.h.old 2007-11-03 21:58:03.000000000 +0000
+++ src/mm/boehm-gc/include/private/gcconfig.h 2007-11-03 21:59:03.000000000 +0000
@@ -1373,8 +1373,7 @@
# define DYNAMIC_LOADING
extern int _end[];
# define DATAEND (_end)
- extern int __data_start[];
-# define DATASTART ((ptr_t)(__data_start))
+# define SEARCH_FOR_DATA_START
# define ALIGNMENT 4
# define USE_GENERIC_PUSH_REGS
# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 2 || __GLIBC__ > 2
More information about the pkg-java-maintainers
mailing list