|
@@ -30,6 +30,7 @@ TMPO="${TMPDIR1}/${TMPB}.o"
|
|
|
TMPCXX="${TMPDIR1}/${TMPB}.cxx"
|
|
|
TMPE="${TMPDIR1}/${TMPB}.exe"
|
|
|
TMPMO="${TMPDIR1}/${TMPB}.mo"
|
|
|
+TMPTXT="${TMPDIR1}/${TMPB}.txt"
|
|
|
|
|
|
rm -f config.log
|
|
|
|
|
@@ -5476,6 +5477,61 @@ if compile_prog "" "" ; then
|
|
|
atomic64=yes
|
|
|
fi
|
|
|
|
|
|
+#########################################
|
|
|
+# See if --dynamic-list is supported by the linker
|
|
|
+ld_dynamic_list="no"
|
|
|
+if test "$static" = "no" ; then
|
|
|
+ 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
|
|
|
+
|
|
|
+ if compile_prog "" "-Wl,--dynamic-list=$TMPTXT" ; then
|
|
|
+ ld_dynamic_list="yes"
|
|
|
+ fi
|
|
|
+fi
|
|
|
+
|
|
|
+#########################################
|
|
|
+# See if -exported_symbols_list is supported by the linker
|
|
|
+
|
|
|
+ld_exported_symbols_list="no"
|
|
|
+if test "$static" = "no" ; then
|
|
|
+ cat > $TMPTXT <<EOF
|
|
|
+ _foo
|
|
|
+EOF
|
|
|
+
|
|
|
+ if compile_prog "" "-Wl,-exported_symbols_list,$TMPTXT" ; then
|
|
|
+ ld_exported_symbols_list="yes"
|
|
|
+ fi
|
|
|
+fi
|
|
|
+
|
|
|
+if test "$plugins" = "yes" &&
|
|
|
+ test "$ld_dynamic_list" = "no" &&
|
|
|
+ test "$ld_exported_symbols_list" = "no" ; then
|
|
|
+ error_exit \
|
|
|
+ "Plugin support requires dynamic linking and 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. You can't build with --static."
|
|
|
+fi
|
|
|
+
|
|
|
########################################
|
|
|
# See if 16-byte vector operations are supported.
|
|
|
# Even without a vector unit the compiler may expand these.
|
|
@@ -7283,6 +7339,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
|
|
|
|
|
|
if test "$tcg_interpreter" = "yes"; then
|