From: Luis Machado <luis.machado@arm.com>
To: Kevin Buettner <kevinb@redhat.com>,
Tom de Vries via Gdb-patches <gdb-patches@sourceware.org>
Cc: Tom de Vries <tdevries@suse.de>
Subject: Re: [PATCH][gdb/testsuite] Use prototype to call libc functions
Date: Thu, 8 Sep 2022 11:15:41 +0100 [thread overview]
Message-ID: <280bf97a-7823-3f3f-68f9-a7060af5ea41@arm.com> (raw)
In-Reply-To: <20220907104106.099b2c4d@f35-zws-1>
On 9/7/22 18:41, Kevin Buettner via Gdb-patches wrote:
> On Mon, 5 Sep 2022 14:27:07 +0200
> Tom de Vries via Gdb-patches <gdb-patches@sourceware.org> 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 = {<text variable, no debug info>} 0x401030 <munmap@plt>
>> (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
>
My $0.02 is that the GDB testsuite is already very often affected by bugs in other components (compiler, debug info, linker, gas etc), which make it
even harder to have a somewhat clean GDB testsuite run.
I'd say it is the responsibility of whatever component contains the bug to have a test for it and fix it. In this case, gas.
The XFAIL idea is also OK in my opinion.
prev parent reply other threads:[~2022-09-08 10:16 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-05 12:27 Tom de Vries
2022-09-07 8:01 ` Tom de Vries
2022-09-07 17:41 ` Kevin Buettner
2022-09-08 9:26 ` Tom de Vries
2022-09-08 10:15 ` Luis Machado [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=280bf97a-7823-3f3f-68f9-a7060af5ea41@arm.com \
--to=luis.machado@arm.com \
--cc=gdb-patches@sourceware.org \
--cc=kevinb@redhat.com \
--cc=tdevries@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).