From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id /XsjMtLXGGM8MzUAWB0awg (envelope-from ) for ; Wed, 07 Sep 2022 13:41:38 -0400 Received: by simark.ca (Postfix, from userid 112) id C0C501E4A7; Wed, 7 Sep 2022 13:41:38 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=AQ8B+RMA; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-3.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from sourceware.org (server2.sourceware.org [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 77B511E13B for ; Wed, 7 Sep 2022 13:41:38 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 05A7938582B4 for ; Wed, 7 Sep 2022 17:41:38 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 05A7938582B4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1662572498; bh=eAUiUSC1RUZiLaDZtp99wq9c94ObzOEghS2Nbfh6O/s=; h=Date:To:Subject:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=AQ8B+RMAWo1IhF+A7UWrgXfKI0imig9W7IbW7WBkV3OfHVnnWpT2OGU6/hUZB1IPz XlanwmOWqP7VmQIcdIL3Z1IHKmH/DKO9AbRHKOQxl5y+K8/oJa0KYYpD+3sFdseQ/J fcvKVEtr25AKAh1rDWYtbWd8uIrGkryB7sMztCrU= Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id AB4703858D28 for ; Wed, 7 Sep 2022 17:41:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org AB4703858D28 Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-453-l9dWuoDJMqyclBqy5gIQCA-1; Wed, 07 Sep 2022 13:41:16 -0400 X-MC-Unique: l9dWuoDJMqyclBqy5gIQCA-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C03C0382C967; Wed, 7 Sep 2022 17:41:15 +0000 (UTC) Received: from f35-zws-1 (unknown [10.2.16.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7AA9340B40C9; Wed, 7 Sep 2022 17:41:15 +0000 (UTC) Date: Wed, 7 Sep 2022 10:41:06 -0700 To: Tom de Vries via Gdb-patches Subject: Re: [PATCH][gdb/testsuite] Use prototype to call libc functions Message-ID: <20220907104106.099b2c4d@f35-zws-1> In-Reply-To: <20220905122706.GA23594@delia.home> References: <20220905122706.GA23594@delia.home> Organization: Red Hat MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit 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: Kevin Buettner via Gdb-patches Reply-To: Kevin Buettner Cc: Tom de Vries Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" On Mon, 5 Sep 2022 14:27:07 +0200 Tom de Vries via Gdb-patches wrote: > Hi, > > On openSUSE Tumbleweed (using glibc 2.36), I run into: > ... > (gdb) print /d (int) munmap (4198400, 4096)^M > Invalid cast.^M > (gdb) FAIL: gdb.base/break-main-file-remove-fail.exp: cmdline: \ > get integer valueof "(int) munmap (4198400, 4096)" > ... > > The problem is that after starting the executable, the symbol has type > "void (*) (void)": > ... > (gdb) p munmap > $1 = {} 0x401030 > (gdb) start > ... > (gdb) p munmap > $2 = {void (void)} 0x7ffff7feb9a0 <__GI_munmap> > ... > which causes the "Invalid cast" error. > > Looking at the debug info for glibc for symbol __GI_munmap: > ... > <0><189683>: Abbrev Number: 1 (DW_TAG_compile_unit) > <189691> DW_AT_name : ../sysdeps/unix/syscall-template.S > <189699> DW_AT_producer : GNU AS 2.39.0 > <1><1896ae>: Abbrev Number: 2 (DW_TAG_subprogram) > <1896af> DW_AT_name : __GI___munmap > <1896b3> DW_AT_external : 1 > <1896b4> DW_AT_low_pc : 0x10cad0 > <1896bc> DW_AT_high_pc : 37 > ... > that's probably caused by this bit (or similar bits for other munmap aliases). > > This is fixed in gas on trunk by commit 5578fbf672e ("GAS: Add a return type > tag to DWARF DIEs generated for function symbols"). > > Work around this (for say gas 2.39) by explicitly specifying the prototype for > munmap. > > Likewise for getpid in a couple of other test-cases. > > Tested on x86_64-linux. > > Any comments? I have mixed feelings about patches like this. One the one hand, it's nice to have the test "fixed" so that it doesn't fail. But, on the other hand, this failure found a problem with the debug info in glibc, so fixing it as you did here will remove that test. Perhaps you could add a new test which will still fail when the debug info incorrectly specifies that munmap has a void return type? Kevin