diff --git a/tools/argdist.py b/tools/argdist.py index 09df3c368147..9902086dd339 100755 --- a/tools/argdist.py +++ b/tools/argdist.py @@ -293,9 +293,12 @@ def _generate_hash_field(self, i): def _generate_usdt_arg_assignment(self, i): expr = self.exprs[i] if self.probe_type == "u" and expr[0:3] == "arg": - return (" u64 %s = 0;\n" + + arg_index = int(expr[3]) + arg_ctype = self.usdt_ctx.get_probe_arg_ctype( + self.function, arg_index - 1) + return (" %s %s = 0;\n" + " bpf_usdt_readarg(%s, ctx, &%s);\n") \ - % (expr, expr[3], expr) + % (arg_ctype, expr, expr[3], expr) else: return "" diff --git a/tools/trace.py b/tools/trace.py index 3a957e9b304b..f2a874189798 100755 --- a/tools/trace.py +++ b/tools/trace.py @@ -321,9 +321,12 @@ def _generate_field_assign(self, idx): expr = self.values[idx].strip() text = "" if self.probe_type == "u" and expr[0:3] == "arg": - text = (" u64 %s = 0;\n" + + arg_index = int(expr[3]) + arg_ctype = self.usdt.get_probe_arg_ctype( + self.usdt_name, arg_index - 1) + text = (" %s %s = 0;\n" + " bpf_usdt_readarg(%s, ctx, &%s);\n") \ - % (expr, expr[3], expr) + % (arg_ctype, expr, expr[3], expr) if field_type == "s": return text + """