gmp 4.3.0 tests fail on Mac OS X 10.5
Mark Rodenkirch
mgrogue at wi.rr.com
Wed May 6 20:18:43 CEST 2009
Success! No other errors cropped up, in other words, make check
passed all tests with ABI=32.
Thanks for your help. I don't understand how a label could affect
software in this way, but as long as it works, I'm okay with it.
--Mark
On May 6, 2009, at 11:50 AM, Torbjorn Granlund wrote:
> Mark Rodenkirch <mgrogue at wi.rr.com> writes:
>
> This should be no surprise, but I suspect it to be a compiler bug.
> In
> looking at the snippet of code from the files provided:
>
> 0000003c addl (%esp),%eax
> 0000003f ret
> .Lend:
> 00000040 sbbl %eax,%eax
> 00000042 negl %eax
> 00000044 popl %ebx
> 00000045 popl %esi
> 00000046 popl %edi
> 00000047 ret
> 00000048 nopl 0x00000000(%eax,%eax)
> .Loop:
> 00000050 jcxz 0x00000040
>
> Funny, jecxz displays as jcxz, which is not right. (But it dislays
> incorrectly also with my older Xcode tools, for known-good objecct
> code,
> so I suspect it is just a disassembler bug.)
>
> The jcxz instruction (offset 50) is actually jumping to offset 3f,
> not
> offset 40. It is returning from the routine without restoring
> registers.
>
> Zany.
>
> Either the hardware is wrong, or *both* the assembler and disassembler
> are broken and get the offset wrong. I don't know if there is a
> better
> disassembler available; otool makes it difficult to check if the
> offset
> is wrong (which I strongly suspect).
>
> I got a crazy idea: Perhaps the .Lfoo labels confuses Apple's
> programs.
> (We really should use L(foo) in the GMP assembly, to make the labels
> more short-lived.)
>
> Please try this patch:
>
> diff -r bcf4178f4ccc mpn/x86/p6/aors_n.asm
> --- a/mpn/x86/p6/aors_n.asm Wed May 06 14:13:24 2009 +0200
> +++ b/mpn/x86/p6/aors_n.asm Wed May 06 18:44:18 2009 +0200
> @@ -90,7 +90,7 @@
> ret_internal
> ')
>
> -.Lend:
> +L(end):
> sbb %eax, %eax
> neg %eax
> pop %ebx
> @@ -99,8 +99,8 @@
> ret
>
> ALIGN(16)
> -.Loop:
> - jecxz .Lend
> +L(top):
> + jecxz L(end)
> L(ent):
> Zdisp( mov, 0,(up,n,4), %eax)
> Zdisp( ADCSBB, 0,(vp,n,4), %eax)
> @@ -135,7 +135,7 @@
> mov %edx, 28(rp,n,4)
>
> lea 8(n), n
> - jmp .Loop
> + jmp L(top)
>
> EPILOGUE()
>
>
> --
> Torbjörn
More information about the gmp-bugs
mailing list