Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Joel Brobecker <brobecker@gnat.com>
To: Michael Veksler <VEKSLER@il.ibm.com>
Cc: gdb@sources.redhat.com
Subject: Re: GDB unusable on AIX and lucky to work on HP-UX (PR1170)
Date: Thu, 23 Sep 2004 15:45:00 -0000	[thread overview]
Message-ID: <20040923154527.GD968@gnat.com> (raw)
In-Reply-To: <OFDB42FE2E.64790302-ONC2256F18.002BE1F7-C2256F18.00391856@il.ibm.com>

On Thu, Sep 23, 2004 at 12:23:37PM +0200, Michael Veksler wrote:
> 
> This is a bug long overdue, and makes C++ debugging on AIX impossible.

I'd like to know how the other GDB maintainers feel about this bug
report. I don't think that we should use a reproducer that forces us
to switch stabs lines like this. I'd much rather use a real testcase.
That way, I feel more comfortable knowing that I am fixing a real bug,
and we can then add the testscase to our testsuite once the bug is fixed.

Opinions?

Michael,

would have some code that would demonstrate the problem without
the fiddling? I just looked at the testsuite results on AIX, where
I use GCC 3.2.3 configured with C,C++ and Ada, and I didn't see any
such internal-error.

BTW, here are the results for the entire gdb.cp testcases (all our
C++ testcases):

                        === gdb Summary ===
        
        # of expected passes            1681
        # of unexpected failures        50
        # of expected failures          2
        # of known failures             23
        # of unresolved testcases       2

This is with sources from CVS as of yesterday.


> http://sources.redhat.com/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gdb&pr=1170
> 
> 
> 1. First I'll describe how to reproduce (will probably
>    crash on other stab+coff systems)
> 2. Later I'll explain why this happens.
> 3. Then I'll ask how this should be fixed.
> 
> ---- How to reproduce ----
> On AIX, (maybe on other systems) the folding will crash
> gdb (5.3, and as I remember, 6.0 and later):
>       // g++ -g
>       struct X { static const int firstInt = 0; };
>       struct Y { static const int secondInt = 0; };
>       int main() { }
> 
> Move the stabstring about 'firstInt' till after the
> stabstring about 'main' (something that /bin/as and
> /bin/ld are allowed to do).
> Now, in gdb do either:
>       'ptype Y', or 'break main'
> 
> At this point you should get:
> gdbtypes.c:515: gdb-internal-error: make_cv_type: Assertion `TYPE_OBJFILE
> (*typeptr) == TYPE_OBJFILE (type) || TYPE_STUB (*typeptr)' failed.
> An internal GDB error was detected.  This .......
> 
> ---- What causes the crash ----
> 
> 'firstInt' is assigned a new type-id (13) which is a typedef
> of the build in 'int':
>       X:Tt12=s1firstInt:/213=k-1:........
>                          ^^ ^^^
>                     type-id   built-in type (1 == int).
> 
> 'secondInt' reuses the same type-id:
>       Y:Tt21=s1secondInt:/213:....
>                           ^^
>                        type-id
> 
> Now /bin/as or /bin/ld move firstInt stabstring much
> after secondInt.
> 
> GDB reads the symbols in order:
> 1. secondInt:/213,  gdb puts a new type-id = 13 in a symbol table.
>    This is an incomplete type.
> 2. firstInt:/213=k-1, oops this is not an incomplete type but
>    a const built-in type. An assertion in make_cv_type fails.
>    A comment preceding this assertion reads:
>    /* Objfile is per-core-type.  This const-qualified type had best
>       belong to the same objfile as the type it is qualifying, unless
>       we are overwriting a stub type, in which case the safest thing
>       to do is to copy the core type into the new objfile.  */
> ---- How to fix ----
> Removing the assertion does not resolve the core issue.
> Is it possible to update change type information when GDB
> learns more about the type? It must be the case for:
>       struct A ;
>       struct A { /* some stuff */ };
> Why is it not the case for 'static const int firstInt=0' ?
> Is there something deep in the infrastructure that prevents
> this? Is it because of late addition of c-v (const/volatile)?
> Is it a bug in gcc - which should emit "13=k-1" every time
> instead of plain "13" (it should not loose the const qualifier).
> 
> 
> 
> 
> 

-- 
Joel


  reply	other threads:[~2004-09-23 15:45 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-09-20 10:32 PR1170: wrong assumption on stab = crash Michael Veksler
2004-09-23 10:21 ` GDB unusable on AIX and lucky to work on HP-UX (PR1170) Michael Veksler
2004-09-23 15:45   ` Joel Brobecker [this message]
2004-09-23 16:23     ` Michael Veksler

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=20040923154527.GD968@gnat.com \
    --to=brobecker@gnat.com \
    --cc=VEKSLER@il.ibm.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