mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
TCG Plugins initial implementation
- use --enable-plugins @ configure - low impact introspection (-plugin empty.so to measure overhead) - plugins cannot alter guest state - example plugins included in source tree (tests/plugins) - -d plugin to enable plugin output in logs - check-tcg runs extra tests when plugins enabled - documentation in docs/devel/plugins.rst -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAl23BZMACgkQ+9DbCVqe KkRPegf/QHygZ4ER2jOaWEookxiOEcik+dzQKVGNqLNXeMLvo5fGjGVpFoFxSgfv ZvCAL4xbW44zsYlVfh59tfn4Tu9qK7s7/qM3WXpHsmuvEuhoWef0Lt2jSe+D46Rs KeG/aX+rHLUR8rr9eCgE+1/MQmxPUj3VUonkUpNkk2ebBbSNoLSOudB4DD9Vcyl7 Pya1kPvA6W9bwI20ZSWihE7flg13o62Pp+LgAFLrsfxXOxOMkPrU8Pp+B0Dvr+hL 5Oh0clZLhiRi75x+KVGZ90TVsoftdjYoOWGMOudS/+NNmqKT1NTLm0K1WJYyRMQ1 V0ne4/OcGNq7x8gcOx/xs09ADu5/VA== =UXR/ -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/stsquad/tags/pull-tcg-plugins-281019-4' into staging TCG Plugins initial implementation - use --enable-plugins @ configure - low impact introspection (-plugin empty.so to measure overhead) - plugins cannot alter guest state - example plugins included in source tree (tests/plugins) - -d plugin to enable plugin output in logs - check-tcg runs extra tests when plugins enabled - documentation in docs/devel/plugins.rst # gpg: Signature made Mon 28 Oct 2019 15:13:23 GMT # gpg: using RSA key 6685AE99E75167BCAFC8DF35FBD0DB095A9E2A44 # gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" [full] # Primary key fingerprint: 6685 AE99 E751 67BC AFC8 DF35 FBD0 DB09 5A9E 2A44 * remotes/stsquad/tags/pull-tcg-plugins-281019-4: (57 commits) travis.yml: enable linux-gcc-debug-tcg cache MAINTAINERS: add me for the TCG plugins code scripts/checkpatch.pl: don't complain about (foo, /* empty */) .travis.yml: add --enable-plugins tests include/exec: wrap cpu_ldst.h in CONFIG_TCG accel/stubs: reduce headers from tcg-stub tests/plugin: add hotpages to analyse memory access patterns tests/plugin: add instruction execution breakdown tests/plugin: add a hotblocks plugin tests/tcg: enable plugin testing tests/tcg: drop test-i386-fprem from TESTS when not SLOW tests/tcg: move "virtual" tests to EXTRA_TESTS tests/tcg: set QEMU_OPTS for all cris runs tests/tcg/Makefile.target: fix path to config-host.mak tests/plugin: add sample plugins linux-user: support -plugin option vl: support -plugin option plugin: add qemu_plugin_outs helper plugin: add qemu_plugin_insn_disas helper plugin: expand the plugin_init function to include an info block ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
68d8ef4ec5
92 changed files with 5172 additions and 169 deletions
89
configure
vendored
89
configure
vendored
|
@ -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
|
||||
|
||||
|
@ -501,6 +502,7 @@ libxml2=""
|
|||
debug_mutex="no"
|
||||
libpmem=""
|
||||
default_devices="yes"
|
||||
plugins="no"
|
||||
|
||||
supported_cpu="no"
|
||||
supported_os="no"
|
||||
|
@ -1532,6 +1534,10 @@ for opt do
|
|||
;;
|
||||
--disable-xkbcommon) xkbcommon=no
|
||||
;;
|
||||
--enable-plugins) plugins="yes"
|
||||
;;
|
||||
--disable-plugins) plugins="no"
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: unknown option $opt"
|
||||
echo "Try '$0 --help' for more information"
|
||||
|
@ -1713,6 +1719,8 @@ Advanced options (experts only):
|
|||
--enable-profiler profiler support
|
||||
--enable-debug-stack-usage
|
||||
track the maximum stack usage of stacks created by qemu_alloc_stack
|
||||
--enable-plugins
|
||||
enable plugins via shared library loading
|
||||
|
||||
Optional features, enabled with --enable-FEATURE and
|
||||
disabled with --disable-FEATURE, default is enabled if available:
|
||||
|
@ -3644,6 +3652,9 @@ 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"
|
||||
fi
|
||||
|
||||
# This workaround is required due to a bug in pkg-config file for glib as it
|
||||
# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
|
||||
|
@ -5494,6 +5505,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.
|
||||
|
@ -6491,6 +6557,7 @@ echo "capstone $capstone"
|
|||
echo "libpmem support $libpmem"
|
||||
echo "libudev $libudev"
|
||||
echo "default devices $default_devices"
|
||||
echo "plugin support $plugins"
|
||||
|
||||
if test "$supported_cpu" = "no"; then
|
||||
echo
|
||||
|
@ -7328,6 +7395,27 @@ if test "$sheepdog" = "yes" ; then
|
|||
echo "CONFIG_SHEEPDOG=y" >> $config_host_mak
|
||||
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
|
||||
QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
|
||||
elif test "$ARCH" = "sparc64" ; then
|
||||
|
@ -7874,6 +7962,7 @@ DIRS="$DIRS roms/seabios roms/vgabios"
|
|||
LINKS="Makefile"
|
||||
LINKS="$LINKS tests/tcg/lm32/Makefile po/Makefile"
|
||||
LINKS="$LINKS tests/tcg/Makefile.target tests/fp/Makefile"
|
||||
LINKS="$LINKS tests/plugin/Makefile"
|
||||
LINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps"
|
||||
LINKS="$LINKS pc-bios/s390-ccw/Makefile"
|
||||
LINKS="$LINKS roms/seabios/Makefile roms/vgabios/Makefile"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue