This is the mail archive of the gdb-patches@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] |
Hello, We have noticed a problem in the debugger when trying to print a record containing a packed array. What happened is that the compiler wrapped our variable into a PAD type. These wrapper are often used to handle alignment and packing. exp_dbug.ads says, among other things: -- When the debugger sees an object of a type whose name has a -- suffix of ___PAD or ___JM, the type will be a record containing -- a single field, and the name of that field will be all upper case. -- In this case, it should look inside to get the value of the inner -- field, and neither the outer structure name, nor the field name -- should appear when the value is printed. The problem appeared because the field inside the PAD record was defined as a bit-field in the debugging info: .uleb128 0x24 # (DIE (0xf40) DW_TAG_member) .ascii "F\0" # DW_AT_name .byte 0x9 # DW_AT_decl_file .byte 0x15 # DW_AT_decl_line .long 0xf50 # DW_AT_type .byte 0x4 # DW_AT_byte_size .byte 0x18 # DW_AT_bit_size .byte 0x8 # DW_AT_bit_offset .byte 0x2 # DW_AT_data_member_location .byte 0x23 # DW_OP_plus_uconst .uleb128 0x0 I just learned that Ada makes frequent uses of non-scalar bitfields. And indeed, we have a function in ada-lang.c that we use to get record fields which also happens to handle the case of bit-field components as well (the function handles other cases such as tagged types, variant records, etc). So I fixed the problem by using that function to get the "F" field inside our PAD type. 2008-05-02 Joel Brobecker <brobecker@adacore.com> * ada-lang.c (unwrap_value): Handle the case where the "F" field inside a PAD type is a bitfield. Tested on x86-linux, no regression. Checked in. -- Joel
Attachment:
ada-lang.c.diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |