public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
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.


      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).