This is the mail archive of the mailing list for the binutils 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]

Re: Mixing 32-bit and 64-bit DWARF2/3 sections

Mark Kettenis wrote:
This argues that what's currently done in gas and GCC for most 64-bit
MIPS targets is wrong, since these use the 64-bit DWARF format
unconditionally for the n64 ABI.

SGI Irix6 created the N64 ABI, and they decreed that one must use a (non-standard) 64-bit DWARF format with it. We are just following the ABI here. If we change it, then we lose compatibility with Irix6, and the published ABI.

P.S. It seems that MIPS is the only 64-bit target for which this is a
     problem, since all other 64-bit targets (AMD64, UltraSPARC) still
     use the 32-bit DWARF format.

This is because SGI decided that DWARF2 was broken, and tried to fix it by adding 64-bit extensions. These extensions are only needed if you have more than 4GB of DWARF debug info, and hence is unlikely, but SGI claims that they did hit this limit. No one else has apparently ever hit the limit.

Unfortunately, the way that SGI extended DWARF2 caused problems, as it resulted in ambiguous DWARF info, so the DWARF3 committee defined a different way that is self descriptive. But since this happened after Irix6 had already been released, and SGI could not break backwards compatibility with Irix6, N64 still uses the non-standard 64-bit DWARF format that SGI invented. And gcc uses this non-standard 64-bit DWARF format for all mips64 targets, for consistency, and to conform with the ABI.
Jim Wilson, GNU Tools Support,

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