[PATCH v4 3/5] firmware: Explicitly pass -pie to the linker, not just the driver

Bin Meng bmeng.cn at gmail.com
Fri Jul 9 19:56:39 PDT 2021


On Sat, Jul 10, 2021 at 3:35 AM Jessica Clarke <jrtc27 at jrtc27.com> wrote:
>
> When using Clang with a bare-metal triple, -pie does not get passed to
> the linker as it's not normally a thing that makes sense. However, in
> our case it is, and manually forwarding it on works as desired, so do so
> to fully support FW_PIC with Clang, including when linking with LLD.
> ---
>  firmware/objects.mk | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/firmware/objects.mk b/firmware/objects.mk
> index ce91c2f..3bc83cd 100644
> --- a/firmware/objects.mk
> +++ b/firmware/objects.mk
> @@ -21,7 +21,7 @@ ifeq ($(FW_PIC),y)
>  firmware-genflags-y += -DFW_PIC
>  firmware-asflags-y  += -fpic
>  firmware-cflags-y   += -fPIE -pie
> -firmware-ldflags-y  +=  -Wl,--no-dynamic-linker
> +firmware-ldflags-y  +=  -Wl,--no-dynamic-linker -Wl,-pie
>  endif

Does this manual forwarding also work for GNU ld? If so, I think we
don't need to detect bare-metal triple and turn off FW_PIC in
Makefile?

Regards,
Bin



More information about the opensbi mailing list