public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* Mixing 32-bit and 64-bit DWARF2/3 sections
@ 2004-11-07 14:28 Mark Kettenis
  2004-11-07 15:31 ` Daniel Jacobowitz
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Mark Kettenis @ 2004-11-07 14:28 UTC (permalink / raw)
  To: gcc, binutils; +Cc: echristo, seufer, gdb

Currently GDB barfs when you use it on an executable that contains
compilation units that mix 32-bit and 64-bit DWARF sections.  Looking
at the (latest?) DWARF3 draft it doesn't seem to be unreasonable that
it does so:

  "The 32-bit and 64-bit DWARF format conventions must not be
   intermixed within a single compilation unit."

The way things are structured now, it is easy to end up with a
configuration where this happens since some DWARF sections are
generated by GCC and others by gas, i.e. if GCC is configured to
generate 32-bit DWARF, and gas will generate 64-bit dwarf.  This is
currently the case for the (not yet contributed) GCC configuration
that's currently used by OpenBSD/mips64.  Now this can be easily fixed
by changing either the GCC config or gas, but the DWARF3 draft also
says:

  "It is expected that DWARF producing compilers will not use the
   64-bit format by default. In most cases, the division of even very
   large applications into a number of executable and shared objects
   will suffice to assure that the DWARF sections within each
   individual linked object are less than 4 GBytes in size. However,
   for those cases where needed, the 64-format allows the unusual case
   to be handled as well. Even in this case, it is expected that only
   application supplied objects will need be compiled using the 64-bit
   format; separate 32-bit format versions of system supplied shared
   executable libraries can still be used."

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.

Fixing this would be a tricky though, since doing it requires some
coordination between GCC and binutils.  We could add a switch to gas
to tell it to generate 64-bit DWARF format.  But even then GCC will
probably need to support old gas versions that generate 64-bit format
by default, adding more config goo to GCC.  So I think the existing
MIPS targets should probably keep doing what they do now.

However, I could make OpenBSD/mips64 do the right thing, making both
GCC and gas generate 32-bit DWARF by default.  What do the MIPS people
think about that?

Cheers,

Mark

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.

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2004-11-09 20:11 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-11-07 14:28 Mixing 32-bit and 64-bit DWARF2/3 sections Mark Kettenis
2004-11-07 15:31 ` Daniel Jacobowitz
2004-11-07 16:29   ` Mark Kettenis
2004-11-07 17:16     ` Daniel Jacobowitz
2004-11-08 20:54 ` James E Wilson
2004-11-08 22:05   ` Mark Kettenis
2004-11-08 23:03     ` James E Wilson
2004-11-08 23:37       ` Thiemo Seufer
2004-11-08 23:50         ` Daniel Berlin
2004-11-08 23:57         ` James E Wilson
2004-11-08 23:46   ` Daniel Jacobowitz
2004-11-09  0:15     ` James E Wilson
2004-11-09 20:11 ` Dean Luick

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).