• Namhyung Kim's avatar
    perf dwarf-aux: Fix die_get_typename() for void * · a65e8c0b
    Namhyung Kim authored
    The die_get_typename() is to return a C-like type name from DWARF debug
    entry and it follows data type if the target entry is a pointer type.
    
    But I found that void pointers don't have the type attribute to follow
    and then the function returns an error for that case.  This results in a
    broken type string for void pointer types.
    
    For example, the following type entries are pointer types.
    
     <1><48c>: Abbrev Number: 4 (DW_TAG_pointer_type)
        <48d>   DW_AT_byte_size   : 8
        <48d>   DW_AT_type        : <0x481>
     <1><491>: Abbrev Number: 211 (DW_TAG_pointer_type)
        <493>   DW_AT_byte_size   : 8
     <1><494>: Abbrev Number: 4 (DW_TAG_pointer_type)
        <495>   DW_AT_byte_size   : 8
        <495>   DW_AT_type        : <0x49e>
    
    The first one at offset 48c and the third one at offset 494 have type
    information.  Then they are pointer types for the referenced types.  But
    the second one at offset 491 doesn't have the type attribute.
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Acked-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: linux-toolchains@vger.kernel.org
    Cc: linux-trace-devel@vger.kernel.org
    Link: https://lore.kernel.org/r/20231110000012.3538610-5-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    a65e8c0b
dwarf-aux.c 36.3 KB