public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug symtab/15028] New: regressions with dwz -m
@ 2013-01-17 19:34 tromey at redhat dot com
  2013-01-17 19:35 ` [Bug symtab/15028] " tromey at redhat dot com
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: tromey at redhat dot com @ 2013-01-17 19:34 UTC (permalink / raw)
  To: gdb-prs

http://sourceware.org/bugzilla/show_bug.cgi?id=15028

             Bug #: 15028
           Summary: regressions with dwz -m
           Product: gdb
           Version: unknown
            Status: NEW
          Severity: normal
          Priority: P2
         Component: symtab
        AssignedTo: unassigned@sourceware.org
        ReportedBy: tromey@redhat.com
    Classification: Unclassified


There are some test suite regressions using dwz -m:

gdb.base/completion.exp: complete ptype enum some_: PASS => FAIL
gdb.cp/derivation.exp: p (A::value_type) 0: PASS => FAIL
gdb.cp/derivation.exp: p (D::value_type) 0: PASS => FAIL
gdb.cp/derivation.exp: p (E::value_type) 0: PASS => FAIL
gdb.cp/derivation.exp: p (F::value_type) 0: PASS => FAIL
gdb.cp/derivation.exp: p (Z::value_type) 0: PASS => FAIL
gdb.cp/derivation.exp: p (ZZ::value_type) 0: PASS => FAIL
gdb.cp/derivation.exp: ptype A::value_type: PASS => FAIL
gdb.cp/derivation.exp: ptype D::value_type: PASS => FAIL
gdb.cp/derivation.exp: ptype E::value_type: PASS => FAIL
gdb.cp/derivation.exp: ptype F::value_type: PASS => FAIL
gdb.cp/derivation.exp: ptype Z::value_type: PASS => FAIL
gdb.cp/derivation.exp: ptype ZZ::value_type: PASS => FAIL
gdb.cp/derivation.exp: whatis A::value_type: PASS => FAIL
gdb.cp/derivation.exp: whatis D::value_type: PASS => FAIL
gdb.cp/derivation.exp: whatis E::value_type: PASS => FAIL
gdb.cp/derivation.exp: whatis F::value_type: PASS => FAIL
gdb.cp/derivation.exp: whatis Z::value_type: PASS => FAIL
gdb.cp/derivation.exp: whatis ZZ::value_type: PASS => FAIL

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug symtab/15028] regressions with dwz -m
  2013-01-17 19:34 [Bug symtab/15028] New: regressions with dwz -m tromey at redhat dot com
@ 2013-01-17 19:35 ` tromey at redhat dot com
  2013-01-28 16:54 ` tromey at redhat dot com
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: tromey at redhat dot com @ 2013-01-17 19:35 UTC (permalink / raw)
  To: gdb-prs

http://sourceware.org/bugzilla/show_bug.cgi?id=15028

Tom Tromey <tromey at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at sourceware    |tromey at redhat dot com
                   |dot org                     |

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug symtab/15028] regressions with dwz -m
  2013-01-17 19:34 [Bug symtab/15028] New: regressions with dwz -m tromey at redhat dot com
  2013-01-17 19:35 ` [Bug symtab/15028] " tromey at redhat dot com
@ 2013-01-28 16:54 ` tromey at redhat dot com
  2013-01-28 19:40 ` tromey at redhat dot com
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: tromey at redhat dot com @ 2013-01-28 16:54 UTC (permalink / raw)
  To: gdb-prs

http://sourceware.org/bugzilla/show_bug.cgi?id=15028

--- Comment #1 from Tom Tromey <tromey at redhat dot com> 2013-01-28 16:54:07 UTC ---
The first problem I see here is that the symbols in the
imported psymtab are given language_minimal.
This causes symbol_matches_domain to fail when looking up "A"
in "ptype A::value_type".

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug symtab/15028] regressions with dwz -m
  2013-01-17 19:34 [Bug symtab/15028] New: regressions with dwz -m tromey at redhat dot com
  2013-01-17 19:35 ` [Bug symtab/15028] " tromey at redhat dot com
  2013-01-28 16:54 ` tromey at redhat dot com
@ 2013-01-28 19:40 ` tromey at redhat dot com
  2013-01-29 18:37 ` tromey at redhat dot com
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: tromey at redhat dot com @ 2013-01-28 19:40 UTC (permalink / raw)
  To: gdb-prs

http://sourceware.org/bugzilla/show_bug.cgi?id=15028

--- Comment #2 from Tom Tromey <tromey at redhat dot com> 2013-01-28 19:40:11 UTC ---
The completion.exp problem is a mismatch between what dwz
produces and what gdb expects.

dwz makes a DW_TAG_partial_unit holding various types from
break1.c; "some_enum" is there.  This is stored in the .dwz file.
However, nothing imports this unit.  Instead the specific enum
type DIE is referenced from the main file:

 <1><44a>: Abbrev Number: 25 (DW_TAG_variable)
    <44b>   DW_AT_name        : (alt indirect string, offset: 0x219)    
    <44f>   DW_AT_decl_file   : 1    
    <450>   DW_AT_decl_line   : 34    
    <451>   DW_AT_type        : <alt 0x27b>    
    <455>   DW_AT_external    : 1    
    <455>   DW_AT_location    : 9 byte block: 3 c4 f 60 0 0 0 0 0    
(DW_OP_addr: 600fc4)

This approach causes gdb not to make a symbol for the enum.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug symtab/15028] regressions with dwz -m
  2013-01-17 19:34 [Bug symtab/15028] New: regressions with dwz -m tromey at redhat dot com
                   ` (2 preceding siblings ...)
  2013-01-28 19:40 ` tromey at redhat dot com
@ 2013-01-29 18:37 ` tromey at redhat dot com
  2013-01-30 20:21 ` tromey at redhat dot com
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: tromey at redhat dot com @ 2013-01-29 18:37 UTC (permalink / raw)
  To: gdb-prs

http://sourceware.org/bugzilla/show_bug.cgi?id=15028

--- Comment #3 from Tom Tromey <tromey at redhat dot com> 2013-01-29 18:37:42 UTC ---
Fixing the first problem yields a different regression:

FAIL: gdb.cp/anon-struct.exp: print type of X::t2::t2


This happens because namespace X appears in both the primary
file as:

 <1><2e>: Abbrev Number: 9 (DW_TAG_namespace)
    <2f>   DW_AT_name        : X    
    <31>   DW_AT_decl_file   : 1    
    <32>   DW_AT_decl_line   : 31    
    <33>   DW_AT_sibling     : <0x35>    

and in the .dwz file as:

 <1><68>: Abbrev Number: 10 (DW_TAG_namespace)
    <69>   DW_AT_name        : X    
    <6b>   DW_AT_sibling     : <0x86>    
[children]

... and symbol lookup in gdb picks the wrong one.

This seems reasonably tricky to solve in the general case.

One option might be to get dwz to add DW_AT_extension in this scenario.

Alternatively maybe we could hack around it somehow.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug symtab/15028] regressions with dwz -m
  2013-01-17 19:34 [Bug symtab/15028] New: regressions with dwz -m tromey at redhat dot com
                   ` (3 preceding siblings ...)
  2013-01-29 18:37 ` tromey at redhat dot com
@ 2013-01-30 20:21 ` tromey at redhat dot com
  2013-02-04 17:24 ` tromey at redhat dot com
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: tromey at redhat dot com @ 2013-01-30 20:21 UTC (permalink / raw)
  To: gdb-prs

http://sourceware.org/bugzilla/show_bug.cgi?id=15028

--- Comment #4 from Tom Tromey <tromey at redhat dot com> 2013-01-30 20:21:47 UTC ---
(In reply to comment #3)

> One option might be to get dwz to add DW_AT_extension in this scenario.

Jakub didn't want to do this.

One option that he pointed out is to assume that all namespaces with
the same name in a given objfile are the same, and merge their contents.
I am not sure this is really correct -- it is in a correct program,
but it may yield weird results in an incorrect program.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug symtab/15028] regressions with dwz -m
  2013-01-17 19:34 [Bug symtab/15028] New: regressions with dwz -m tromey at redhat dot com
                   ` (4 preceding siblings ...)
  2013-01-30 20:21 ` tromey at redhat dot com
@ 2013-02-04 17:24 ` tromey at redhat dot com
  2013-02-04 21:12 ` tromey at redhat dot com
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: tromey at redhat dot com @ 2013-02-04 17:24 UTC (permalink / raw)
  To: gdb-prs

http://sourceware.org/bugzilla/show_bug.cgi?id=15028

--- Comment #5 from Tom Tromey <tromey at redhat dot com> 2013-02-04 17:24:16 UTC ---
Further debugging show that the namespace regression isn't
actually about the namespace DIEs, but rather the file
name of the "main" function.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug symtab/15028] regressions with dwz -m
  2013-01-17 19:34 [Bug symtab/15028] New: regressions with dwz -m tromey at redhat dot com
                   ` (5 preceding siblings ...)
  2013-02-04 17:24 ` tromey at redhat dot com
@ 2013-02-04 21:12 ` tromey at redhat dot com
  2013-08-07 19:28 ` tromey at redhat dot com
  2013-08-07 20:10 ` cvs-commit at gcc dot gnu.org
  8 siblings, 0 replies; 10+ messages in thread
From: tromey at redhat dot com @ 2013-02-04 21:12 UTC (permalink / raw)
  To: gdb-prs

http://sourceware.org/bugzilla/show_bug.cgi?id=15028

--- Comment #6 from Tom Tromey <tromey at redhat dot com> 2013-02-04 21:12:28 UTC ---
With my various patches in place I see:

gdb.base/dbx.exp: whereis my_list: PASS => FAIL
gdb.cp/namespace.exp: info func xyzq: PASS => FAIL

Both of these are caused by the strange way in which we
invoke dwz -- passing in two identical copies of the same
program.  This means that some objects are duplicated
(once in the .dwz file and another time in the main file,
but usually there with a source location).

It is unclear to me if this kind of thing can ever happen
with a real use of dwz.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug symtab/15028] regressions with dwz -m
  2013-01-17 19:34 [Bug symtab/15028] New: regressions with dwz -m tromey at redhat dot com
                   ` (6 preceding siblings ...)
  2013-02-04 21:12 ` tromey at redhat dot com
@ 2013-08-07 19:28 ` tromey at redhat dot com
  2013-08-07 20:10 ` cvs-commit at gcc dot gnu.org
  8 siblings, 0 replies; 10+ messages in thread
From: tromey at redhat dot com @ 2013-08-07 19:28 UTC (permalink / raw)
  To: gdb-prs

http://sourceware.org/bugzilla/show_bug.cgi?id=15028

--- Comment #7 from Tom Tromey <tromey at redhat dot com> ---
I see different issues with the current cvs head:

    Regressions:
    gdb.base/completion.exp: complete ptype enum some_: PASS => FAIL
    gdb.base/maint.exp: mt expand-symtabs: PASS => FAIL
    gdb.cp/derivation.exp: ptype N::value_type: PASS => FAIL
    gdb.cp/namespace.exp: print AAA::ALPHA: PASS => FAIL
    gdb.cp/namespace.exp: whatis ::C::cOtherFileType: PASS => FAIL
    gdb.cp/namespace.exp: whatis C::cOtherFileType: PASS => FAIL
    gdb.dwarf2/implptrconst.exp: print *c: PASS => FAIL
    gdb.dwarf2/implptrconst.exp: print d[-2]: PASS => FAIL

    Missing tests:
    gdb.base/fullpath-expand.exp: info source: PASS
    gdb.base/fullpath-expand.exp: list func: PASS
    gdb.base/fullpath-expand.exp: rbreak XXX/fullpath-expand-func.c:func: PASS
    gdb.dwarf2/dw2-restrict.exp: ptype f: PASS
    gdb.linespec/break-ask.exp: 0: PASS
    gdb.linespec/break-ask.exp: 2: PASS
    gdb.linespec/break-ask.exp: 3: PASS
    gdb.linespec/break-ask.exp: break twodup absolute: PASS
    gdb.linespec/break-ask.exp: break twodup relative: PASS
    gdb.linespec/break-ask.exp: break twodup relative other: PASS
    gdb.linespec/break-ask.exp: continue to breakpoint: body_elsewhere: PASS
    gdb.linespec/break-ask.exp: continue to breakpoint: body_elsewhere other:
PASS
    gdb.linespec/break-ask.exp: expect breakpoint: PASS
    gdb.linespec/break-ask.exp: expect breakpoint other: PASS
    gdb.linespec/break-ask.exp: info source: PASS
    gdb.linespec/break-ask.exp: info source other: PASS
    gdb.linespec/break-ask.exp: set filename-display absolute: PASS
    gdb.linespec/break-ask.exp: set filename-display relative: PASS
    gdb.linespec/break-ask.exp: set multiple-symbols ask: PASS
    gdb.linespec/macro-relative.exp: info macro HEADER: PASS

fullpath-expand, break-ask, and macro-relative fail due to test
oddities, like:

    cc-with-tweaks.sh: unable to find usable gdb

This can happen if, e.g., the test case "cd"s into the srcdir.

dw2-restrict fails due to a dwz crash.  I reported this.

    https://bugzilla.redhat.com/show_bug.cgi?id=994658

My original series is still ok -- it doesn't help much with the
current test suite, but it includes at least one new test case
demonstrating a bug.

I haven't investigated the new regressions yet.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug symtab/15028] regressions with dwz -m
  2013-01-17 19:34 [Bug symtab/15028] New: regressions with dwz -m tromey at redhat dot com
                   ` (7 preceding siblings ...)
  2013-08-07 19:28 ` tromey at redhat dot com
@ 2013-08-07 20:10 ` cvs-commit at gcc dot gnu.org
  8 siblings, 0 replies; 10+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2013-08-07 20:10 UTC (permalink / raw)
  To: gdb-prs

http://sourceware.org/bugzilla/show_bug.cgi?id=15028

--- Comment #8 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
CVSROOT:    /cvs/src
Module name:    src
Changes by:    tromey@sourceware.org    2013-08-07 20:10:36

Modified files:
    gdb            : ChangeLog dwarf2read.c 

Log message:
    fix PR symtab/15028

    This fixes some derivation.exp regressions with "dwz -m".

    The bug here is that the imported PU is given language_minimal.
    However, it ought to be C++.

    The "pretend language" machinery exists to solve this problem, but it
    wasn't handled in process_psymtab_comp_unit.  So, this patch adds it
    there.

    Built and regtested, both normally and using "dwz -m", on x86-64
    Fedora 18.

    PR symtab/15028:
    * dwarf2read.c (struct process_psymtab_comp_unit_data): New.
    (process_psymtab_comp_unit_reader): Use it.
    (process_psymtab_comp_unit): Update.  Add "pretend_language"
    argument.
    (dwarf2_build_psymtabs_hard): Update.
    (scan_partial_symbols): Pass CU's language to
    process_psymtab_comp_unit.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.15872&r2=1.15873
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/dwarf2read.c.diff?cvsroot=src&r1=1.823&r2=1.824

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2013-08-07 20:10 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-17 19:34 [Bug symtab/15028] New: regressions with dwz -m tromey at redhat dot com
2013-01-17 19:35 ` [Bug symtab/15028] " tromey at redhat dot com
2013-01-28 16:54 ` tromey at redhat dot com
2013-01-28 19:40 ` tromey at redhat dot com
2013-01-29 18:37 ` tromey at redhat dot com
2013-01-30 20:21 ` tromey at redhat dot com
2013-02-04 17:24 ` tromey at redhat dot com
2013-02-04 21:12 ` tromey at redhat dot com
2013-08-07 19:28 ` tromey at redhat dot com
2013-08-07 20:10 ` cvs-commit at gcc dot gnu.org

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