logo       

Strange long long division problem with gcc-3.2.x/uclibc on ARM: msg#00134

lib.uclibc.general

Subject: Strange long long division problem with gcc-3.2.x/uclibc on ARM


The appended little program crashes with gcc-3.2.2 and uclibc 0.9.19
under 2.5.59-rmk1. (It also failed on an earlier 3.2 and uclibc
combo.)

To wit:

# /home/ch/src/arm/play/divtest-3.2.2-uclibc-0.9.19
pgd = c3b08000
[0000000a] *pgd=c3de2011, *pte=00000000, *ppte=00000000
pc : [<000085f8>] lr : [<00008588>] Not tainted
sp : befffdb4 ip : 00000000 fp : 00000032
r10: 00010f74 r9 : 00000000 r8 : 00000001
r7 : 00000000 r6 : 0000000a r5 : 00000000 r4 : 00000000
r3 : 00000000 r2 : 00000018 r1 : 00000000 r0 : 0000000a
Flags: Nzcv IRQs on FIQs on Mode USER_32 Segment user
Control: C3B0B17F Table: C3B0B17F DAC: 00000015
Segmentation fault
#

It works fine compiled with gcc-2.95.4.

The strange part -- if you uncomment the "div done" printf, it works
with 3.2.2:

# /home/ch/src/arm/play/divtest-3.2.2-uclibc-0.9.19
div done
50 / 10 = 5
#

Any thoughts?

-ch


#include <stdio.h>

int main (int arg, char **argv)
{
unsigned long long a, b, c;

a = 50;
b = 10;

c = a / b;

//printf("div done\n"); fflush(stdout);
printf("%lld / %lld = %lld\n", a, b, c);
}


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise