[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 1/9] scripts/tracetool: Fix dtrace generation for macOS
From: |
Stefan Hajnoczi |
Subject: |
[PULL 1/9] scripts/tracetool: Fix dtrace generation for macOS |
Date: |
Thu, 13 Aug 2020 06:22:49 +0100 |
From: Roman Bolshakov <r.bolshakov@yadro.com>
dtrace USDT is fully supported since OS X 10.6. There are a few
peculiarities compared to other dtrace flavors.
1. It doesn't accept empty files.
2. It doesn't recognize bool type but accepts C99 _Bool.
3. It converts int8_t * in probe points to char * in
header files and introduces [-Wpointer-sign] warning.
Cc: Cameron Esfahani <dirty@apple.com>
Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-id: 20200717093517.73397-2-r.bolshakov@yadro.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
scripts/tracetool/format/d.py | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/scripts/tracetool/format/d.py b/scripts/tracetool/format/d.py
index 0afb5f3f47..353722f89c 100644
--- a/scripts/tracetool/format/d.py
+++ b/scripts/tracetool/format/d.py
@@ -13,6 +13,7 @@ __email__ = "stefanha@redhat.com"
from tracetool import out
+from sys import platform
# Reserved keywords from
@@ -34,7 +35,8 @@ def generate(events, backend, group):
# SystemTap's dtrace(1) warns about empty "provider qemu {}" but is happy
# with an empty file. Avoid the warning.
- if not events:
+ # But dtrace on macOS can't deal with empty files.
+ if not events and platform != "darwin":
return
out('/* This file is autogenerated by tracetool, do not edit. */'
@@ -44,6 +46,17 @@ def generate(events, backend, group):
for e in events:
args = []
for type_, name in e.args:
+ if platform == "darwin":
+ # macOS dtrace accepts only C99 _Bool
+ if type_ == 'bool':
+ type_ = '_Bool'
+ if type_ == 'bool *':
+ type_ = '_Bool *'
+ # It converts int8_t * in probe points to char * in header
+ # files and introduces [-Wpointer-sign] warning.
+ # Avoid it by changing probe type to signed char * beforehand.
+ if type_ == 'int8_t *':
+ type_ = 'signed char *'
if name in RESERVED_WORDS:
name += '_'
args.append(type_ + ' ' + name)
--
2.26.2
- [PULL 0/9] Tracing patches, Stefan Hajnoczi, 2020/08/13
- [PULL 1/9] scripts/tracetool: Fix dtrace generation for macOS,
Stefan Hajnoczi <=
- [PULL 2/9] scripts/tracetool: Use void pointer for vcpu, Stefan Hajnoczi, 2020/08/13
- [PULL 4/9] net/colo: Match is-enabled probe to tracepoint, Stefan Hajnoczi, 2020/08/13
- [PULL 3/9] build: Don't make object files for dtrace on macOS, Stefan Hajnoczi, 2020/08/13
- [PULL 5/9] softmmu: Add missing trace-events file, Stefan Hajnoczi, 2020/08/13
- [PULL 6/9] scripts/cleanup-trace-events: Fix for vcpu property, Stefan Hajnoczi, 2020/08/13
- [PULL 7/9] scripts/cleanup-trace-events: Emit files in alphabetical order, Stefan Hajnoczi, 2020/08/13
- [PULL 8/9] trace-events: Delete unused trace points, Stefan Hajnoczi, 2020/08/13
- [PULL 9/9] trace-events: Fix attribution of trace points to source, Stefan Hajnoczi, 2020/08/13
- Re: [PULL 0/9] Tracing patches, no-reply, 2020/08/13
- Re: [PULL 0/9] Tracing patches, no-reply, 2020/08/13