Re: Re: [PATCH 13/13] tracing/probes: Fix basic print type functions

From: Masami Hiramatsu
Date: Mon Aug 05 2013 - 03:27:50 EST


(2013/08/05 15:31), Joe Perches wrote:
> On Mon, 2013-08-05 at 15:22 +0900, Masami Hiramatsu wrote:
>> (2013/07/31 18:03), Namhyung Kim wrote:
>>> From: Namhyung Kim <namhyung.kim@xxxxxxx>
>>>
>>> The print format of s32 type was "ld" and it's casted to "long". So
>>> it turned out to print 4294967295 for "-1" on 64-bit systems. Not
>>> sure whether it worked well on 32-bit systems.
> []
>>> diff --git a/kernel/trace/trace_probe.c b/kernel/trace/trace_probe.c
> []
>>> @@ -45,14 +45,19 @@ __kprobes int PRINT_TYPE_FUNC_NAME(type)(struct trace_seq *s, \
> []
>>> +DEFINE_BASIC_PRINT_TYPE_FUNC(s8, "%d", signed char)
>
> If there's a need to identify signed char, why
> not signed short, signed int and signd long too?

Actually, since the types smaller than int are automatically up-casted
to (signed/unsigned) int, those do not require the cast.
However, u64/s64 requires those cast, because there are two different
definitions (see include/asm/int-l[l]64.h).

BTW, I think we should have a common definition of the printk format
for each integer types too.

Thank you,

--
Masami HIRAMATSU
IT Management Research Dept. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt@xxxxxxxxxxx


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/