Build failure for 5.1.0-RC2 on Mac OS 10.8
Jack Howarth
howarth at bromo.med.uc.edu
Wed Dec 12 00:43:18 CET 2012
On Tue, Dec 11, 2012 at 06:20:22PM -0500, Jack Howarth wrote:
> On Tue, Dec 11, 2012 at 11:15:35PM +0100, Torbjorn Granlund wrote:
> > Jack Howarth <howarth at bromo.med.uc.edu> writes:
> >
> > + .set LC1, L1-Ltab
> > + .long LC1
> >
> > and his reasoning as follows...
> >
> > --------------------------------------------------
> >
> > The deal is, you want the assembler to evaluate the deltas and not
> > pass relocations on to the linker. You can see the compiler doing this
> > is you just compile a simple switch like:
> >
> > Thank for the information.
> >
> > This behaviour is highly unusual, and I know not all Apple assembler
> > releases require that, and I would expect some Apple assemblers to
> > actually reject that syntax.
>
> Torbjorn,
> I can confirm that the attached mod_34lsub1.fixed.s can be compiled
> with 'as -arch x86_64' on the following Apple Xcode releases...
>
> Xcode 4.5.2 on darwin12
> Xcode 4.5.2 on darwin11
> Xcode 4.2 on darwin10
> Xcode 3.2.6 on darwin10
> Xcode 3.1.4 on darwin9
>
> I don't have darwin8 available to check Xcode 2.5 but David Fang
> can probably check that for us.
> Jack
Torbjorn,
I guess this modification isn't quite right anyway. I tried the modification...
--- mpn/x86_64/mod_34lsub1.asm.orig 2012-12-09 16:29:52.000000000 -0500
+++ mpn/x86_64/mod_34lsub1.asm 2012-12-11 18:31:25.000000000 -0500
@@ -107,18 +107,24 @@
lea (%r10, %r8), %r8
jmp *%r8
- RODATA
-L(tab): .long L(0)-L(tab)
- .long L(1)-L(tab)
- .long L(2)-L(tab)
- .long L(3)-L(tab)
- .long L(4)-L(tab)
- .long L(5)-L(tab)
- .long L(6)-L(tab)
- .long L(7)-L(tab)
- .long L(8)-L(tab)
+Ltab:
+ .set LC1, L1-Ltab
+ .long LC1
+ .set LC2, L2-Ltab
+ .long LC2
+ .set LC3, L3-Ltab
+ .long LC3
+ .set LC4, L4-Ltab
+ .long LC4
+ .set LC5, L5-Ltab
+ .long LC5
+ .set LC6, L6-Ltab
+ .long LC6
+ .set LC7, L7-Ltab
+ .long LC7
+ .set LC8, L8-Ltab
+ .long LC8
- TEXT
L(6): add (ap), %rax
adc 8(ap), %rcx
adc 16(ap), %rdx
but this permutation produces a failure in the testsuite at...
mpz_perfect_square_p and mpz_sqrt differ
x =0x100000000000000000000
x2 =0x10000000000000000000000000000000000000000
x2t=0x10000000000000000000000000000000000000000
mpz_perfect_square_p 0
mpz_sqrt 1
/bin/sh: line 1: 12657 Abort trap: 6 ${dir}$tst
FAIL: t-perfsqr
Oh, well.
>
> >
> > It should be noted that no other concurrent assemblers fail to compute
> > sym1-sym2 when both symbols are in the same segment. They don't
> > require any contortions in order to trigger symbol arithmetic that is
> > fully foldable.
> >
> > We know that the code of RC1 works with some Apple assemblers/linkers,
> > but not with ones older and newer. This make me take an extremely
> > conservative stance wrt Apple porting.
> >
> > We will never get stable Apple support, however hard we try. Only if
> > Apple decided for what to support, and wrote a good test suite
> > enforcing the decision, and educated their staff, than we could reach
> > the same GMP quality with Apple as with other platforms. But the
> > damage is already done with the mess of inconsistent tools out there.
> >
> > --
> > Torbjörn
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> .text
> .align 5, 0x90
> .globl ___gmpn_mod_34lsub1
>
> ___gmpn_mod_34lsub1:
>
>
>
> mov $0x0000FFFFFFFFFFFF, %r11
>
> mov (%rdi), %rax
>
> cmp $2, %rsi
> ja Lgt2
>
> jb Lone
>
> mov 8(%rdi), %rsi
> mov %rax, %rdx
> shr $48, %rax
>
> and %r11, %rdx
> add %rdx, %rax
> mov %esi, %edx
>
> shr $32, %rsi
> add %rsi, %rax
>
> shl $16, %rdx
> add %rdx, %rax
> Lone:
> ret
>
>
>
>
>
> Lgt2: mov 8(%rdi), %rcx
> mov 16(%rdi), %rdx
> xor %r9, %r9
> add $24, %rdi
> sub $12, %rsi
> jc Lend
> .align 4, 0x90
> Ltop:
> add (%rdi), %rax
> adc 8(%rdi), %rcx
> adc 16(%rdi), %rdx
> adc $0, %r9
> add 24(%rdi), %rax
> adc 32(%rdi), %rcx
> adc 40(%rdi), %rdx
> adc $0, %r9
> add 48(%rdi), %rax
> adc 56(%rdi), %rcx
> adc 64(%rdi), %rdx
> adc $0, %r9
> add $72, %rdi
> sub $9, %rsi
> jnc Ltop
>
> Lend: lea Ltab(%rip), %r8
>
>
> movslq 36(%r8,%rsi,4), %r10
> lea (%r10, %r8), %r8
> jmp *%r8
>
> Ltab:
> .set LC1, L1-Ltab
> .long LC1
> .set LC2, L2-Ltab
> .long LC2
> .set LC3, L3-Ltab
> .long LC3
> .set LC4, L4-Ltab
> .long LC4
> .set LC5, L5-Ltab
> .long LC5
> .set LC6, L6-Ltab
> .long LC6
> .set LC7, L7-Ltab
> .long LC7
> .set LC8, L8-Ltab
> .long LC8
>
>
> L6: add (%rdi), %rax
> adc 8(%rdi), %rcx
> adc 16(%rdi), %rdx
> adc $0, %r9
> add $24, %rdi
> L3: add (%rdi), %rax
> adc 8(%rdi), %rcx
> adc 16(%rdi), %rdx
> jmp Lcj1
>
> L7: add (%rdi), %rax
> adc 8(%rdi), %rcx
> adc 16(%rdi), %rdx
> adc $0, %r9
> add $24, %rdi
> L4: add (%rdi), %rax
> adc 8(%rdi), %rcx
> adc 16(%rdi), %rdx
> adc $0, %r9
> add $24, %rdi
> L1: add (%rdi), %rax
> adc $0, %rcx
> jmp Lcj2
>
> L8: add (%rdi), %rax
> adc 8(%rdi), %rcx
> adc 16(%rdi), %rdx
> adc $0, %r9
> add $24, %rdi
> L5: add (%rdi), %rax
> adc 8(%rdi), %rcx
> adc 16(%rdi), %rdx
> adc $0, %r9
> add $24, %rdi
> L2: add (%rdi), %rax
> adc 8(%rdi), %rcx
>
> Lcj2: adc $0, %rdx
> Lcj1: adc $0, %r9
> L0: add %r9, %rax
> adc $0, %rcx
> adc $0, %rdx
> adc $0, %rax
>
> mov %rax, %rdi
> shr $48, %rax
>
> and %r11, %rdi
> mov %ecx, %r10d
>
> shr $32, %rcx
>
> add %rdi, %rax
> movzwl %dx, %edi
> shl $16, %r10
>
> add %rcx, %rax
> shr $16, %rdx
>
> add %r10, %rax
> shl $32, %rdi
>
> add %rdx, %rax
> add %rdi, %rax
>
>
> ret
>
> _______________________________________________
> gmp-bugs mailing list
> gmp-bugs at gmplib.org
> https://gmplib.org/mailman/listinfo/gmp-bugs
More information about the gmp-bugs
mailing list