public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug gdb/9977] New: DW_OP_piece used to specify underined part of location is ignored
@ 2009-03-21 22:54 hubicka at gcc dot gnu dot org
  2009-03-22  1:03 ` [Bug gdb/9977] " tromey at redhat dot com
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2009-03-21 22:54 UTC (permalink / raw)
  To: gdb-prs

I am trying to add support to GCC to track SRAed structures and for structure
where some fields are optimized out I am producing following die:

        .uleb128 0x15   # (DIE (0x347) DW_TAG_variable)
        .ascii "a\0"    # DW_AT_name
        .byte   0x1     # DW_AT_decl_file (t.c)
        .byte   0x11    # DW_AT_decl_line
        .long   0x318   # DW_AT_type
        .byte   0x8     # DW_AT_location
        .byte   0x93    # DW_OP_piece
        .uleb128 0x4
        .byte   0x56    # DW_OP_reg6
        .byte   0x93    # DW_OP_piece
        .uleb128 0x4
        .byte   0x50    # DW_OP_reg0
        .byte   0x93    # DW_OP_piece
        .uleb128 0x4
        .byte   0x0     # end of children of DIE 0x2e7

I believe this is correct and identical to example in Example Location
Expression of dwarf3 standard.
But I get the following error:
(gdb) p a
Asked for position 0 of stack, stack only has 0 elements on it.

-- 
           Summary: DW_OP_piece used to specify underined part of location
                    is ignored
           Product: gdb
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: gdb
        AssignedTo: unassigned at sourceware dot org
        ReportedBy: hubicka at gcc dot gnu dot org
                CC: gdb-prs at sourceware dot org
  GCC host triplet: x86_64-pc-linux-gnu


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

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


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

* [Bug gdb/9977] DW_OP_piece used to specify underined part of location is ignored
  2009-03-21 22:54 [Bug gdb/9977] New: DW_OP_piece used to specify underined part of location is ignored hubicka at gcc dot gnu dot org
@ 2009-03-22  1:03 ` tromey at redhat dot com
  2010-05-16 17:29 ` tromey at redhat dot com
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: tromey at redhat dot com @ 2009-03-22  1:03 UTC (permalink / raw)
  To: gdb-prs


------- Additional Comments From tromey at redhat dot com  2009-03-22 01:03 -------
Confirmed; that's a bug all right.

AFAICT gdb doesn't have existing machinery to allow for undefined
pieces of a value.  Perhaps one way to do this would be to add
a new field to struct value, which would be a bitmap tracking which
bits are known to be valid.  Then, things like field lookups could
preserve this.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |tromey at redhat dot com
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|                            |1
   Last reconfirmed|0000-00-00 00:00:00         |2009-03-22 01:03:03
               date|                            |


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

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


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

* [Bug gdb/9977] DW_OP_piece used to specify underined part of location is ignored
  2009-03-21 22:54 [Bug gdb/9977] New: DW_OP_piece used to specify underined part of location is ignored hubicka at gcc dot gnu dot org
  2009-03-22  1:03 ` [Bug gdb/9977] " tromey at redhat dot com
@ 2010-05-16 17:29 ` tromey at redhat dot com
  2010-05-21 21:44 ` tromey at redhat dot com
  2010-06-11 15:37 ` tromey at redhat dot com
  3 siblings, 0 replies; 5+ messages in thread
From: tromey at redhat dot com @ 2010-05-16 17:29 UTC (permalink / raw)
  To: gdb-prs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at sourceware dot|tromey at redhat dot com
                   |org                         |
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2009-03-22 01:03:03         |2010-05-16 17:28:59
               date|                            |


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

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


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

* [Bug gdb/9977] DW_OP_piece used to specify underined part of location is ignored
  2009-03-21 22:54 [Bug gdb/9977] New: DW_OP_piece used to specify underined part of location is ignored hubicka at gcc dot gnu dot org
  2009-03-22  1:03 ` [Bug gdb/9977] " tromey at redhat dot com
  2010-05-16 17:29 ` tromey at redhat dot com
@ 2010-05-21 21:44 ` tromey at redhat dot com
  2010-06-11 15:37 ` tromey at redhat dot com
  3 siblings, 0 replies; 5+ messages in thread
From: tromey at redhat dot com @ 2010-05-21 21:44 UTC (permalink / raw)
  To: gdb-prs


------- Additional Comments From tromey at redhat dot com  2010-05-21 21:44 -------
I checked in some initial support for this.
Right now you get a warning and the piece is filled with zeroes.


-- 


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

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


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

* [Bug gdb/9977] DW_OP_piece used to specify underined part of location is ignored
  2009-03-21 22:54 [Bug gdb/9977] New: DW_OP_piece used to specify underined part of location is ignored hubicka at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2010-05-21 21:44 ` tromey at redhat dot com
@ 2010-06-11 15:37 ` tromey at redhat dot com
  3 siblings, 0 replies; 5+ messages in thread
From: tromey at redhat dot com @ 2010-06-11 15:37 UTC (permalink / raw)
  To: gdb-prs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2010-06-11 15:37 -------
Subject: Bug 9977

CVSROOT:	/cvs/src
Module name:	src
Changes by:	tromey@sourceware.org	2010-06-11 15:36:10

Modified files:
	gdb            : ChangeLog ada-lang.h ada-valprint.c c-lang.h 
	                 c-valprint.c cp-valprint.c d-lang.h 
	                 d-valprint.c dwarf2loc.c f-lang.h f-valprint.c 
	                 infcmd.c jv-lang.h jv-valprint.c language.c 
	                 language.h m2-lang.h m2-valprint.c mt-tdep.c 
	                 p-lang.h p-valprint.c printcmd.c scm-lang.h 
	                 scm-valprint.c sh64-tdep.c valops.c valprint.c 
	                 valprint.h value.c value.h 
	gdb/mi         : mi-main.c 
	gdb/python     : py-prettyprint.c python.h 
	gdb/testsuite  : ChangeLog 
	gdb/testsuite/gdb.dwarf2: pieces.exp 

Log message:
	gdb
	PR gdb/9977, PR exp/11636:
	* value.h (value_offset): Update.
	(struct lval_funcs) <check_validity>: New field.
	<copy_closure>: Make argument const.
	(value_computed_closure): Update.
	(value_contents_for_printing): Declare.
	(value_bits_valid): Likewise.
	(val_print): Likewise.
	(set_value_component_location): Update.
	(value_entirely_optimized_out): Declare.
	* value.c (value_offset): Argument now const.
	(require_not_optimized_out): New function.
	(value_contents_for_printing): New function.
	(value_contents_all): Call require_not_optimized_out.
	(value_contents): Likewise.
	(value_bits_valid): New function.
	(value_computed_closure): Argument now const.
	(set_value_component_location): Make 'whole' argument const.
	(value_entirely_optimized_out): New function.
	(value_bitsize): Argument now 'const'.
	(value_bitpos): Likewise.
	(value_type): Likewise.
	* valprint.h (val_print_array_elements): Update.
	* valprint.c (val_print): Add 'val' argument.  Use
	valprint_check_validity.
	(valprint_check_validity): New function.
	(value_check_printable): Use value_entirely_optimized_out.
	(common_val_print): Update.
	(value_print): Likewise.
	(val_print_array_elements): Add 'val' argument.
	* valops.c (value_fetch_lazy): Use value_contents_for_printing,
	value_bits_valid.  Reinit frame cache for lval_computed.
	* sh64-tdep.c (sh64_do_register): Update.
	* scm-valprint.c (scm_val_print): Add 'val' argument.
	* scm-lang.h (scm_val_print): Update.
	* python/python.h (apply_val_pretty_printer): Update.
	* python/py-prettyprint.c (apply_val_pretty_printer): Add 'val'
	argument.  Call set_value_component_location.
	* printcmd.c (print_scalar_formatted): Update.
	* p-valprint.c (pascal_val_print): Add 'val' argument.
	(pascal_object_print_value_fields): Likewise.
	(pascal_object_print_value): Likewise.
	(pascal_object_print_static_field): Update.
	* p-lang.h (pascal_val_print): Update.
	(pascal_object_print_value_fields): Update.
	* mt-tdep.c (mt_registers_info): Update.
	* mi/mi-main.c (get_register): Update.
	(mi_cmd_data_evaluate_expression): Use common_val_print.
	* m2-valprint.c (m2_print_array_contents): Add 'val' argument.
	(m2_print_unbounded_array): Likewise.
	(m2_val_print): Likewise.
	* m2-lang.h (m2_val_print): Update.
	* language.h (struct language_defn) <la_val_print>: Add 'val'
	argument.
	(LA_VAL_PRINT): Likewise.
	* language.c (unk_lang_val_print): Add 'val' argument.
	* jv-valprint.c (java_print_value_fields): Add 'val' argument.
	(java_val_print): Likewise.
	* jv-lang.h (java_val_print): Add 'val' argument.
	* infcmd.c (default_print_registers_info): Update.
	* f-valprint.c (f77_print_array_1): Add 'val' argument.
	(f77_print_array): Likewise.
	(f_val_print): Likewise.
	* f-lang.h (f_val_print): Add 'val' argument.
	* dwarf2loc.c (read_pieced_value): Use value_bitsize and
	value_bitpos.
	<DWARF_VALUE_OPTIMIZED_OUT>: Don't print warning.  Call
	set_value_optimized_out.
	(write_pieced_value): Use value_bitsize and value_bitpos.
	<default>: Don't exit loop.
	(check_pieced_value_validity): New function.
	(pieced_value_funcs): Reference check_pieced_value_validity,
	check_pieced_value_invalid.
	(copy_pieced_value_closure): Update.
	(check_pieced_value_bits): New function.
	(check_pieced_value_invalid): New function.
	* d-valprint.c (dynamic_array_type): Add 'val' argument.
	(d_val_print): Likewise.
	* d-lang.h (d_val_print): Update.
	* cp-valprint.c (cp_print_value_fields): Add 'val' argument.
	(cp_print_value_fields_rtti): Likewise.
	(cp_print_value): Likewise.
	(cp_print_static_field): Update.
	* c-valprint.c (c_val_print): Add 'val' argument.
	(c_value_print): Update.
	* c-lang.h (c_val_print): Update.
	(cp_print_value_fields): Likewise.
	(cp_print_value_fields_rtti): Likewise.
	* ada-valprint.c (struct ada_val_print_args): Remove.
	(val_print_packed_array_elements): Add 'val' argument.
	(ada_val_print): Likewise.  Rewrite.
	(ada_val_print_stub): Remove.
	(ada_val_print_array): Add 'val' argument.
	(ada_val_print_1): Likewise.
	(print_variant_part): Likewise.
	(ada_value_print): Update.
	(print_record): Add 'val' argument.
	(print_field_values): Likewise.
	* ada-lang.h (ada_val_print): Update.
	gdb/testsuite
	PR gdb/9977, PR exp/11636::
	* gdb.dwarf2/pieces.exp (pieces_test_f3): Remove kfail.
	(pieces_test_f6): Update expected output.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.11895&r2=1.11896
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ada-lang.h.diff?cvsroot=src&r1=1.55&r2=1.56
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ada-valprint.c.diff?cvsroot=src&r1=1.65&r2=1.66
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/c-lang.h.diff?cvsroot=src&r1=1.28&r2=1.29
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/c-valprint.c.diff?cvsroot=src&r1=1.68&r2=1.69
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/cp-valprint.c.diff?cvsroot=src&r1=1.68&r2=1.69
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/d-lang.h.diff?cvsroot=src&r1=1.1&r2=1.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/d-valprint.c.diff?cvsroot=src&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/dwarf2loc.c.diff?cvsroot=src&r1=1.89&r2=1.90
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/f-lang.h.diff?cvsroot=src&r1=1.17&r2=1.18
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/f-valprint.c.diff?cvsroot=src&r1=1.57&r2=1.58
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/infcmd.c.diff?cvsroot=src&r1=1.267&r2=1.268
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/jv-lang.h.diff?cvsroot=src&r1=1.15&r2=1.16
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/jv-valprint.c.diff?cvsroot=src&r1=1.44&r2=1.45
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/language.c.diff?cvsroot=src&r1=1.96&r2=1.97
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/language.h.diff?cvsroot=src&r1=1.66&r2=1.67
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/m2-lang.h.diff?cvsroot=src&r1=1.16&r2=1.17
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/m2-valprint.c.diff?cvsroot=src&r1=1.28&r2=1.29
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/mt-tdep.c.diff?cvsroot=src&r1=1.32&r2=1.33
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/p-lang.h.diff?cvsroot=src&r1=1.21&r2=1.22
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/p-valprint.c.diff?cvsroot=src&r1=1.74&r2=1.75
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/printcmd.c.diff?cvsroot=src&r1=1.179&r2=1.180
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/scm-lang.h.diff?cvsroot=src&r1=1.20&r2=1.21
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/scm-valprint.c.diff?cvsroot=src&r1=1.31&r2=1.32
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/sh64-tdep.c.diff?cvsroot=src&r1=1.73&r2=1.74
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/valops.c.diff?cvsroot=src&r1=1.245&r2=1.246
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/valprint.c.diff?cvsroot=src&r1=1.94&r2=1.95
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/valprint.h.diff?cvsroot=src&r1=1.26&r2=1.27
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/value.c.diff?cvsroot=src&r1=1.103&r2=1.104
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/value.h.diff?cvsroot=src&r1=1.157&r2=1.158
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/mi/mi-main.c.diff?cvsroot=src&r1=1.177&r2=1.178
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/python/py-prettyprint.c.diff?cvsroot=src&r1=1.11&r2=1.12
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/python/python.h.diff?cvsroot=src&r1=1.9&r2=1.10
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/ChangeLog.diff?cvsroot=src&r1=1.2325&r2=1.2326
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.dwarf2/pieces.exp.diff?cvsroot=src&r1=1.5&r2=1.6


------- Additional Comments From tromey at redhat dot com  2010-06-11 15:37 -------
I checked in the fix.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|6.8                         |7.2


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

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


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

end of thread, other threads:[~2010-06-11 15:37 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-21 22:54 [Bug gdb/9977] New: DW_OP_piece used to specify underined part of location is ignored hubicka at gcc dot gnu dot org
2009-03-22  1:03 ` [Bug gdb/9977] " tromey at redhat dot com
2010-05-16 17:29 ` tromey at redhat dot com
2010-05-21 21:44 ` tromey at redhat dot com
2010-06-11 15:37 ` tromey at redhat dot com

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