On Thu, Nov 19, 2020 at 11:27:04AM +0000, Stefan Hajnoczi wrote: > QEMU binaries no longer launch successfully with recent SystemTap > releases. This is because modular QEMU builds link the sdt semaphores > into the main binary instead of into the shared objects where they are > used. The symbol visibility of semaphores is 'hidden' and the dynamic > linker prints an error during module loading: > > $ ./configure --enable-trace-backends=dtrace --enable-modules ... > ... > Failed to open module: > /builddir/build/BUILD/qemu-4.2.0/s390x-softmmu/../block-curl.so: undefined > symbol: qemu_curl_close_semaphore > > The long-term solution is to generate per-module dtrace .o files and > link them into the module instead of the main binary. > > In the short term we can define STAP_SDT_V2 so dtrace(1) produces a .o > file with 'default' symbol visibility instead of 'hidden'. This > workaround is small and easier to merge for QEMU 5.2.
And nice for distros to backport too. > > Cc: Daniel P. Berrangé <berra...@redhat.com> > Cc: wco...@redhat.com > Cc: f...@redhat.com > Cc: kra...@redhat.com > Cc: rjo...@redhat.com > Cc: mreza...@redhat.com > Cc: ddepa...@redhat.com > Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > --- > v2: > * Define STAP_SDT_V2 everywhere [danpb] > --- > configure | 1 + > trace/meson.build | 4 ++-- > 2 files changed, 3 insertions(+), 2 deletions(-) Reviewed-by: Daniel P. Berrangé <berra...@redhat.com> 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 :|