On Mon, May 22, 2023 at 10:08:16AM +0200, Paolo Bonzini wrote: > The large comment in the patch says it all; the -no-pie flag is broken and > this is why it was not included in QEMU_LDFLAGS before commit a988b4c5614 > ("build: move remaining compiler flag tests to meson", 2023-05-18). > > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1664 > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > --- > meson.build | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/meson.build b/meson.build > index 0a5cdefd4d3d..6733b2917081 100644 > --- a/meson.build > +++ b/meson.build > @@ -267,10 +267,15 @@ endif > # has explicitly disabled PIE we need to extend our cflags. > if not get_option('b_pie') > qemu_common_flags += cc.get_supported_arguments('-fno-pie') > - if not get_option('prefer_static') > - # No PIE is implied by -static which we added above. > - qemu_ldflags += cc.get_supported_link_arguments('-no-pie') > - endif > + # What about linker flags? For a static build, no PIE is implied by > -static > + # which we added above. For dynamic linking, adding -no-pie is messy > because > + # it overrides -shared: the linker then wants to build an executable > instead > + # of a shared library and the build fails. Before moving this code to > Meson, > + # we went through a dozen different commits affecting the usage of -no-pie, > + # ultimately settling for a completely broken one that added -no-pie to the > + # compiler flags together with -fno-pie... except that -no-pie is a linker > + # flag that has no effect on the compiler command line. So, don't add > + # -no-pie anywhere and cross fingers. > endif
I'm curious why we need to do anything ? I would have thought that meson should handle 'b_pie' itself, passing the right args to $CC that it feels are appropriate. I don't recall seeing other apps using meson trying to handle b_pie logic - what's special about QEMU ? IOW, is it possible to delete this entire b_pie condition and thus avoid worrying about this problem ? With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|