qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH for 6.1] plugins: do not limit exported symbols if modules ar


From: Alex Bennée
Subject: Re: [PATCH for 6.1] plugins: do not limit exported symbols if modules are active
Date: Thu, 12 Aug 2021 10:36:20 +0100
User-agent: mu4e 1.6.2; emacs 28.0.50

Paolo Bonzini <pbonzini@redhat.com> writes:

> On Mac --enable-modules and --enable-plugins are currently incompatible, 
> because the
> Apple -Wl,-exported_symbols_list command line options prevents the export of 
> any
> symbols needed by the modules.  On x86 -Wl,--dynamic-list does not have this 
> effect,
> but only because the -Wl,--export-dynamic option provided by gmodule-2.0.pc 
> overrides
> it.  On Apple there is no -Wl,--export-dynamic, because it is the default, 
> and thus
> no override.
>
> Either way, when modules are active there is no reason to include the 
> plugin_ldflags.
> While at it, avoid the useless -Wl,--export-dynamic when --enable-plugins is
> specified but --enable-modules is not; this way, the GNU and Apple 
> configurations
> are more similar.
>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/516
> Cc: Alex Bennée <alex.bennee@linaro.org>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  configure           |  5 ++---
>  plugins/meson.build | 14 ++++++++------
>  2 files changed, 10 insertions(+), 9 deletions(-)
>
> diff --git a/configure b/configure
> index 9a79a004d7..a8721601ea 100755
> --- a/configure
> +++ b/configure
> @@ -3187,9 +3187,8 @@ glib_req_ver=2.56
>  glib_modules=gthread-2.0
>  if test "$modules" = yes; then
>      glib_modules="$glib_modules gmodule-export-2.0"
> -fi
> -if test "$plugins" = "yes"; then
> -    glib_modules="$glib_modules gmodule-2.0"
> +elif test "$plugins" = "yes"; then
> +    glib_modules="$glib_modules gmodule-noexport-2.0"

This brings in a new dependency because I can't configure now:

  ➜  ../../configure

  ERROR: glib-2.56 gmodule-noexport-2.0 is required to compile QEMU

Should it be gmodule-no-export? Hopefully the different distros aren't
packaging different .pc files.

>  fi
>  
>  for i in $glib_modules; do
> diff --git a/plugins/meson.build b/plugins/meson.build
> index e77723010e..bfd5c9822a 100644
> --- a/plugins/meson.build
> +++ b/plugins/meson.build
> @@ -1,9 +1,11 @@
> -if 'CONFIG_HAS_LD_DYNAMIC_LIST' in config_host
> -  plugin_ldflags = ['-Wl,--dynamic-list=' + (meson.build_root() / 
> 'qemu-plugins-ld.symbols')]
> -elif 'CONFIG_HAS_LD_EXPORTED_SYMBOLS_LIST' in config_host
> -  plugin_ldflags = ['-Wl,-exported_symbols_list,' + (meson.build_root() / 
> 'qemu-plugins-ld64.symbols')]
> -else
> -  plugin_ldflags = []
> +plugin_ldflags = []
> +# Modules need more symbols than just those in plugins/qemu-plugins.symbols
> +if not enable_modules
> +  if 'CONFIG_HAS_LD_DYNAMIC_LIST' in config_host
> +    plugin_ldflags = ['-Wl,--dynamic-list=' + (meson.build_root() / 
> 'qemu-plugins-ld.symbols')]
> +  elif 'CONFIG_HAS_LD_EXPORTED_SYMBOLS_LIST' in config_host
> +    plugin_ldflags = ['-Wl,-exported_symbols_list,' + (meson.build_root() / 
> 'qemu-plugins-ld64.symbols')]
> +  endif
>  endif

Does this mean --enable-modules would allow plugins to access more of
the API space than we intended in the first place?

-- 
Alex Bennée



reply via email to

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