• Wang Nan's avatar
    perf data: Fix signedness of value · d4ae4213
    Wang Nan authored
    When converting int values, perf first extractes it to a ulonglong, then
    feeds it to babeltrace as a signed value.
    
    For negative 32 bit values (for example, return values of failed
    syscalls), the extracted data should be something like 0xfffffffe (-2).
    It becomes a large int64 value.
    
    Babeltrace denies to insert it with bt_ctf_field_signed_integer_set_value()
    because it is larger than 0x7fffffff, the largest positive value a
     32 bit int can be.
    
    This patch introduces adjust_signedness(), which fills high bits of
    ulonglong with 1 if the value is negative.
    Signed-off-by: default avatarWang Nan <wangnan0@huawei.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: He Kuang <hekuang@huawei.com>
    Cc: Jeremie Galarneau <jgalar@efficios.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Cc: Tom Zanussi <tzanussi@gmail.com>
    Link: http://lkml.kernel.org/r/1429372220-6406-8-git-send-email-jolsa@kernel.orgSigned-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    [ s/signess/signedness/g ]
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    d4ae4213
data-convert-bt.c 26.5 KB