final plugin updates for 9.2
- fix a warning in cflow plugin - replace Makefile with meson.build -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmcp4uoACgkQ+9DbCVqe KkRj5gf/ZAULfTPipM4HhGpCT/cw5MPJrlK9LDGg5dasWQpZcKBjAjDUkAaizXTe anv+/TeXb1ybbQbUvmdVUi4HNXd6xpVfX2ippQWsOXYXqSzQLbBjsoM9pCeFZ+Yu G1M5vvCxnu77nfMMvILBz71eSNj9/HYrr5IPGBnualoBDYfkGgVkjxhC6fb00g52 jcfabqMEvmn/SEi3kQK4t4BzrZcIIRJdTm5A4sS5Y8mHwQSt56PXoFt+wB0ycfNZ SWBXsUtYP5DtcQ9GSbxi3POoWGQY3Qa998GlyZIRUBVYhGbZHIi+mDR4eCX3cv+6 s0xmjquu6aky269EprZhbiO+osZB7Q== =c48A -----END PGP SIGNATURE----- Merge tag 'pull-plugin-tweaks-051124-1' of https://gitlab.com/stsquad/qemu into staging final plugin updates for 9.2 - fix a warning in cflow plugin - replace Makefile with meson.build # -----BEGIN PGP SIGNATURE----- # # iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmcp4uoACgkQ+9DbCVqe # KkRj5gf/ZAULfTPipM4HhGpCT/cw5MPJrlK9LDGg5dasWQpZcKBjAjDUkAaizXTe # anv+/TeXb1ybbQbUvmdVUi4HNXd6xpVfX2ippQWsOXYXqSzQLbBjsoM9pCeFZ+Yu # G1M5vvCxnu77nfMMvILBz71eSNj9/HYrr5IPGBnualoBDYfkGgVkjxhC6fb00g52 # jcfabqMEvmn/SEi3kQK4t4BzrZcIIRJdTm5A4sS5Y8mHwQSt56PXoFt+wB0ycfNZ # SWBXsUtYP5DtcQ9GSbxi3POoWGQY3Qa998GlyZIRUBVYhGbZHIi+mDR4eCX3cv+6 # s0xmjquu6aky269EprZhbiO+osZB7Q== # =c48A # -----END PGP SIGNATURE----- # gpg: Signature made Tue 05 Nov 2024 09:18:34 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 * tag 'pull-plugin-tweaks-051124-1' of https://gitlab.com/stsquad/qemu: contrib/plugins: remove Makefile for contrib/plugins meson: build contrib/plugins with meson contrib/plugins/cflow: fix warning Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
c003aeff91
10
Makefile
10
Makefile
@ -187,11 +187,6 @@ SUBDIR_RULES=$(foreach t, all clean distclean, $(addsuffix /$(t), $(SUBDIRS)))
|
||||
$(SUBDIR_RULES):
|
||||
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" TARGET_DIR="$(dir $@)" $(notdir $@),)
|
||||
|
||||
ifneq ($(filter contrib/plugins, $(SUBDIRS)),)
|
||||
.PHONY: plugins
|
||||
plugins: contrib/plugins/all
|
||||
endif
|
||||
|
||||
.PHONY: recurse-all recurse-clean
|
||||
recurse-all: $(addsuffix /all, $(SUBDIRS))
|
||||
recurse-clean: $(addsuffix /clean, $(SUBDIRS))
|
||||
@ -307,11 +302,6 @@ help:
|
||||
$(call print-help,cscope,Generate cscope index)
|
||||
$(call print-help,sparse,Run sparse on the QEMU source)
|
||||
@echo ''
|
||||
ifneq ($(filter contrib/plugins, $(SUBDIRS)),)
|
||||
@echo 'Plugin targets:'
|
||||
$(call print-help,plugins,Build the example TCG plugins)
|
||||
@echo ''
|
||||
endif
|
||||
@echo 'Cleaning targets:'
|
||||
$(call print-help,clean,Remove most generated files but keep the config)
|
||||
$(call print-help,distclean,Remove all generated files)
|
||||
|
18
configure
vendored
18
configure
vendored
@ -1077,7 +1077,6 @@ if test "$plugins" != "no" && test $host_bits -eq 64; then
|
||||
plugins="no"
|
||||
else
|
||||
plugins=yes
|
||||
subdirs="$subdirs contrib/plugins"
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -1708,7 +1707,6 @@ LINKS="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
|
||||
LINKS="$LINKS tests/avocado tests/data"
|
||||
LINKS="$LINKS tests/qemu-iotests/check tests/qemu-iotests/Makefile"
|
||||
LINKS="$LINKS python"
|
||||
LINKS="$LINKS contrib/plugins/Makefile "
|
||||
for f in $LINKS ; do
|
||||
if [ -e "$source_path/$f" ]; then
|
||||
symlink "$source_path/$f" "$f"
|
||||
@ -1794,22 +1792,6 @@ if test "$default_targets" = "yes"; then
|
||||
echo "CONFIG_DEFAULT_TARGETS=y" >> $config_host_mak
|
||||
fi
|
||||
|
||||
# contrib/plugins configuration
|
||||
echo "# Automatically generated by configure - do not modify" > contrib/plugins/$config_host_mak
|
||||
echo "SRC_PATH=$source_path/contrib/plugins" >> contrib/plugins/$config_host_mak
|
||||
echo "PKG_CONFIG=${pkg_config}" >> contrib/plugins/$config_host_mak
|
||||
echo "CC=$cc $CPU_CFLAGS" >> contrib/plugins/$config_host_mak
|
||||
echo "CFLAGS=${CFLAGS-$default_cflags} $EXTRA_CFLAGS" >> contrib/plugins/$config_host_mak
|
||||
if test "$host_os" = windows; then
|
||||
echo "DLLTOOL=$dlltool" >> contrib/plugins/$config_host_mak
|
||||
fi
|
||||
if test "$host_os" = darwin; then
|
||||
echo "CONFIG_DARWIN=y" >> contrib/plugins/$config_host_mak
|
||||
fi
|
||||
if test "$host_os" = windows; then
|
||||
echo "CONFIG_WIN32=y" >> contrib/plugins/$config_host_mak
|
||||
fi
|
||||
|
||||
# tests/tcg configuration
|
||||
mkdir -p tests/tcg
|
||||
echo "# Automatically generated by configure - do not modify" > tests/tcg/$config_host_mak
|
||||
|
@ -1,87 +0,0 @@
|
||||
# -*- Mode: makefile -*-
|
||||
#
|
||||
# This Makefile example is fairly independent from the main makefile
|
||||
# so users can take and adapt it for their build. We only really
|
||||
# include config-host.mak so we don't have to repeat probing for
|
||||
# programs that the main configure has already done for us.
|
||||
#
|
||||
|
||||
include config-host.mak
|
||||
|
||||
TOP_SRC_PATH = $(SRC_PATH)/../..
|
||||
|
||||
VPATH += $(SRC_PATH)
|
||||
|
||||
NAMES :=
|
||||
NAMES += bbv
|
||||
NAMES += execlog
|
||||
NAMES += hotblocks
|
||||
NAMES += hotpages
|
||||
NAMES += howvec
|
||||
|
||||
# The lockstep example communicates using unix sockets,
|
||||
# and can't be easily made to work on windows.
|
||||
ifneq ($(CONFIG_WIN32),y)
|
||||
NAMES += lockstep
|
||||
endif
|
||||
|
||||
NAMES += hwprofile
|
||||
NAMES += cache
|
||||
NAMES += drcov
|
||||
NAMES += ips
|
||||
NAMES += stoptrigger
|
||||
NAMES += cflow
|
||||
|
||||
ifeq ($(CONFIG_WIN32),y)
|
||||
SO_SUFFIX := .dll
|
||||
LDLIBS += $(shell $(PKG_CONFIG) --libs glib-2.0)
|
||||
else
|
||||
SO_SUFFIX := .so
|
||||
endif
|
||||
|
||||
SONAMES := $(addsuffix $(SO_SUFFIX),$(addprefix lib,$(NAMES)))
|
||||
|
||||
# The main QEMU uses Glib extensively so it is perfectly fine to use it
|
||||
# in plugins (which many example do).
|
||||
PLUGIN_CFLAGS := $(shell $(PKG_CONFIG) --cflags glib-2.0)
|
||||
PLUGIN_CFLAGS += -fPIC -Wall
|
||||
PLUGIN_CFLAGS += -I$(TOP_SRC_PATH)/include/qemu
|
||||
|
||||
# Helper that honours V=1 so we get some output when compiling
|
||||
quiet-@ = $(if $(V),,@$(if $1,printf " %-7s %s\n" "$(strip $1)" "$(strip $2)" && ))
|
||||
quiet-command = $(call quiet-@,$2,$3)$1
|
||||
|
||||
# for including , in command strings
|
||||
COMMA := ,
|
||||
|
||||
all: $(SONAMES)
|
||||
|
||||
%.o: %.c
|
||||
$(call quiet-command, \
|
||||
$(CC) $(CFLAGS) $(PLUGIN_CFLAGS) -c -o $@ $<, \
|
||||
BUILD, plugin $@)
|
||||
|
||||
ifeq ($(CONFIG_WIN32),y)
|
||||
lib%$(SO_SUFFIX): %.o win32_linker.o ../../plugins/libqemu_plugin_api.a
|
||||
$(call quiet-command, \
|
||||
$(CC) -shared -o $@ $^ $(LDLIBS), \
|
||||
LINK, plugin $@)
|
||||
else ifeq ($(CONFIG_DARWIN),y)
|
||||
lib%$(SO_SUFFIX): %.o
|
||||
$(call quiet-command, \
|
||||
$(CC) -bundle -Wl$(COMMA)-undefined$(COMMA)dynamic_lookup -o $@ $^ $(LDLIBS), \
|
||||
LINK, plugin $@)
|
||||
else
|
||||
lib%$(SO_SUFFIX): %.o
|
||||
$(call quiet-command, \
|
||||
$(CC) -shared -o $@ $^ $(LDLIBS), \
|
||||
LINK, plugin $@)
|
||||
endif
|
||||
|
||||
|
||||
clean distclean:
|
||||
rm -f *.o *$(SO_SUFFIX) *.d
|
||||
rm -Rf .libs
|
||||
|
||||
.PHONY: all clean
|
||||
.SECONDARY:
|
@ -136,7 +136,7 @@ static void plugin_exit(qemu_plugin_id_t id, void *p)
|
||||
g_autoptr(GString) result = g_string_new("collected ");
|
||||
GList *data;
|
||||
GCompareFunc sort = &hottest;
|
||||
int n = 0;
|
||||
int i = 0;
|
||||
|
||||
g_mutex_lock(&node_lock);
|
||||
g_string_append_printf(result, "%d control flow nodes in the hash table\n",
|
||||
@ -162,8 +162,8 @@ static void plugin_exit(qemu_plugin_id_t id, void *p)
|
||||
data = g_list_sort(data, sort);
|
||||
|
||||
for (GList *l = data;
|
||||
l != NULL && n < topn;
|
||||
l = l->next, n++) {
|
||||
l != NULL && i < topn;
|
||||
l = l->next, i++) {
|
||||
NodeData *n = l->data;
|
||||
const char *type = n->mid_count ? "sync fault" : "branch";
|
||||
g_string_append_printf(result, " addr: 0x%"PRIx64 " %s: %s (%s)\n",
|
||||
|
28
contrib/plugins/meson.build
Normal file
28
contrib/plugins/meson.build
Normal file
@ -0,0 +1,28 @@
|
||||
contrib_plugins = ['bbv', 'cache', 'cflow', 'drcov', 'execlog', 'hotblocks',
|
||||
'hotpages', 'howvec', 'hwprofile', 'ips', 'stoptrigger']
|
||||
if host_os != 'windows'
|
||||
# lockstep uses socket.h
|
||||
contrib_plugins += 'lockstep'
|
||||
endif
|
||||
|
||||
t = []
|
||||
if get_option('plugins')
|
||||
foreach i : contrib_plugins
|
||||
if host_os == 'windows'
|
||||
t += shared_module(i, files(i + '.c') + 'win32_linker.c',
|
||||
include_directories: '../../include/qemu',
|
||||
link_depends: [win32_qemu_plugin_api_lib],
|
||||
link_args: ['-Lplugins', '-lqemu_plugin_api'],
|
||||
dependencies: glib)
|
||||
else
|
||||
t += shared_module(i, files(i + '.c'),
|
||||
include_directories: '../../include/qemu',
|
||||
dependencies: glib)
|
||||
endif
|
||||
endforeach
|
||||
endif
|
||||
if t.length() > 0
|
||||
alias_target('contrib-plugins', t)
|
||||
else
|
||||
run_target('contrib-plugins', command: find_program('true'))
|
||||
endif
|
@ -3690,6 +3690,10 @@ subdir('accel')
|
||||
subdir('plugins')
|
||||
subdir('ebpf')
|
||||
|
||||
if 'CONFIG_TCG' in config_all_accel
|
||||
subdir('contrib/plugins')
|
||||
endif
|
||||
|
||||
common_user_inc = []
|
||||
|
||||
subdir('common-user')
|
||||
|
Loading…
Reference in New Issue
Block a user