https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67728

--- Comment #15 from Andrew Roberts <andrewm.roberts at sky dot com> ---
Marc,

not entirely clear what you mean by reproducing the issue without downloading
mpfr, mpc, isl etc. Do you mean the missing symbol in GMP or the issues with
GMP when using assembly code? If you could please clarify.

I've built GMP 6.1.0 on its own on ARM armv7l, using the following
conifgurations:

../gmp-6.1.0/configure --prefix=/home/alarm/gcc/gmp/gmp-default
# This picks armv7lneon as cpu
make
make check
# No Failures
make install
nm ../gmp-default/lib/libgmp.so | grep gmpn_invert_limb
# 0004cca8 T __gmpn_invert_limb

../gmp-6.1.0/configure --prefix=/home/alarm/gcc/gmp/gmp-armv7l \
                       --target=armv7l-linux-gnu \
                       --build=armv7l-linux-gnu \
                       --host=armv7l-linux-gnu
make
make check
# No Failures
make install
nm ../gmp-armv7l/lib/libgmp.so | grep gmpn_invert_limb
# 0004cca8 T __gmpn_invert_limb

../gmp-6.1.0/configure --prefix=/home/alarm/gcc/gmp/gmp-none \
                        --target=none-linux-gnu \
                        --build=none-linux-gnu \
                        --host=none-linux-gnu
make
make check
# No Failures
make install
nm ../gmp-none/lib/libgmp.a | grep gmpn_invert_limb
# no .so built, gmpn_invert_limb not in .a file


I note that GMP 6.1.0 at least as a configure option --enable-assembly=no
which seems to disable the assembly. But as with the none-linux-gnu
configuration this results in no gmpn_invert_limb symbol

../gmp-6.1.0/configure --prefix=/home/alarm/gcc/gmp/gmp-armv7l-noasm \
                       --target=armv7l-linux-gnu \
                       --build=armv7l-linux-gnu \
                       --host=armv7l-linux-gnu \
                       --enable-assembly=no
make
make check
# No Failures
make install
nm ../gmp-armv7l-noasm/lib/libgmp.so | grep gmpn_invert_limb
# gmpn_invert_limb not in .so or .a file

So I think the problem is that ISL is using a symbol which isn't always
available on all targets when no assembler is selected. But there might be
merrit investigating the --enable-assembly=no configure flag and which GMP
versions support it.

All of this does raise several isues:
1) If we are trying to disable assembler in GMP for some reason, shouldn't we
tell people building GMP outside of the tree to configure it that way. It seems
strange to have spent time and effort adding all those configuration switches
to find GMP, MPFR, ISL, MPC etc but then saying you really need to build it in
a special way, but we're not documenting it...

2) I've also found that different gcc versions require different versions of
ISL to build. For example ISL 0.14 does not work with gcc < 5.0.0, you need ISL
0.12.2. If there are dependencies on on which versions gcc needs for a given
release, shouldn't they also be documented (and the download_prerequisites
script updated accordingly).

Reply via email to