Compiling for ARMv8-A Using GCC 7.2.0 - Assertion error in gen-fac
Stephen_Damm at mentor.com
Thu Dec 5 15:58:33 UTC 2019
I am trying to build GMP 6.1.2 for ARMv8-A Thunderx2t99 (AARCH64) CPU on RHEL7.4.
I can build BINUTILS 2.29.1, GMP 6.1.2, and CC 7.2.0 using the system GCC 4.8.5. No errors, GMP passes its `make check` tests. The gen-fac program works.
Next I use my GCC 7.2.0 to build everything again. GMP fails with an assertion error before it gets very far into its build process.
During the GMP build process it builds a few programs, "gen-fac" being one of them. This is the exact command the Makefile executes:
"custom_toolchain/bin/gcc -v `test -f 'gen-fac.c' || echo './'`gen-fac.c -o gen-fac"
It then tries to execute: "./gen-fac 64 0" which hits an assertion error if built using my GCC 7.2.0:
gen-fac: mini-gmp/mini-gmp.c:1207: mpn_limb_size_in_base_2: Assertion `u > 0' failed.
/bin/sh: line 1: 9766 Aborted (core dumped) ./gen-fac 64 0 > fac_table.h
It is dying due to an assertion in mpn_limb_size_in_base_2. In this case `u` is exactly 0.
I was able to narrow down the cause. In GC 7.2.0 the GMP_LLIMB_MASK is wrong:
>From my understanding this might be a difference in how GCC 7.2.0 handles unsigned longs vs GCC 4.8.5. It also could be I am missing some vital compiler flag for GMP.
More information about the gmp-bugs