On 7/31/19 9:07 AM, Alex Bennée wrote: > +######################################### > +# See if --dynamic-list is supported by the linker > + > +cat > $TMPTXT <<EOF > +{ > + foo; > +}; > +EOF > + > +cat > $TMPC <<EOF > +#include <stdio.h> > +void foo(void); > + > +void foo(void) > +{ > + printf("foo\n"); > +} > + > +int main(void) > +{ > + foo(); > + return 0; > +} > +EOF > + > +ld_dynamic_list="no" > +if compile_prog "" "-Wl,--dynamic-list=$TMPTXT" ; then > + ld_dynamic_list="yes" > +fi > + > +######################################### > +# See if -exported_symbols_list is supported by the linker > + > +cat > $TMPTXT <<EOF > + _foo > +EOF > + > +ld_exported_symbols_list="no" > +if compile_prog "" "-Wl,-exported_symbols_list,$TMPTXT" ; then > + ld_exported_symbols_list="yes" > +fi > + > +if test "$plugins" = "yes" && > + test "$ld_dynamic_list" = "no" && > + test "$ld_exported_symbols_list" = "no" ; then > + error_exit \ > + "Plugin support requires specifying a set of symbols that " \ > + "are exported to plugins. Unfortunately your linker doesn't " \ > + "support the flag (--dynamic-list or -exported_symbols_list) used " \ > + "for this purpose." > +fi > + > ######################################## > # See if 16-byte vector operations are supported. > # Even without a vector unit the compiler may expand these. > @@ -7318,6 +7371,22 @@ fi > if test "$plugins" = "yes" ; then > echo "CONFIG_PLUGIN=y" >> $config_host_mak > LIBS="-ldl $LIBS" > + # Copy the export object list to the build dir > + if test "$ld_dynamic_list" = "yes" ; then > + echo "CONFIG_HAS_LD_DYNAMIC_LIST=yes" >> $config_host_mak > + ld_symbols=qemu-plugins-ld.symbols > + cp "$source_path/plugins/qemu-plugins.symbols" $ld_symbols > + elif test "$ld_exported_symbols_list" = "yes" ; then > + echo "CONFIG_HAS_LD_EXPORTED_SYMBOLS_LIST=yes" >> $config_host_mak > + ld64_symbols=qemu-plugins-ld64.symbols > + echo "# Automatically generated by configure - do not modify" > > $ld64_symbols > + grep 'qemu_' "$source_path/plugins/qemu-plugins.symbols" | sed 's/;//g' > | \ > + sed -E 's/^[[:space:]]*(.*)/_\1/' >> $ld64_symbols > + else > + error_exit \ > + "If \$plugins=yes, either \$ld_dynamic_list or " \ > + "\$ld_exported_symbols_list should have been set to 'yes'." > + fi > fi >
How much of this should be skipped if --enable-static? Or perhaps just dependent on --enable-plugins and let that switch detect the conflict? r~