Miscompilation on arm64 with GCC LTO

Niels Möller nisse at lysator.liu.se
Wed May 10 08:14:22 CEST 2023


Sam James <sam at gentoo.org> writes:

> Note that Jannik identified the bad commit [0] as 18082:c5d0fcb06969 [4].
[...]
> [0] https://gmplib.org/list-archives/gmp-bugs/2020-December/004981.html
> [1] https://gmplib.org/list-archives/gmp-bugs/2023-January/005223.html
> [3] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D109765
> [4] https://gmplib.org/repo/gmp/rev/c5d0fcb06969

It looks like that commit changes

  adrp	x1, approx_tab
  add	x1, x1, :lo12:approx_tab

to

  adrp	x1, :got:approx_tab
  ldr	x1, [x1, #:got_lo12:approx_tab]

and only when PIC is defined (via LEA_HI and LEA_LO m4 macros). I
haven't double checked what assembly files actually look like after
preprocessing, though.

And something similar for __gmp_binvert_limb_table.

But I have no clue about the arm64 abi. Is PIC defined in the failing
build, or should it be?

Regards,
/Niels

-- 
Niels Möller. PGP key CB4962D070D77D7FCB8BA36271D8F1FF368C6677.
Internet email is subject to wholesale government surveillance.


More information about the gmp-bugs mailing list