qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v4 43/54] plugin: add API symbols to qemu-plugin


From: Alex Bennée
Subject: Re: [Qemu-devel] [PATCH v4 43/54] plugin: add API symbols to qemu-plugins.symbols
Date: Fri, 11 Oct 2019 17:46:45 +0100
User-agent: mu4e 1.3.5; emacs 27.0.50

Richard Henderson <address@hidden> writes:

> 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?

I've gated the ld_dynamic_list checks on if test "$static" = "no" so it
errors out quickly if you try and build with --static --enable-plugins.


>
>
> r~


--
Alex Bennée



reply via email to

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