This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug debug/49459] attribute((mode(byte))) in a typedef produces wrong debug information
- From: "pkoning at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 19 Oct 2011 17:00:09 +0000
- Subject: [Bug debug/49459] attribute((mode(byte))) in a typedef produces wrong debug information
- Auto-submitted: auto-generated
- References: <bug-49459-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49459
Paul Koning <pkoning at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to fail| |4.1.2
--- Comment #2 from Paul Koning <pkoning at gcc dot gnu.org> 2011-10-19 17:00:09 UTC ---
I see the same issue as far back as 4.1.2.
As I mentioned, it works in 3.3.3. I compared readelf outputs. The difference
is that in 3.3.3 the typedef points to a DW_TAG_base_type entry, which supplies
the size of 1 -- but also makes the type look like "unsigned char" instead of
enum. That at least doesn't break the debugger but it isn't ideal either.
<1><6d>: Abbrev Number: 6 (DW_TAG_variable)
<6e> DW_AT_name : foo
<72> DW_AT_decl_file : 1
<73> DW_AT_decl_line : 4
<74> DW_AT_type : <0x3a>
<78> DW_AT_external : 1
<79> DW_AT_location : 5 byte block: 3 1 0 0 0 (DW_OP_addr: 1)
<1><3a>: Abbrev Number: 4 (DW_TAG_typedef)
<3b> DW_AT_name : e1
<3e> DW_AT_decl_file : 1
<3f> DW_AT_decl_line : 1
<40> DW_AT_type : <0x44>
<1><44>: Abbrev Number: 5 (DW_TAG_base_type)
<45> DW_AT_name : (indirect string, offset: 0x0): unsigned char
<49> DW_AT_byte_size : 1
<4a> DW_AT_encoding : 8 (unsigned char)