This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

gdb and binutils branch master updated. dc53a7adb516adbf2f646a078a1140b1044a39f5


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gdb and binutils".

The branch, master has been updated
       via  dc53a7adb516adbf2f646a078a1140b1044a39f5 (commit)
      from  12ab52e9772a9170018feb44de3ef217e051cc60 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=dc53a7adb516adbf2f646a078a1140b1044a39f5

commit dc53a7adb516adbf2f646a078a1140b1044a39f5
Author: Joel Brobecker <brobecker@adacore.com>
Date:   Wed Jan 29 17:39:56 2014 +0400

    DWARF: Add array DW_AT_bit_stride and DW_AT_byte_stride support
    
    Consider the following declarations in Ada...
    
       type Item is range -32 .. 31;
       for Item'Size use 6;
    
       type Table is array (Natural range 0 .. 4) of Item;
       pragma Pack (Table);
    
    ... which declare a packed array whose elements are 6 bits long.
    The debugger currently does not notice that the array is packed,
    and thus prints values of this type incorrectly. This can be seen
    in the "ptype" output:
    
        (gdb) ptype table
        type = array (0 .. 4) of foo.item
    
    Normally, the debugger should print:
    
        (gdb) ptype table
        type = array (0 .. 4) of foo.item <packed: 6-bit elements>
    
    The debugging information for this array looks like this:
    
            .uleb128 0xf    # (DIE (0x15c) DW_TAG_array_type)
            .long   .LASF9  # DW_AT_name: "pck__table"
            .byte   0x6     # DW_AT_bit_stride
            .long   0x1a9   # DW_AT_type
            .uleb128 0x10   # (DIE (0x16a) DW_TAG_subrange_type)
            .long   0x3b    # DW_AT_type
            .byte   0       # DW_AT_lower_bound
            .byte   0x4     # DW_AT_upper_bound
            .byte   0       # end of children of DIE 0x15c
    
    The interesting part is the DW_AT_bit_stride attribute, which tells
    the size of the array elements is 6 bits, rather than the normal
    element type's size.
    
    This patch adds support for this attribute by first creating
    gdbtypes.c::create_array_type_with_stride, which is an enhanced
    version of create_array_type taking an extra parameter as the stride.
    The old create_array_type can then be re-implemented very simply
    by calling the new create_array_type_with_stride.
    
    We can then use this new function from dwarf2read, to create
    arrays with or without stride.
    
    gdb/ChangeLog:
    
            * gdbtypes.h (create_array_type_with_stride): Add declaration.
            * gdbtypes.c (create_array_type_with_stride): New function,
            renaming create_array_type, but with an added parameter
            called "bit_stride".
            (create_array_type): Re-implement using
            create_array_type_with_stride.
            * dwarf2read.c (read_array_type): Add support for DW_AT_byte_stride
            and DW_AT_bit_stride attributes.
    
    gdb/testsuite/ChangeLog:
    
            * gdb.dwarf2/arr-stride.c: New file.
            * gdb.dwarf2/arr-stride.exp: New file.
    
    The test, relying purely on generating an assembly file, only
    verifies the type description of our array. But I was also
    able to verify manually that the debugger print values of these
    types correctly as well (which was not the case prior to this
    patch).

-----------------------------------------------------------------------

Summary of changes:
 gdb/ChangeLog                           |   11 +++
 gdb/dwarf2read.c                        |   18 ++++-
 gdb/gdbtypes.c                          |   27 +++++++-
 gdb/gdbtypes.h                          |    4 +
 gdb/testsuite/ChangeLog                 |    5 ++
 gdb/testsuite/gdb.dwarf2/arr-stride.c   |   20 ++++++
 gdb/testsuite/gdb.dwarf2/arr-stride.exp |  108 +++++++++++++++++++++++++++++++
 7 files changed, 187 insertions(+), 6 deletions(-)
 create mode 100644 gdb/testsuite/gdb.dwarf2/arr-stride.c
 create mode 100644 gdb/testsuite/gdb.dwarf2/arr-stride.exp


hooks/post-receive
-- 
gdb and binutils


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]