• Namhyung Kim's avatar
    perf annotate-data: Show typedef names properly · 90d78e7b
    Namhyung Kim authored
    The die_get_typename() would resolve typedef and get to the original
    type.  But sometimes the original type is a struct without name and it
    makes the output confusing and hard to read.
    
    This is a diff of perf report -s type before and after the change.
    New types such as atomic{,64}_t and sigset_t appeared and the portion
    of unnamed struct was reduced.  Also u32, u64 and size_t were splitted
    from the base types.
    
      --- b   2024-08-01 17:02:34.307809952 -0700
      +++ a   2024-08-07 14:17:05.245853999 -0700
      -     2.40%  long unsigned int
      +     2.26%  long unsigned int
      -     1.56%  unsigned int
      +     1.27%  unsigned int
      -     0.98%  struct
      -     0.79%  long long unsigned int
      +     0.58%  long long unsigned int
      +     0.36%  struct
      +     0.27%  atomic64_t
      +     0.22%  u32
      +     0.21%  u64
      +     0.19%  atomic_t
      +     0.13%  size_t
      -     0.08%  struct seqcount_spinlock
      +     0.08%  seqcount_spinlock_t
      +     0.08%  sigset_t
      +     0.08%  __poll_t
    
    Let's use the typedef name directly and the resolved to get the size of
    the type.
    
    Committer testing:
    
      root@x1:~# diff -u before after | head -30
      --- before	2024-08-08 09:35:13.917325041 -0300
      +++ after	2024-08-08 09:37:35.312257905 -0300
      @@ -10,25 +10,27 @@
       # ........  .........
       #
           79.40%  (unknown)
      -     2.28%  union
            1.96%  (stack operation)
      -     1.24%  struct
      +     1.87%  pthread_mutex_t
            0.99%  u32[]
      -     0.92%  unsigned int
            0.77%  struct task_struct
      +     0.75%  U32
            0.75%  struct pcpu_hot
            0.63%  struct qspinlock
      +     0.61%  atomic_t
            0.59%  struct list_head
      -     0.58%  int
            0.53%  struct cfs_rq
            0.51%  BYTE*
      -     0.48%  unsigned char
      +     0.48%  BYTE
            0.48%  long unsigned int
            0.46%  struct rq
            0.41%  struct worker
            0.41%  struct memcg_vmstats_percpu
      +     0.41%  pthread_cond_t
            0.37%  _Bool
      +     0.36%  int
      root@x1:~#
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20240807223129.1738004-1-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    90d78e7b
dwarf-aux.h 7.55 KB