[PATCH] firmware: Detect whether the toolchain supports pie and automatically disable the FW_PIC option

Bin Meng bmeng.cn at gmail.com
Sat Jul 10 18:56:40 PDT 2021


On Sun, Jul 11, 2021 at 4:27 AM Xiang W <wxjstz at 126.com> wrote:

Please write something in the commit message to explain why are we doing this.

>
> Signed-off-by: Xiang W <wxjstz at 126.com>
> ---
>  firmware/objects.mk         | 4 +++-
>  scripts/toolchain-check-pie | 7 +++++++
>  2 files changed, 10 insertions(+), 1 deletion(-)
>  create mode 100755 scripts/toolchain-check-pie
>

Please append a patch version in the email title. This way it's easy
to know which patch is the latest version.

> diff --git a/firmware/objects.mk b/firmware/objects.mk
> index ce91c2f..020e1a9 100644
> --- a/firmware/objects.mk
> +++ b/firmware/objects.mk
> @@ -16,7 +16,9 @@ firmware-ldflags-y +=
>  ifndef FW_PIC
>  FW_PIC := y
>  endif
> -
> +ifeq ($(FW_PIC),y)
> +FW_PIC := $(shell scripts/toolchain-check-pie $(CC))
> +endif
>  ifeq ($(FW_PIC),y)
>  firmware-genflags-y += -DFW_PIC
>  firmware-asflags-y  += -fpic
> diff --git a/scripts/toolchain-check-pie b/scripts/toolchain-check-pie
> new file mode 100755
> index 0000000..779c0ee
> --- /dev/null
> +++ b/scripts/toolchain-check-pie
> @@ -0,0 +1,7 @@
> +#! /bin/bash
> +
> +if ${1} --version | head -n 1 | grep clang 2>&1 >/dev/null; then
> +       echo void _start\(\) \{\} | ${1} --target=riscv64 -fuse-ld=lld -mno-relax -nostdlib -fPIE -Wl,-pie -xc - -o /dev/null 2>/dev/null && echo y || echo n
> +else
> +       echo void _start\(\) \{\} | ${1} -nostdlib -fPIE -Wl,-pie -xc - -o /dev/null 2>/dev/null && echo y || echo n
> +fi

Regards,
Bin



More information about the opensbi mailing list