From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 70E0DC4332F for ; Sat, 4 Nov 2023 10:52:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231809AbjKDKwM (ORCPT ); Sat, 4 Nov 2023 06:52:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33078 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229468AbjKDKwL (ORCPT ); Sat, 4 Nov 2023 06:52:11 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 503D1191; Sat, 4 Nov 2023 03:52:09 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 54C48C433C7; Sat, 4 Nov 2023 10:52:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699095128; bh=JAQzfnL7a2XNBBwy0ihLXq/4JX6Tfc5YeXjkF7JEm9s=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=t4NrV/C/8GIF+0H0zbZtQPYxVDEDCMLd4m+FsVXa1Rj+XWpC22zaSCG8QXRjYLjA9 of9cchfnYtFBK0W5RasRZpy77ydRhq0H+hBkOk6YKNInyZPHlpedAe5Z2foH5DNu7A NKESoqXC1rol9dNinnXBD4gy2KLN99lMVw+KHWHgIBvLSimfrfi4S+gge536BlBNR/ PDDs5YQqjKMPTUTWA0HqvLDyO/sRdMTKvbipwuTyzvqDinmrXqUNrkiqEj9oS4Olda XN18veNqzgZy9yJYiwpivh35AM4ZG9Fx8l7V5hAfPPPEQqcVOkE+6Rd3uI8gJSHOAp 88nhJ+44DN7dA== Date: Sat, 4 Nov 2023 19:52:02 +0900 From: Masami Hiramatsu (Google) To: Namhyung Kim Cc: Arnaldo Carvalho de Melo , Jiri Olsa , Peter Zijlstra , Ian Rogers , Adrian Hunter , Ingo Molnar , LKML , linux-perf-users@vger.kernel.org, Linus Torvalds , Stephane Eranian , Masami Hiramatsu , linux-toolchains@vger.kernel.org, linux-trace-devel@vger.kernel.org Subject: Re: [PATCH 04/48] perf dwarf-aux: Fix die_get_typename() for void * Message-Id: <20231104195202.e8c300fcdc3938e2bf13f5cf@kernel.org> In-Reply-To: <20231012035111.676789-5-namhyung@kernel.org> References: <20231012035111.676789-1-namhyung@kernel.org> <20231012035111.676789-5-namhyung@kernel.org> X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-toolchains@vger.kernel.org On Wed, 11 Oct 2023 20:50:27 -0700 Namhyung Kim wrote: > 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 void pointers don't have the type attribte 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. This looks good to me! Acked-by: Masami Hiramatsu (Google) Thanks! > > Cc: Masami Hiramatsu > Signed-off-by: Namhyung Kim > --- > tools/perf/util/dwarf-aux.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/tools/perf/util/dwarf-aux.c b/tools/perf/util/dwarf-aux.c > index 2941d88f2199..4849c3bbfd95 100644 > --- a/tools/perf/util/dwarf-aux.c > +++ b/tools/perf/util/dwarf-aux.c > @@ -1090,7 +1090,14 @@ int die_get_typename(Dwarf_Die *vr_die, struct strbuf *buf) > return strbuf_addf(buf, "%s%s", tmp, name ?: ""); > } > ret = die_get_typename(&type, buf); > - return ret ? ret : strbuf_addstr(buf, tmp); > + if (ret < 0) { > + /* void pointer has no type attribute */ > + if (tag == DW_TAG_pointer_type && ret == -ENOENT) > + return strbuf_addf(buf, "void*"); > + > + return ret; > + } > + return strbuf_addstr(buf, tmp); > } > > /** > -- > 2.42.0.655.g421f12c284-goog > -- Masami Hiramatsu (Google)