|
@@ -13,6 +13,7 @@
|
|
|
|
|
|
|
|
|
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)
|