From patchwork Fri Oct 7 18:01:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 58539 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0C77238A8146 for ; Fri, 7 Oct 2022 18:03:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0C77238A8146 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1665165782; bh=gvMp6QbMCQcCChG0zwA8Nem2dmO7VR/itybQZOxUZA4=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=UItYVAn8ERkGw76Sp+qree+McPf+Ezt3OV6vjVEnGGqLdrOHeQCm1IUTD2e6EWQ3D 3MVGwjS+G0bF2HT8ZmR5TBmx0380mr0XkYEydPiZQ7Zqqf/jXo3yUCOHIpaiimzNIj D1F/aTXt6dSmNhvWdyxLcwoADkjfElb1jpWoMRe4= X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-io1-xd30.google.com (mail-io1-xd30.google.com [IPv6:2607:f8b0:4864:20::d30]) by sourceware.org (Postfix) with ESMTPS id 9FA4A385740C for ; Fri, 7 Oct 2022 18:01:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9FA4A385740C Received: by mail-io1-xd30.google.com with SMTP id q200so3805564iod.7 for ; Fri, 07 Oct 2022 11:01:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gvMp6QbMCQcCChG0zwA8Nem2dmO7VR/itybQZOxUZA4=; b=IFzHhHUGWLrKCPX7lKyLE/a3Zo8TKaPhMUnuLGhTKkE9+HCfxWuNauaqXX5Z5IpLZF g8WifE4+ln9phX2ss6bbx8R5vyhsp8kKgg8zthW4IO5yX0Wp14v3aUKsOK/G0HvkEde8 HinCeerFlubM55Om8eBHC9ntYGjTAebI9wSJpquJu1hHxnGSW9oTcM9SnKrkxdOHmVPi 8VbENafWAMYGyqJqVQCO5MmL3LApUmqQcKR2bFNMMj0ThswpDSJk3xboaq7s4hO2x7+v ISh8UZiWyiKc24qd+h4cKssY7aAsYskmDkXBQqPMLafvJzzxnA/hgSKiLoUoBtuoMgFq znBw== X-Gm-Message-State: ACrzQf356nS7DRcSsGRxMni/EI8cbnGsiyMVAlq4/TEcfbbpSIYHIQX2 aGlYTntD/SCy34gWkOtVoLQt6cO93qprJQ== X-Google-Smtp-Source: AMsMyM5EGQzfFY6cgqxqFO2qpkbkVrNqbZJq9pHyXKq/bRQKdfF68vfNIFEjoZCy9lbIgFkurNWFxw== X-Received: by 2002:a05:6638:2188:b0:35a:47c3:4784 with SMTP id s8-20020a056638218800b0035a47c34784mr3123573jaj.223.1665165695918; Fri, 07 Oct 2022 11:01:35 -0700 (PDT) Received: from localhost.localdomain (71-211-160-49.hlrn.qwest.net. [71.211.160.49]) by smtp.gmail.com with ESMTPSA id h11-20020a056602154b00b006814fd71117sm1203228iow.12.2022.10.07.11.01.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Oct 2022 11:01:35 -0700 (PDT) To: gdb-patches@sourceware.org Subject: [PATCH 8/9] Use value_at_non_lval in get_call_return_value Date: Fri, 7 Oct 2022 12:01:19 -0600 Message-Id: <20221007180120.1866772-9-tromey@adacore.com> X-Mailer: git-send-email 2.34.3 In-Reply-To: <20221007180120.1866772-1-tromey@adacore.com> References: <20221007180120.1866772-1-tromey@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org 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: , X-Patchwork-Original-From: Tom Tromey via Gdb-patches From: Tom Tromey Reply-To: Tom Tromey Cc: Tom Tromey Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Sender: "Gdb-patches" get_call_return_value can handle RETURN_VALUE_STRUCT_CONVENTION, because the call is completely managed by gdb. However, it does not handle variably-sized types correctly. The simplest way to fix this is to use value_at_non_lval, which does type resolution. --- gdb/infcall.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/gdb/infcall.c b/gdb/infcall.c index 21270ef48d3..9b679d930e9 100644 --- a/gdb/infcall.c +++ b/gdb/infcall.c @@ -448,12 +448,7 @@ get_call_return_value (struct call_return_meta_info *ri) push_thread_stack_temporary (thr, retval); } else - { - retval = allocate_value (ri->value_type); - read_value_memory (retval, 0, 1, ri->struct_addr, - value_contents_raw (retval).data (), - ri->value_type->length ()); - } + retval = value_at_non_lval (ri->value_type, ri->struct_addr); } else {