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