mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 11:39:53 +00:00
trace: [tcg] Define TCG tracing helper routine wrappers
Generates header "trace/generated-helpers-wrappers.h" with definitions for TCG helper wrappers. These wrappers ('gen_helper_trace_${event}_exec_wrapper') transform mixed native and TCG argument types to TCG types and call the actual TCG helpers ('gen_helper_trace_${event}_exec_proxy'). Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
341ea69185
commit
f4654226d4
1
.gitignore
vendored
1
.gitignore
vendored
@ -11,6 +11,7 @@
|
||||
/trace/generated-tracers.dtrace
|
||||
/trace/generated-events.h
|
||||
/trace/generated-events.c
|
||||
/trace/generated-helpers-wrappers.h
|
||||
/trace/generated-helpers.h
|
||||
/trace/generated-helpers.c
|
||||
/trace/generated-ust-provider.h
|
||||
|
1
Makefile
1
Makefile
@ -57,6 +57,7 @@ GENERATED_HEADERS += trace/generated-tracers-dtrace.h
|
||||
endif
|
||||
GENERATED_SOURCES += trace/generated-tracers.c
|
||||
|
||||
GENERATED_HEADERS += trace/generated-helpers-wrappers.h
|
||||
GENERATED_HEADERS += trace/generated-helpers.h
|
||||
GENERATED_SOURCES += trace/generated-helpers.c
|
||||
|
||||
|
70
scripts/tracetool/format/tcg_helper_wrapper_h.py
Normal file
70
scripts/tracetool/format/tcg_helper_wrapper_h.py
Normal file
@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
Generate trace/generated-helpers-wrappers.h.
|
||||
"""
|
||||
|
||||
__author__ = "Lluís Vilanova <vilanova@ac.upc.edu>"
|
||||
__copyright__ = "Copyright 2012-2014, Lluís Vilanova <vilanova@ac.upc.edu>"
|
||||
__license__ = "GPL version 2 or (at your option) any later version"
|
||||
|
||||
__maintainer__ = "Stefan Hajnoczi"
|
||||
__email__ = "stefanha@linux.vnet.ibm.com"
|
||||
|
||||
|
||||
from tracetool import out
|
||||
from tracetool.transform import *
|
||||
|
||||
|
||||
def generate(events, backend):
|
||||
events = [e for e in events
|
||||
if "disable" not in e.properties]
|
||||
|
||||
out('/* This file is autogenerated by tracetool, do not edit. */',
|
||||
'',
|
||||
'#define tcg_temp_new_nop(v) (v)',
|
||||
'#define tcg_temp_free_nop(v)',
|
||||
'',
|
||||
)
|
||||
|
||||
for e in events:
|
||||
if "tcg-exec" not in e.properties:
|
||||
continue
|
||||
|
||||
# tracetool.generate always transforms types to host
|
||||
e_args = e.original.args
|
||||
|
||||
# mixed-type to TCG helper bridge
|
||||
args_tcg_compat = e_args.transform(HOST_2_TCG_COMPAT)
|
||||
|
||||
code_new = [
|
||||
"%(tcg_type)s __%(name)s = %(tcg_func)s(%(name)s);" %
|
||||
{"tcg_type": transform_type(type_, HOST_2_TCG),
|
||||
"tcg_func": transform_type(type_, HOST_2_TCG_TMP_NEW),
|
||||
"name": name}
|
||||
for (type_, name) in args_tcg_compat
|
||||
]
|
||||
|
||||
code_free = [
|
||||
"%(tcg_func)s(__%(name)s);" %
|
||||
{"tcg_func": transform_type(type_, HOST_2_TCG_TMP_FREE),
|
||||
"name": name}
|
||||
for (type_, name) in args_tcg_compat
|
||||
]
|
||||
|
||||
gen_name = "gen_helper_" + e.api()
|
||||
|
||||
out('static inline void %(name)s(%(args)s)',
|
||||
'{',
|
||||
' %(code_new)s',
|
||||
' %(proxy_name)s(%(tmp_names)s);',
|
||||
' %(code_free)s',
|
||||
'}',
|
||||
name=gen_name,
|
||||
args=e_args,
|
||||
proxy_name=gen_name + "_proxy",
|
||||
code_new="\n ".join(code_new),
|
||||
code_free="\n ".join(code_free),
|
||||
tmp_names=", ".join(["__%s" % name for _, name in e_args]),
|
||||
)
|
@ -99,6 +99,14 @@ endif
|
||||
##################################################
|
||||
# Translation level
|
||||
|
||||
$(obj)/generated-helpers-wrappers.h: $(obj)/generated-helpers-wrappers.h-timestamp
|
||||
$(obj)/generated-helpers-wrappers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak
|
||||
$(call quiet-command,$(TRACETOOL) \
|
||||
--format=tcg-helper-wrapper-h \
|
||||
--backend=$(TRACE_BACKENDS) \
|
||||
< $< > $@," GEN $(patsubst %-timestamp,%,$@)")
|
||||
@cmp -s $@ $(patsubst %-timestamp,%,$@) || cp $@ $(patsubst %-timestamp,%,$@)
|
||||
|
||||
$(obj)/generated-helpers.h: $(obj)/generated-helpers.h-timestamp
|
||||
$(obj)/generated-helpers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak
|
||||
$(call quiet-command,$(TRACETOOL) \
|
||||
|
Loading…
Reference in New Issue
Block a user