[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#384243: FTBFS (alpha): assembly syntax errors



Package: numerix
Version: 0.22-1
Severity: serious
Tags: patch
Justification: no longer builds from source

numerix does not build on Alpha:

[...]
alpha-linux-gnu-gcc -fPIC -Wall -O2  -Duse_slong -c -o kernel/n/o/numerix-t.o kernel/n/alpha/numerix.S
kernel/n/alpha/karatsuba.S: Assembler messages:
kernel/n/alpha/karatsuba.S:583: Error: syntax error
kernel/n/alpha/toom.S:379: Warning: operand out of range (-8 is not between 0 and 255)
kernel/n/alpha/toom.S:961: Warning: operand out of range (-8 is not between 0 and 255)
kernel/n/alpha/div_n2.S:309: Error: syntax error
kernel/n/alpha/div_n2.S:415: Error: syntax error
kernel/n/alpha/div_n2.S:541: Error: syntax error
kernel/n/alpha/sqrt_n2.S:141: Error: syntax error
kernel/n/alpha/smod.S:1019: Error: inappropriate arguments for opcode `bsr'
kernel/n/alpha/smod.S:1131: Warning: .end directive names different symbol than .ent
kernel/n/alpha/smod.S:1511: Error: syntax error
kernel/n/alpha/smod.S:1512: Error: syntax error
kernel/n/alpha/smod.S:1545: Warning: .end directive names different symbol than .ent
kernel/n/alpha/cmp.S:63: Error: syntax error
kernel/n/alpha/cmp.S:74: Error: syntax error
make[1]: *** [kernel/n/o/numerix-t.o] Error 1
make[1]: Leaving directory `/build/buildd/numerix-0.22'
make: *** [build-stamp] Error 2

Apparently the author uses Digital Unix, which is a bit sloppy about
correct syntax, and fixes up the invalid s4addq by itself. I've
created a quick patch. I haven't really tested it, though, so you
should probably run it by the upstream author.

diff -Nurp numerix-0.22/kernel/n/alpha/cmp.S /tmp/numerix-0.22/kernel/n/alpha/cmp.S
--- numerix-0.22/kernel/n/alpha/cmp.S	2006-01-02 16:16:30.000000000 +0100
+++ /tmp/numerix-0.22/kernel/n/alpha/cmp.S	2006-08-22 23:34:09.000000000 +0200
@@ -60,7 +60,7 @@ sn_cmp:
 	subq   _a_,  8,    _a_
 	subq   $0,   1,    $0
 	ldq    $1,   0(_a_)
-	beq    $1    1b
+	beq    $1,   1b
 	addq   $31,  1,    $0
 	ret    $31,  ($26),1
 	
@@ -71,7 +71,7 @@ sn_cmp:
 	subq   _b_,  8,    _b_
 	addq   $0,   1,    $0
 	ldq    $1,   0(_b_)
-	beq    $1    2b
+	beq    $1,   2b
 	subq   $31,  1,    $0
 	ret    $31,  ($26),1
 	
diff -Nurp numerix-0.22/kernel/n/alpha/div_n2.S /tmp/numerix-0.22/kernel/n/alpha/div_n2.S
--- numerix-0.22/kernel/n/alpha/div_n2.S	2006-06-09 13:29:29.000000000 +0200
+++ /tmp/numerix-0.22/kernel/n/alpha/div_n2.S	2006-08-22 23:18:44.000000000 +0200
@@ -108,7 +108,7 @@
         beq    y,    3f                                                    ;\
         addq   q,    1,    q    /* q++                                  */ ;\
         beq    q,    2f         /* si débordement, abandonne            */ ;\
-        subq   c,    a     c    /* c:d -= a                             */ ;\
+        subq   c,    a,    c    /* c:d -= a                             */ ;\
         br     $31,  1b                                                    ;\
 2:                                                                         ;\
         subq   q,    1,    q                                               ;\
diff -Nurp numerix-0.22/kernel/n/alpha/karatsuba.S /tmp/numerix-0.22/kernel/n/alpha/karatsuba.S
--- numerix-0.22/kernel/n/alpha/karatsuba.S	2006-01-02 16:19:48.000000000 +0100
+++ /tmp/numerix-0.22/kernel/n/alpha/karatsuba.S	2006-08-22 23:15:47.000000000 +0200
@@ -580,7 +580,7 @@ L(nogp):
 	s8addq $0,   $16,  $18	# r18 <- &a1
 	bis    $2,   $2,   $19  # r19 <- q
 	bsr    $26,  .Lsn_asub_nogp # c[0..p-1] <- |a0-a1|
-	stq    $31   _x_
+	stq    $31,  _x_
 	
 	# calcule |a0-a1|^2, a0^2, a1^2
 	ldq    $16,  _c_
diff -Nurp numerix-0.22/kernel/n/alpha/smod.S /tmp/numerix-0.22/kernel/n/alpha/smod.S
--- numerix-0.22/kernel/n/alpha/smod.S	2006-05-25 14:25:37.000000000 +0200
+++ /tmp/numerix-0.22/kernel/n/alpha/smod.S	2006-08-22 23:45:02.000000000 +0200
@@ -1016,7 +1016,7 @@ L(small):
 	# d1:d2 <- a^2 mod (BASE^n - 1)
 	bis    $18, $18, $17
 	lda    $18, _d_
-	bsr    .Lsn_toomsqr_nogp
+	bsr    $26, .Lsn_toomsqr_nogp
 	br     $31, .Lsn_smul_small_aux # continue auvec smul
 
 	#undef _d_
@@ -1128,7 +1128,7 @@ L(big_odd):
 #ifdef debug_smul
         .end sn_ssqr_buggy
 #else
-        .end sn_sqr
+        .end sn_ssqr
 #endif
 #undef L
 #endif /* assembly_sn_ssqr */
@@ -1508,8 +1508,8 @@ L(inc_b):
 	sll    $3,  3,   $3
 	lda    $27, sn_addloop
 	subq   _b_, $3,  $16
-	s8addq _k_, $16  $18
-	s8addq _k_, $16  $20
+	s8addq _k_, $16, $18
+	s8addq _k_, $16, $20
 	s4addq $3,  $27, $27
 	bis    $31, $31, $0
 	jsr    $27, ($27)
@@ -1542,7 +1542,7 @@ L(inc_b):
 #ifdef debug_sjoin
         .end sn_sjoin3_buggy
 #else
-        .end sn_sqr
+        .end sn_sjoin3
 #endif
 #undef L
 #endif /* assembly_sn_sjoin3 */
diff -Nurp numerix-0.22/kernel/n/alpha/toom.S /tmp/numerix-0.22/kernel/n/alpha/toom.S
--- numerix-0.22/kernel/n/alpha/toom.S	2006-01-12 14:25:42.000000000 +0100
+++ /tmp/numerix-0.22/kernel/n/alpha/toom.S	2006-08-22 23:28:55.000000000 +0200
@@ -376,7 +376,8 @@ L(nogp):
 	s8addq $17, $16, $18    # r18 <- &c[p+3]
 	bis    $17, $17, $19    # r19 <- p+3
 	lda    $20, _d_
-	s4addq $17, -8,  $0     # r0 <- 4p+4
+	lda    $0, -8
+	s4addq $17, $0,  $0     # r0 <- 4p+4
 	s8addq $0,  $20, $20    # r20 <- &f
 
 	# diminue les longeurs des facteurs si les chiffres de tête sont nuls
@@ -958,7 +959,8 @@ L(nogp):
 	ldq    $17, _p_
 	addq   $17, 3,   $17	# r17 <- p+3
 	lda    $18, _d_
-	s4addq $17, -8,  $0     # r0 <- 4p+4
+	lda    $0, -8
+	s4addq $17, $0,  $0     # r0 <- 4p+4
 	s8addq $0,  $18, $18    # r18 <- &f
 
 	# diminue les longeurs des facteurs si les chiffres de tête sont nuls



-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: alpha
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.17.5
Locale: LANG=C, LC_CTYPE=de_DE@euro (charmap=ISO-8859-15)



Reply to: