5.1.2 assembler error on Solaris 10 with CC='cc -xtarget=opteron -xarch=amd64'
Daniel Richard G.
skunk at iSKUNK.ORG
Wed Oct 9 07:50:17 CEST 2013
On Wed, 2013 Oct 9 6:49+0200, Niels Möller wrote:
>
> > Would it be helpful to look at assembly code produced by the
> > compiler, to see if there is any obvious difference with GMP's code?
>
> Maybe. To me, it sounds like this version of Suns tools are beggy. If
> you find a *simple* workaround, we could add it to gmp.
I generated the assembly code, and noticed a few things:
* None of the generated assembly uses "bt" or any variant thereof.
* "shr" is not used, but "shrl" and "shrq" occur frequently.
* "dec" is not used; "decl" is.
* "mov" is not used, but I see all of these:
movaps
movb
movl
movlpd
movq
movsbl
movsbq
movslq
movw
movzbl
movzbq
It seems like fbe is only accepting more specific forms of various
mnemonics.
Alternately, is there a way to have GMP assemble these source files
using $(AS), without going through the C frontend?
> Also, have you tried following Torbjörns suggestion to drop all extra
> flags, and just try configuring gmp with
>
> ./configure ABI=64
>
> ? ABI is gmp's way to select the right instruction set and abi on
> systems with several possible ones.
That results in a build triplet of coreisbr-pc-solaris2.10 (I wanted
plain x86_64, for better portability), and the configure script
errors out with
checking size of unsigned... 4
checking size of unsigned long... 4
checking size of mp_limb_t... 4
configure: error: Oops, mp_limb_t is 32 bits, but the assembler code
in this configuration expects 64 bits.
likely due to the ineffectual -m64. (The configure script really should
check for defined(_LP64) or sizeof(void*)==8 when testing that option;
the absence of an error is not enough.)
--Daniel
--
Daniel Richard G. || skunk at iSKUNK.ORG
My ASCII-art .sig got a bad case of Times New Roman.
More information about the gmp-bugs
mailing list