qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]