Message ID | 20200601124257.32057-1-r.bolshakov@yadro.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | configure: Don't warn about lack of PIE on macOS | expand |
Reviewed-by: Cameron Esfahani <dirty@apple.com> Cameron Esfahani dirty@apple.com "It is the spirit and not the form of law that keeps justice alive." Earl Warren > On Jun 1, 2020, at 5:42 AM, Roman Bolshakov <r.bolshakov@yadro.com> 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" > elif test "$pie" = "yes"; then > error_exit "PIE not available due to missing toolchain support" > else > -- > 2.26.1 > >
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
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
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" elif test "$pie" = "yes"; then error_exit "PIE not available due to missing toolchain support" else
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(+)