[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] configure: Don't warn about lack of PIE on macOS
From: |
Roman Bolshakov |
Subject: |
Re: [PATCH] configure: Don't warn about lack of PIE on macOS |
Date: |
Tue, 23 Jun 2020 16:15:48 +0300 |
On Tue, Jun 23, 2020 at 01:48:57PM +0100, Stefan Hajnoczi wrote:
> On Mon, Jun 01, 2020 at 03:42:57PM +0300, Roman Bolshakov wrote:
> > ld64 is making PIE executables for 10.7 and above by default, as
> > documented in ld(1).
> >
> > Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
> > ---
> > configure | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/configure b/configure
> > index af2ba83f0e..6dddbca4b2 100755
> > --- a/configure
> > +++ b/configure
> > @@ -2137,6 +2137,8 @@ elif compile_prog "-Werror -fPIE -DPIE" "-pie"; then
> > QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
> > QEMU_LDFLAGS="-pie $QEMU_LDFLAGS"
> > pie="yes"
> > +elif test "$darwin" = "yes"; then
> > + pie="yes"
>
> Hi Roman,
> I'm wondering why the elif above doesn't detect the presence of PIE
> automatically?
>
> elif compile_prog "-Werror -fPIE -DPIE" "-pie"; then
> QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
> QEMU_LDFLAGS="-pie $QEMU_LDFLAGS"
> pie="yes"
>
> Can this code be tweaked to cover macOS too?
>
> Also CCing Peter Maydell in case he wants to merge this patch directly
> into qemu.git.
>
> Stefan
Hi Stefan,
It's because clang does not accept -pie/-no-pie directly:
$ cc -Werror -fPIE -DPIE -pie main.c
clang: error: argument unused during compilation: '-pie'
[-Werror,-Wunused-command-line-argument]
It has to be passed as linker option, i.e. -Wl,-pie or -Wl,-no_pie. pie
is also a default behaviour of clang/ld64.
I had a patch to enable proper support of pie/no-pie for macOS but I see
little value in it. I don't know where no_pie would be helfpul becuase
clang from Apple Developer Tools can't cross-compile option ROMs.
Thanks,
Roman