From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id flUcKHj+PGCLJAAAWB0awg (envelope-from ) for ; Mon, 01 Mar 2021 09:47:20 -0500 Received: by simark.ca (Postfix, from userid 112) id 8E3B21EF82; Mon, 1 Mar 2021 09:47:20 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,RDNS_NONE, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from sourceware.org (unknown [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 5D85B1EF7E for ; Mon, 1 Mar 2021 09:47:19 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 67F4E393BC0E; Mon, 1 Mar 2021 14:47:18 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 67F4E393BC0E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1614610038; bh=v787N7RTHo7/ENNi0MQtHOjkk/3dsVAW/Kc2aa9AqzU=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=wl1GMkcV/BOWWRGdNR65DoWE80ydGhXoErpj4AT45Xhj/ILISfeiSlpTbr1OPRGaU kLNkbvsDb0z7Kk+hBBvC86ZsjKVzf9qLk+Jzzjen5BCDVy6ubRm9DhI/g56ENcwt+E 2hcLBeFRNuGXPZ/lZKP0B2hyPmeYFSgPycKg5Nqw= Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2075.outbound.protection.outlook.com [40.107.244.75]) by sourceware.org (Postfix) with ESMTPS id 32F15393A42A for ; Mon, 1 Mar 2021 14:47:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 32F15393A42A ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WaxYP+lXOQpQpb/PwM4v7hSCzt4eePVxhA1c9eIP9Blk/Ngi9fBbIJ/SYu8o3gnhFquG80F1iZ234DCJ8TwCHVxiXhV/LMj4+/lSk1agT1GXjcI6bAtNxDVoOni0JkxxdhkJqh6AgEkt8cdsscduPuKCOXMArjB/9UUQEHIHvHkCjBHqCQERd+eIi51SjdqM3WOdh0kkTqEdI6rfF0/zmc8wxhpbeRcG3DUwh25pU5TSViBQMsmKvRr0qzyWQdmH70OZ6qugkjs3zA5sTpXwJemqZOkrqutW2Ks7UL6XCTgWNzTAgyYcdOuT3DZNnNvroFWam8V06KHWY4TsRX18Ww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=v787N7RTHo7/ENNi0MQtHOjkk/3dsVAW/Kc2aa9AqzU=; b=IzMxDy8xD8LcGohZzrGmbD6aJ9LjV2QB5CEW8BcxI6tieZ9LqvssmyEKfMe7btyW/2T0gKnFGp4Q3fIHjxAy4fXMkUYq9ee8iOacjJIOi5gPQNszrPJaP0aKx/gxlmDLcT5eraHQHfvJXNB7rY/WSAuyehpI2QnGvlHepIr9XHeQBhu2zs3X2WesgjBJ1GiygRztnHc2xvDMlUqW88RxL7KftpqSETj1RGTxyjo6JzXEu520DS2ow0jY9skBCphZVKsuI5L6VwnB5inxHmUa4kdmaOdDCE3LkE6cG1kPQ++T/LvpHvk4vEL3S6pM1tLjTnH7GgdGWQavdKLGz1r/QQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none Received: from DM6PR12MB2762.namprd12.prod.outlook.com (2603:10b6:5:45::15) by DM6PR12MB3676.namprd12.prod.outlook.com (2603:10b6:5:1c7::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3890.19; Mon, 1 Mar 2021 14:47:05 +0000 Received: from DM6PR12MB2762.namprd12.prod.outlook.com ([fe80::31d8:f503:f7b2:f44]) by DM6PR12MB2762.namprd12.prod.outlook.com ([fe80::31d8:f503:f7b2:f44%3]) with mapi id 15.20.3868.033; Mon, 1 Mar 2021 14:47:05 +0000 To: gdb-patches@sourceware.org Subject: [PATCH 22/43] Add to_value method to DWARF entry classes Date: Mon, 1 Mar 2021 14:45:59 +0000 Message-Id: <20210301144620.103016-23-Zoran.Zaric@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210301144620.103016-1-Zoran.Zaric@amd.com> References: <20210301144620.103016-1-Zoran.Zaric@amd.com> Content-Type: text/plain X-Originating-IP: [2a00:23c7:5a85:6801:b4ed:fe7b:8064:d4d] X-ClientProxiedBy: AM0PR04CA0073.eurprd04.prod.outlook.com (2603:10a6:208:be::14) To DM6PR12MB2762.namprd12.prod.outlook.com (2603:10b6:5:45::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (2a00:23c7:5a85:6801:b4ed:fe7b:8064:d4d) by AM0PR04CA0073.eurprd04.prod.outlook.com (2603:10a6:208:be::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3890.19 via Frontend Transport; Mon, 1 Mar 2021 14:47:03 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: eb1dcb11-20a2-4c0a-c805-08d8dcc0e0d6 X-MS-TrafficTypeDiagnostic: DM6PR12MB3676: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bg9zwfHscFN0zDaTT0uecuftMUvu41jB+C+6BYyVE31ABjQgfE3vo2ASUlX/qdU8PNObhaE6bk7am3DmroJA1Nm7V9A0zJTfTukHdzBuKOVIy8c2nbFStIM7eqDV7cckTC0/ImoCrcnsDv6cepCDb1xgjrrSlnQQKHYgpwKEuHRT4hh/4LGNZ4wlB9IxPakklbftMeXlvHG0xHYWHoA7nWbGxnDSXNDdoHV5OejMyHqm7WNpCUAy/8V/tpbfxCHXDNBjO1H63ydOdKepPn+Mu8oVjp3qT1WTL+9kMEJj9Wh/3w8naPIw2QH9zdXKtKDtRNdzFi0ovm0m3VQTfejKuVLbH7pqXlJDbt+pK+SIZ/+3MjNBmN/awh2wdchRygQZ32TOlmBLURCZ5Cx0RaeIzdODIp+UZE/zvCk/BOqine2OBW+4dYv7L3C20IiILVc8j2B+pi55e8QyNQrbAebNaKPUU3WziIPrl6z8c4joKLDp7su7nueHwWmlJaPFZqQODUm2QKMySyMsJkldoofM8rAVk7yVtU8E2RUBTMZLw2GAMRwVDJhCesgZYx81zIGzxNvhBqcCCHr19oQ+wQU6Ag== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR12MB2762.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(366004)(396003)(346002)(136003)(39860400002)(6666004)(16526019)(1076003)(83380400001)(2616005)(69590400012)(2906002)(186003)(36756003)(66946007)(316002)(66476007)(8936002)(52116002)(86362001)(6506007)(478600001)(5660300002)(4326008)(6486002)(8676002)(6916009)(6512007)(66556008); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?EkCuUchN2QE7ShPdxBDAR766z7BfjfrR1vUhlRn+NRha3ozYOC1pStn8wZLO?= =?us-ascii?Q?YBPhRvhv54uPO5Y44VAPNlQ/E50yWUy9M94iq7cgY3fC0OBq8e8c/nir9NWH?= =?us-ascii?Q?+kYSXfAqHIBPCNDy3Uv0gK+V+SQYP8t7+hGDURXTQOeBejw7ZhGbDvHx/DQ9?= =?us-ascii?Q?HmR5suIOkEMnkesBkkKg7LgZN3xXBQ5wtNi8bUb5cBdZy7tb3Mz5wtSH5A0E?= =?us-ascii?Q?u6zaLw2UvQn9TAmEOxKK9NJ/dh9Am935DIEJhw6xruQuyFrJIWFx62o401tg?= =?us-ascii?Q?o1hj1e7NMYugS/TECj6JRDUlRB8J8DWi6O5UHANcSzYw834SzzIHVJ3ryUCQ?= =?us-ascii?Q?wExxcfK2gVVwM6QpLzGGUNSUC3gPKsw8vkvNUl3iFykFrpcMr3ZX4H3O/JD5?= =?us-ascii?Q?vM7jSs9gVsu1RDRuKs9JKOE4/fqfhor7yY+KK12VwxpzYJ0LROoMUAd8VPad?= =?us-ascii?Q?UBg/Dg3OH/IKPCd4HXOsJFixb3A9RdqCluQIqLxyBUJ8J2ukXDcsKg5/OOX5?= =?us-ascii?Q?A5bZwe6CibWDNkUY7BN5D0cwtGzxOIuFPpvIpRr3M3ZitBVChpMP0myGq/dB?= =?us-ascii?Q?tJSuMqomHiMd67cotiSzU/Kl5i6HNiQn22aFkVe7UznK8r4ulH+pFztR7u8j?= =?us-ascii?Q?8dgXTcG0rUPyNbyl5AOHqAcJ5fBvfd7B2O3NYvZW3xsqWdjwV2hC2UQ2Ds1e?= =?us-ascii?Q?PZFQJ9c4p5WVK30SALUGgQn9Xuh6t+RrXapqIRtMYGBtB01iC/4ZUOBV6x3+?= =?us-ascii?Q?zQAZw9+KXzFGttshTk4QicmU+zG6z4/HpNL9EHtIzrdM6aJ1Dpt1vkwiKso6?= =?us-ascii?Q?MRz7HnknKzkwPi4p1w8vYAhcndsSyJckyV/QPmVXTlDvYQ5eiLBU3ljqUz2d?= =?us-ascii?Q?kyiHiPBp5lqsrOroYOl7d558bYaPaUK+eEoWCf6YDtv3RpQM1YansZC5oTRc?= =?us-ascii?Q?0ZnIn7dy7u3Th2k6HBHLdL1tr7nxopiyU+iNDhbTP+3mA8qKS0KR9ArtjK1S?= =?us-ascii?Q?/gsc+t8wRqULdbPGOpuvSNrF/P65HlH+4Hs6n6NcGk2i9hewaxKLgIPknMNA?= =?us-ascii?Q?dXXgEt5fBimPdBhGHJlZ9qfUYRBsWbmHRma5MrCs0OTMRg1MMp3VeXFTJTM4?= =?us-ascii?Q?pTI8RdBaMuwB4dgSL2iQLmtzlTZSfX1kG3iF55h41nP9dbax4OXKZ6oR8X4M?= =?us-ascii?Q?T7nf2JI3a4Y+ZOLICVNjEE0BTSvduZzARVL3Afxg/sXpPZtRpqg4JXngqJqI?= =?us-ascii?Q?cbe4S1Ee2yJHAOrIc9RsXTxVJmJYCDR8sk4qzxLrSjmHjlUsYSW98Y4umbGl?= =?us-ascii?Q?YxjxU9WPZAD4CYr+Bl0PDOgKTdJddsSN8a2c0gmoF2EpvkJt8Ve7EKykpuv+?= =?us-ascii?Q?Pg9NeaY8viR/+uo2EvcZFpxv56MF?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb1dcb11-20a2-4c0a-c805-08d8dcc0e0d6 X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB2762.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Mar 2021 14:47:03.8598 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: IH3uIuypCXXefSDHzxNkdRgM6Jjpk+qDwhN/+u73+IMI1Id8vCbP8qRJ3phSvtlEeVTGaQnwlapAIKCN3HxSoQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3676 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Zoran Zaric via Gdb-patches Reply-To: Zoran Zaric Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" Following the idea from the last patch this patch is adding another conversion method from any DWARF entry object into a DWARF value object. Currently, we only know how to convert from a memory location description into a value, but it is resonable to expect a set of target hooks that would let the target decide on how to do other conversions in the future. gdb/ChangeLog: * dwarf2/expr.c (dwarf_entry::to_value): New method. (dwarf_location::to_value): New method. (dwarf_memory::to_value): New method. (ill_formed_expression): New function. --- gdb/dwarf2/expr.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/gdb/dwarf2/expr.c b/gdb/dwarf2/expr.c index d0c0efd2d31..69be36fcf2d 100644 --- a/gdb/dwarf2/expr.c +++ b/gdb/dwarf2/expr.c @@ -97,6 +97,14 @@ bits_to_bytes (ULONGEST start, ULONGEST n_bits) return (start % HOST_CHAR_BIT + n_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT; } +/* Throw an exception about the invalid DWARF expression. */ + +static void +ill_formed_expression () +{ + error (_("Ill-formed DWARF expression")); +} + /* See expr.h. */ CORE_ADDR @@ -279,6 +287,7 @@ write_to_memory (CORE_ADDR address, const gdb_byte *buffer, class dwarf_location; class dwarf_memory; +class dwarf_value; /* Base class that describes entries found on a DWARF expression evaluation stack. */ @@ -295,6 +304,11 @@ class dwarf_entry : public std::enable_shared_from_this defines an architecture of the location described. */ virtual std::shared_ptr to_location (struct gdbarch *arch) = 0; + + /* Convert DWARF entry into a DWARF value. TYPE defines a + desired type of the returned DWARF value if it already + doesnt have one. */ + virtual std::shared_ptr to_value (struct type *type) = 0; }; dwarf_entry::~dwarf_entry () = default; @@ -345,6 +359,16 @@ class dwarf_location : public dwarf_entry return std::dynamic_pointer_cast (shared_from_this ()); } + /* Convert DWARF entry into a DWARF value. If the conversion + from that location description kind to a value is not supported + the result is an empty pointer. TYPE defines a desired type of + the returned DWARF value if it already doesnt have one. */ + virtual std::shared_ptr to_value (struct type *type) override + { + ill_formed_expression (); + return std::shared_ptr (nullptr); + } + protected: /* Architecture of the location. */ struct gdbarch *m_arch; @@ -409,6 +433,14 @@ class dwarf_value : public dwarf_entry ARCH defines an architecture of the location described. */ std::shared_ptr to_location (struct gdbarch *arch) override; + /* Convert DWARF entry into a DWARF value. If the entry + is already a value, it is just returned and the TYPE type + information is ignored. */ + std::shared_ptr to_value (struct type *type) override + { + return std::dynamic_pointer_cast (shared_from_this ()); + } + private: /* Value contents as a stream of bytes in target byte order. */ gdb::unique_xmalloc_ptr m_contents; @@ -459,11 +491,19 @@ class dwarf_memory : public dwarf_location m_stack = stack; }; + std::shared_ptr to_value (struct type *type) override; + private: /* True if the location belongs to a stack memory region. */ bool m_stack; }; +std::shared_ptr +dwarf_memory::to_value (struct type *type) +{ + return std::make_shared (m_offset, type); +} + /* Register location description entry. */ class dwarf_register : public dwarf_location -- 2.17.1