From: ludo@gnu.org (Ludovic Courtès)
To: "Torbjörn Granlund" <tg@gmplib.org>
Cc: Guix-devel <Guix-devel@gnu.org>, gmp-bugs@gmplib.org
Subject: Re: GMP 6.1.0 without assembly lacks ‘__gmpn_invert_lib’ on ARM
Date: Wed, 16 Dec 2015 23:39:28 +0100 [thread overview]
Message-ID: <87fuz2587z.fsf@gnu.org> (raw)
In-Reply-To: <86h9ji1r8k.fsf@shell.gmplib.org> ("Torbjörn Granlund"'s message of "Wed, 16 Dec 2015 14:02:19 +0100")
tg@gmplib.org (Torbjörn Granlund) skribis:
> ludo@gnu.org (Ludovic Courtès) writes:
>
> When GMP 6.1.0 is built with --host=none-unknown-linux-gnueabihf on
> ARMv7 (the way GCC configures its in-tree GMP, as of GCC 4.9.3),
> ‘__gmpn_invert_lib’ is missing from the resulting libgmp.a.
[...]
> This seems to be expected, but then it looks as though <gmp-impl.h> was
> erroneously referring to it, leading to undefined references, as
> reported at <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67728>.
>
> I've tried to reproduce this on two different ARM systems, and failed.
>
> I cannot reproduce any link errors, nor can I find the reference or
> definitions of the symbol __gmpn_invert_limb.
The undefined references come up when linking for instance GCC against
GMP:
--8<---------------cut here---------------start------------->8---
/tmp/nix-build-gcc-cross-boot0-4.9.3.drv-0/build/./gmp/.libs/libgmp.a(powm_ui.o): In function `__gmpz_powm_ui':
/tmp/nix-build-gcc-cross-boot0-4.9.3.drv-0/build/gmp/mpz/../../../gcc-4.9.3/gmp/mpz/powm_ui.c:162: undefined reference to `__gmpn_invert_limb'
/tmp/nix-build-gcc-cross-boot0-4.9.3.drv-0/build/./gmp/.libs/libgmp.a(divrem_1.o): In function `__gmpn_divrem_1':
/tmp/nix-build-gcc-cross-boot0-4.9.3.drv-0/build/gmp/mpn/divrem_1.c:149: undefined reference to `__gmpn_invert_limb'
/tmp/nix-build-gcc-cross-boot0-4.9.3.drv-0/build/gmp/mpn/divrem_1.c:228: undefined reference to `__gmpn_invert_limb'
/tmp/nix-build-gcc-cross-boot0-4.9.3.drv-0/build/./gmp/.libs/libgmp.a(divrem_2.o): In function `__gmpn_divrem_2':
/tmp/nix-build-gcc-cross-boot0-4.9.3.drv-0/build/gmp/mpn/divrem_2.c:91: undefined reference to `__gmpn_invert_limb'
/tmp/nix-build-gcc-cross-boot0-4.9.3.drv-0/build/./gmp/.libs/libgmp.a(lt86-sqrtrem.o): In function `mpn_divappr_q':
/tmp/nix-build-gcc-cross-boot0-4.9.3.drv-0/build/gmp/mpn/sqrtrem.c:280: undefined reference to `__gmpn_invert_limb'
/tmp/nix-build-gcc-cross-boot0-4.9.3.drv-0/build/./gmp/.libs/libgmp.a(div_q.o):/tmp/nix-build-gcc-cross-boot0-4.9.3.drv-0/build/gmp/mpn/div_q.c:251: more undefined references to `__gmpn_invert_limb' follow
collect2: error: ld returned 1 exit status
--8<---------------cut here---------------end--------------->8---
See <http://hydra.gnu.org/build/865660/nixlog/1/raw> for a complete log.
> It also puzzles me that you would get link errors given that
> __gmpn_invert_limb is defined in your libgmp.a.
Sorry, I pasted the “wrong” one. Here’s what I have for a no-asm build:
--8<---------------cut here---------------start------------->8---
$ nm /gnu/store/924bg8ws2fkk4z0bifzkqg5d57pgc4w1-gmp-6.1.0/lib/libgmp.a|grep invert_limb
00000000 R __gmp_binvert_limb_table
U __gmp_binvert_limb_table
U __gmp_binvert_limb_table
U __gmp_binvert_limb_table
U __gmp_binvert_limb_table
U __gmp_binvert_limb_table
U __gmp_binvert_limb_table
U __gmp_binvert_limb_table
U __gmp_binvert_limb_table
U __gmp_binvert_limb_table
U __gmp_binvert_limb_table
U __gmp_binvert_limb_table
U __gmp_binvert_limb_table
U __gmp_binvert_limb_table
nm: repl-vsnprintf.o: no symbols
--8<---------------cut here---------------end--------------->8---
> Note also that using "none" as CPU is deprecated and outputs a warning.
I know, but this is what GCC uses (which makes sense, because it
also supports older versions of GMP.)
I hope this clarifies things.
Thanks,
Ludo’.
next prev parent reply other threads:[~2015-12-16 22:39 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-16 11:29 GMP 6.1.0 without assembly lacks ‘__gmpn_invert_lib’ on ARM Ludovic Courtès
2015-12-16 13:02 ` Torbjörn Granlund
2015-12-16 22:39 ` Ludovic Courtès [this message]
2015-12-17 1:07 ` Torbjörn Granlund
2015-12-17 21:45 ` Christopher Allan Webber
2015-12-17 21:48 ` On being welcoming Ludovic Courtès
2015-12-18 4:25 ` Mike Mohr
2015-12-18 15:51 ` Niels Möller
2015-12-18 19:04 ` Torbjörn Granlund
2015-12-19 17:21 ` Mike Mohr
[not found] ` <nn1tajiwlk.fsf@armitage.lysator.liu.se>
2015-12-18 19:09 ` Christopher Allan Webber
2015-12-18 10:01 ` Niels Möller
[not found] ` <nnlh8shy7c.fsf@armitage.lysator.liu.se>
2015-12-18 14:45 ` Ludovic Courtès
[not found] ` <87mvt7lsrm.fsf@gnu.org>
2015-12-18 15:29 ` Niels Möller
2015-12-18 16:53 ` Christopher Allan Webber
2015-12-18 23:14 ` GMP 6.1.0 without assembly lacks ‘__gmpn_invert_lib’ on ARM Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87fuz2587z.fsf@gnu.org \
--to=ludo@gnu.org \
--cc=Guix-devel@gnu.org \
--cc=gmp-bugs@gmplib.org \
--cc=tg@gmplib.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).