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.bolsha...@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