mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
* [ptxdist] libgmp cflags
@ 2024-12-10 16:11 Alexander Dahl
  2024-12-12 12:01 ` Michael Olbrich
  0 siblings, 1 reply; 2+ messages in thread
From: Alexander Dahl @ 2024-12-10 16:11 UTC (permalink / raw)
  To: ptxdist

Hei hei,

I'm using nftables and on an armv5te target (microchip at91 sam9x60)
the command `nft list ruleset` crashes with 'illegal instruction'.

BSP is on ptxdist-2024.05.0 with the latest libgmp 6.3 backported from
master.  Toolchain is precompiled
OSELAS.Toolchain-2023.07.1/arm-v5te-linux-gnueabi from
debian.pengutronix.de, so overall nothing special.

`ptxdist prepare libgmp` gives this (somewhere in between):

    using ABI="32"
          CC="arm-v5te-linux-gnueabi-gcc"
          CFLAGS="-O2 -pedantic -fomit-frame-pointer -march=armv4 -mfloat-abi=softfp"
          CPPFLAGS=""
          MPN_PATH=" arm generic"

After staring at configure.ac and configure I guess they try to be
smart here, but do not detect the actual arch.

Analzing the coredump with cgdb suggests it fails in __gmp_doprnt()
shows this:

      1│ Dump of assembler code for function __gmp_doprnt:
      2│    0xb6d69840 <+0>:     push    {r4, r5, r6, r7, r8, r9, r10, r11, lr}
      3├──> 0xb6d69844 <+4>:     vpush   {d8}
      4│    0xb6d69848 <+8>:     sub     sp, sp, #132    @ 0x84

That instruction seems to be some VFP related ARM floating point thing?

I tried adding this to rules/libgmp.make:

LIBGMP_CONF_ENV     := \
    CFLAGS='-O2 -pedantic -g'

This gives almost the same output of prepare, but with "my" cflags
only, so without -march or -mfloat-abi and then nft does not crash
anymore.

I could use that as a workaround, but it seems to circumvent libgmp
arch detection entirely, and so I'm not sure if that's the correct way
here?

btw, you can see libgmp autoconf is not so super smart, because this is the
output of `ptxdist prepare libgmp` on v7a target:

    using ABI="32"
          CC="arm-v7a-linux-gnueabihf-gcc"
          CFLAGS="-O2 -pedantic -fomit-frame-pointer -march=armv4 -mfloat-abi=hard"
          CPPFLAGS=""
          MPN_PATH=" arm generic"

So it's still -march=armv4 here.  But is that really necessary with
the cross compiler at all?

Greets
Alex




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-12-12 12:01 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-12-10 16:11 [ptxdist] libgmp cflags Alexander Dahl
2024-12-12 12:01 ` Michael Olbrich

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox