Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@mvista.com>
To: Gdb List <gdb@sources.redhat.com>
Subject: Re: question about method naming
Date: Mon, 06 May 2002 12:33:00 -0000	[thread overview]
Message-ID: <20020506193356.GA25574@nevyn.them.org> (raw)
In-Reply-To: <87u1pl6u33.fsf@creche.redhat.com>

On Mon, May 06, 2002 at 11:53:52AM -0600, Tom Tromey wrote:
> I compiled the appended code with `gcj -g'.  I'm using the trunk cvs
> gcj.  Then I ran gdb on the program.
> 
> If I type:
> 
>     b x.main
> 
> gdb tells me that there is no such method.

Are you working on a very current gcj?  I.E. one that defaults to
DWARF-2 output?  I observe the same thing in 3.0.4 with -gdwarf-2, but
not with -gstabs+.

In this version, the stabs debug info claims that 'class x' has a
member function 'main'.  In DWARF-2 it claims that 'class x' has a
member function 'x.main(java.lang.String[])'.  If this is still the
case in your compiler (check readelf -w output, search for a
DW_TAG_subprogram whose name contains main) then I believe it is
a gcj bug.

 <2><16d>: Abbrev Number: 4 (DW_TAG_subprogram)
     DW_AT_sibling     : <1c4>  
     DW_AT_external    : 1      
     DW_AT_name        : x.main(java.lang.String[])     
     DW_AT_decl_file   : 1      
     DW_AT_decl_line   : 458756 
     DW_AT_MIPS_linkage_name: _ZN1x4mainEP6JArrayIPN4java4lang6StringEE 
     DW_AT_declaration : 1      


Also amusing:

 <2><1c4>: Abbrev Number: 6 (DW_TAG_subprogram)
     DW_AT_external    : 1
     DW_AT_name        : ()
     DW_AT_MIPS_linkage_name: _ZN1xC1Ev
     DW_AT_artificial  : 1
     DW_AT_declaration : 1

The constructor's name is obviously wrong...

> 
> I tracked the problem down to linespec.c:find_methods().
> 
> Here we end up in the loop, and method_name for the 0th method is:
> 
>     (gdb) p method_name
>     $27 = 0x83e9a52 "x.main(java.lang.String[])"
> 
> So of course we fail to match this against "main".
> 
> Is this a gdb bug or a gcj bug?  Or just a disagreement?
> 
> I'm guessing that method_name should not be fully qualified.
> Is that correct?

I believe so.

> 
> Tom
> 
> public class x
> {
>   public static void main (String[] args)
>   {
>     char c = args[0].charAt(0);
>     System.out.println(c);
>   }
> }
> 

-- 
Daniel Jacobowitz                           Carnegie Mellon University
MontaVista Software                         Debian GNU/Linux Developer


  reply	other threads:[~2002-05-06 19:33 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-05-06 10:44 Tom Tromey
2002-05-06 12:33 ` Daniel Jacobowitz [this message]
2002-05-06 15:53   ` Tom Tromey
2002-05-06 16:07     ` Daniel Jacobowitz

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=20020506193356.GA25574@nevyn.them.org \
    --to=drow@mvista.com \
    --cc=gdb@sources.redhat.com \
    /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