This simple test case: #include <stdio.h>
int ten = 10; int main() { printf ("%lld\n", 92233720368547758LL % ten); return 0; } returns 0 because (afaics) __moddi3 is miscompiled. Breakpoint 4, __moddi3 (u=92233720368547758, v=10) at /home/aph/gcc/trunk/libgcc/../gcc/libgcc2.c:923 (gdb) fin Run till exit from #0 __moddi3 (u=<value optimized out>, v=92233718306963466) at /home/aph/gcc/trunk/libgcc/../gcc/libgcc2.c:919 0x00008474 in main () at ppp.c:7 Value returned is $3 = 0 Recompiling libgcc with -O0 fixes the problem: (gdb) (gdb) fin Run till exit from #0 __moddi3 (u=92233720368547758, v=10) at /home/aph/gcc/trunk/libgcc/../gcc/libgcc2.c:879 0x000084a4 in main () at ppp.c:7 Value returned is $4 = 8 And recompiling just _moddi3.o fixes it again. Target: arm-linux-gnueabi Configured with: /home/aph/gcc/trunk/configure --with-system-zlib --enable-threads=posix --enable-nls --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release --disable-multilib --disable-static arm-linux-gnueabi --disable-bootstrap --disable-sjlj-exceptions --prefix=/home/aph/gcc/install build_alias=arm-linux-gnueabi host_alias=arm-linux-gnueabi target_alias=arm-linux-gnueabi --enable-languages=c,c++,java --no-create --no-recursion Andrew.