[PATCH v4 3/5] firmware: Explicitly pass -pie to the linker, not just the driver
Anup Patel
anup at brainfault.org
Sat Jul 10 03:41:57 PDT 2021
Hi Bin,
On Sat, Jul 10, 2021 at 2:23 PM Bin Meng <bmeng.cn at gmail.com> wrote:
>
> On Sat, Jul 10, 2021 at 10:56 AM Bin Meng <bmeng.cn at gmail.com> wrote:
> >
> > 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?
>
> I just built a riscv64-unknown-elf-gcc toolchain and used it to build
> the current HEAD of opensbi/master. Indeed it's broken that pie is not
> supported with the bare-metal triple.
>
> The GNU ld simply complains:
>
> ELF platform/generic/firmware/payloads/test.elf
> /opt/riscv-unknown-elf/lib/gcc/riscv64-unknown-elf/10.1.0/../../../../riscv64-unknown-elf/bin/ld.bfd:
> -pie not supported
The firmware/objects.mk is doing the following:
ifndef FW_PIC
FW_PIC := y
endif
Instead of above, we should set FW_PIC=y only when the underlying
toolchain supports pie.
We need a patch for this to be merged before we can merge this
series. Can you send such a patch ? If not then I can send it.
Regards,
Anup
>
> Regards,
> Bin
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi
More information about the opensbi
mailing list