https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70485

            Bug ID: 70485
           Summary: Duplicate typedef results in missing debug info
           Product: gcc
           Version: 4.8.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: freezer.spam at gmail dot com
  Target Milestone: ---

Created attachment 38149
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38149&action=edit
gcc version output

For the past few years, GCC has allowed duplicate typedefs as long as they're
compatible with each other. The issue I'm facing is with DWARF debugging
extensions: it seems that GCC marks duplicate typedefs as unused, and does not
include them in DWARF.
Example:

typedef struct yyx yyx_handle;
typedef struct yyx yyx_handle;

yyx_handle *get_yyx(void *p)
{ return (yyx_handle *)p; }

Results:

$ gcc -o f1.o -c f1.c -g
$ readelf --debug-dump f1.o | grep yyx_handle | wc -l
0

If I add -fno-eliminate-unused-debug-types the typedef is included, but then
all my unused types appear as well, blowing up the object file size.

The obvious workaround is to remove the duplicate definition, but that's not
always practical.

Reply via email to