Illegal subtraction in tmp-dive_1.s

Dennis Clarke dclarke at
Thu Apr 16 17:53:56 CEST 2009

> Dennis Clarke <dclarke at> writes:
>   > make check is running now
>   failures :-(
>   PASS: t-set_f
>   check_in: result wrong
>     i=1 zeros=0 neg=0
>     got_ret  5
>     want_ret 5
>     got      =0x81000000
>     want     =0x81
>   /bin/bash: line 4:  7283 Abort                   (core dumped)
> ${dir}$tst
>   FAIL: t-io_raw
>   wrong at data[3]
>       count=1 order=1  size=4 endian=1 nail=0  align=0
>       got =0x78563412
>       want=0x12345678
>   /bin/bash: line 4:  7303 Abort                   (core dumped)
> ${dir}$tst
>   FAIL: t-import
>   wrong result data
>       at data[4]  align=0
>       src "0x12345678"
>       src=0x12345678
>       order=1  size=4 endian=1 nail=0
>       want count 1
>       got count  1
>       want 0x12, 0x34, 0x56, 0x78,
>       got  0x78, 0x56, 0x34, 0x12,
>   /bin/bash: line 4:  7323 Abort                   (core dumped)
> ${dir}$tst
>   FAIL: t-export
>   PASS: t-pprime_p
>   PASS: t-nextprime
>   ==================================
>   3 of 58 tests failed
>   Please report to gmp-bugs at
>   ==================================
>   This looks to be very familiar.
> In the sense that the same happened also with GMP 4.2.4?
> Indeed, I don't think the mpz I/O raw functions changed much in GMP 4.3.
> I tend to suspect compilers for this sort of failures.  If you could
> isolate the problem, that will determine for sure.  And then you could
> report the bug to Sun!

Well, these lines scream endian issues :

       want 0x12, 0x34, 0x56, 0x78,
       got  0x78, 0x56, 0x34, 0x12,

And I am curious how a compiler can produce that sort of result.
Regardless, I just tried to build things with Studio 11 on i386 and that
fails also :

 ../../../gmp-4.3.0/mpn/m4-ccas --m4=m4 /opt/studio/SOS11/SUNWspro/bin/cc
-c -DHAVE_CONFIG_H -I. -I../../../gmp-4.3.0/mpn -I.. -D__GMP_WITHIN_GMP
-I../../../gmp-4.3.0 -DOPERATION_divrem_1 -I/opt/csw/include -xstrconst
-xildoff -xarch=386 -xnolibmil -Xa -Kpic -xregs=no%frameptr -xnolibmopt
-xlibmieee -g -D_REENTRANT -lthread -Qy -xs -DSOLARIS2=8
divrem_1.o >/dev/null 2>&1
/bin/bash ../libtool --mode=compile --tag=CC
../../../gmp-4.3.0/mpn/m4-ccas --m4="m4" /opt/studio/SOS11/SUNWspro/bin/cc
-c -DHAVE_CONFIG_H -I. -I../../../gmp-4.3.0/mpn -I.. -D__GMP_WITHIN_GMP
-I../../../gmp-4.3.0 -DOPERATION_`echo divrem_2 | sed 's/_$//'` 
-I/opt/csw/include  -xstrconst -xildoff -xarch=386 -xnolibmil -Xa -Kpic
-xregs=no%frameptr -xnolibmopt -xlibmieee -g -D_REENTRANT -lthread -Qy -xs
'divrem_2.asm' || echo '../../../gmp-4.3.0/mpn/'`divrem_2.asm
 ../../../gmp-4.3.0/mpn/m4-ccas --m4=m4 /opt/studio/SOS11/SUNWspro/bin/cc
-c -DHAVE_CONFIG_H -I. -I../../../gmp-4.3.0/mpn -I.. -D__GMP_WITHIN_GMP
-I../../../gmp-4.3.0 -DOPERATION_divrem_2 -I/opt/csw/include -xstrconst
-xildoff -xarch=386 -xnolibmil -Xa -Kpic -xregs=no%frameptr -xnolibmopt
-xlibmieee -g -D_REENTRANT -lthread -Qy -xs -DSOLARIS2=8
-DPIC -o .libs/divrem_2.o
divrem_2.asm >tmp-divrem_2.s
 /opt/studio/SOS11/SUNWspro/bin/cc -c -DHAVE_CONFIG_H -I.
-I../../../gmp-4.3.0/mpn -I.. -D__GMP_WITHIN_GMP -I../../../gmp-4.3.0
-DOPERATION_divrem_2 -I/opt/csw/include -xstrconst -xildoff -xarch=386
-xnolibmil -Xa -Kpic -xregs=no%frameptr -xnolibmopt -xlibmieee -g
-D_LARGEFILE64_SOURCE tmp-divrem_2.s -KPIC -DPIC -o .libs/divrem_2.o
        "tmp-divrem_2.s", line 116 : Syntax error
        Near line: "    or      %dl, %al"
        "tmp-divrem_2.s", line 211 : Syntax error
        Near line: "    or      %dl, %al"
cc: assembler failed for tmp-divrem_2.s
gmake[2]: *** [divrem_2.lo] Error 1
gmake[2]: Leaving directory
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory
gmake: *** [all] Error 2


More information about the gmp-discuss mailing list