From: "Yann E. MORIN" <yann.morin.1998@free.fr>
To: Ben Wolsieffer <ben.wolsieffer@hefring.com>
Cc: Vladimir Murzin <vladimir.murzin@arm.com>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
buildroot@buildroot.org, Romain Naour <romain.naour@gmail.com>,
Giulio Benetti <giulio.benetti@benettiengineering.com>,
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
Subject: Re: [Buildroot] [PATCH v3 4/8] arch/arm: add support for FDPIC
Date: Sun, 16 Apr 2023 18:22:00 +0200 [thread overview]
Message-ID: <20230416162200.GC2819@scaer> (raw)
In-Reply-To: <20220819151734.926106-5-Ben.Wolsieffer@hefring.com>
Ben, All,
Sorry for the overly long delay, but as you can imagine, it is not
something that is trivial to review. Even so, here's an long overdue
review...
On 2022-08-19 11:17 -0400, Ben Wolsieffer spake thusly:
> Linux on ARM supports FDPIC binaries intended for use on no-MMU systems.
> This patch enables support for building a toolchain that produces FDPIC
> binaries.
>
> The target name for an FDPIC toolchain must be
> arm-<vendor>-uclinuxfdpiceabi, which doesn't follow the standard format
> and requires a special case.
>
> According to the kernel help for CONFIG_BINFMT_ELF_FDPIC, "It is also
> possible to run FDPIC ELF binaries on MMU linux," so FDPIC support is
> available on all ARM platforms, not just no-MMU.
>
> Signed-off-by: Ben Wolsieffer <Ben.Wolsieffer@hefring.com>
> ---
> arch/Config.in | 1 +
> package/Makefile.in | 6 ++++++
> 2 files changed, 7 insertions(+)
>
> diff --git a/arch/Config.in b/arch/Config.in
> index 4cd58041a4..c639738f5f 100644
> --- a/arch/Config.in
> +++ b/arch/Config.in
> @@ -39,6 +39,7 @@ config BR2_arceb
>
> config BR2_arm
> bool "ARM (little endian)"
> + select BR2_ARCH_HAS_FDPIC_SUPPORT
> # MMU support is set by the subarchitecture file, arch/Config.in.arm
> help
> ARM is a 32-bit reduced instruction set computer (RISC)
> diff --git a/package/Makefile.in b/package/Makefile.in
> index ff60f85092..81a7028275 100644
> --- a/package/Makefile.in
> +++ b/package/Makefile.in
> @@ -37,7 +37,13 @@ $(error BR2_TOOLCHAIN_BUILDROOT_VENDOR cannot be 'unknown'. \
> endif
>
> # Compute GNU_TARGET_NAME
> +# FDPIC on ARM requires a special target name: it has no OS field and must
> +# use the suffix -uclinuxfdpiceabi.
> +ifeq ($(BR2_arm)$(BR2_armeb):$(BR2_BINFMT_FDPIC),y:y)
> +GNU_TARGET_NAME = $(ARCH)-$(TARGET_VENDOR)-uclinuxfdpiceabi
This looks weird: it looks like they coalesced OS and ABI, and dropped
the LIBC part...
> +else
> GNU_TARGET_NAME = $(ARCH)-$(TARGET_VENDOR)-$(TARGET_OS)-$(LIBC)$(ABI)
> +endif
I am not too fond of this special casing. What about something along the
lines of (existing comments stripped):
TARGET_NAME = $(ARCH)-$(TARGET_VENDOR)-$(TARGET_OS)$(LIBC)$(ABI)))
# Note no dash between OS and LIBC --------------^^
ifeq ($(BR2_arm)$(BR2_armeb)$(BR2_BINFMT_FDPIC),yy)
# For ARM FDPIC, there is no separation between OS and ABI
TARGET_OS = uclinux
else ifeq ($(BR2_BINFMT_FLAT):$(BR2_RISCV_64),y:)
TARGET_OS = uclinux-
else
TARGET_OS = linux-
endif
ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)
# For ARM FDPIC, there's no LIBC part
ifneq ($(BR2_arm)$(BR2_armeb)$(BR2_BINFMT_FDPIC),yy)
LIBC = uclibc
endif
else ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
LIBC = musl
else ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)
LIBC = gnu
else ifeq ($(BR_BUILDING),y)
$(error No C library enabled, this is not possible.)
endif
ifeq ($(BR2_arm)$(BR2_armeb),y)
ifeq ($(LIBC),uclibc)
ABI = $(if $(BR2_BINFMT_FDPIC),fdpic,gnu)eabi
else
ABI = eabi
endif
ifeq ($(BR2_ARM_EABIHF),y)
# FDPIC is always HF, so don't append the hf suffix (FIXME!)
ABI := $(ABI)$(if $(BR2_BINFMT_FDPIC),,hf)
endif
endif
Note that this is not perfect, as there are a few assumptions hard-coded
in there, but I'm afraid we can't do much much better...
Note that I have no idea about the HF part, so I wrote something for
illustration purposes only...
Regards,
Yann E. MORIN.
> # FLAT binary format needs uclinux, except RISC-V 64-bits which needs
> # the regular linux name.
> --
> 2.37.0
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
next prev parent reply other threads:[~2023-04-16 16:22 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-19 15:17 [Buildroot] [PATCH v3 0/8] Add support for FDPIC binaries on ARM Ben Wolsieffer
2022-08-19 15:17 ` [Buildroot] [PATCH v3 1/8] Revert "arch: drop now useless support for FDPIC" Ben Wolsieffer
2022-08-19 15:17 ` [Buildroot] [PATCH v3 2/8] arch: don't enable FDPIC binaries by default Ben Wolsieffer
2022-08-19 15:17 ` [Buildroot] [PATCH v3 3/8] arch: make FDPIC dependent on toolchain support Ben Wolsieffer
2022-08-19 15:17 ` [Buildroot] [PATCH v3 4/8] arch/arm: add support for FDPIC Ben Wolsieffer
2023-04-16 16:22 ` Yann E. MORIN [this message]
2022-08-19 15:17 ` [Buildroot] [PATCH v3 5/8] boot/uboot: pass -mno-fdpic if FDPIC is enabled Ben Wolsieffer
2023-09-30 20:36 ` Thomas Petazzoni via buildroot
2022-08-19 15:17 ` [Buildroot] [PATCH v3 6/8] linux: " Ben Wolsieffer
2022-08-19 15:17 ` [Buildroot] [PATCH v3 7/8] package/uclibc: enable NPTL on no-MMU ARM w/ FDPIC Ben Wolsieffer
2022-08-19 15:17 ` [Buildroot] [PATCH v3 8/8] package/pkg-autotools: patch libtool to support ARM FDPIC Ben Wolsieffer
2023-04-16 19:01 ` Yann E. MORIN
2022-08-22 9:52 ` [Buildroot] [PATCH v3 0/8] Add support for FDPIC binaries on ARM Waldemar Brodkorb
2022-08-26 3:22 ` Ben Wolsieffer
2022-09-22 13:18 ` Waldemar Brodkorb
2023-09-30 20:12 ` Thomas Petazzoni via buildroot
2023-10-02 14:18 ` Ben Wolsieffer
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230416162200.GC2819@scaer \
--to=yann.morin.1998@free.fr \
--cc=ben.wolsieffer@hefring.com \
--cc=buildroot@buildroot.org \
--cc=giulio.benetti@benettiengineering.com \
--cc=romain.naour@gmail.com \
--cc=thomas.de_schampheleire@nokia.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=vladimir.murzin@arm.com \
/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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.