Debugging information here is of three kinds: ABI/object, duel, and DWARF.

ABI/Object information is best available from 2 sources. The Generic ABI and MIPS Processor Supplement from Prentice Hall

The generic ABI and MIPS processor supplement and other useful ABI documents are available on http://www.sco.com/developer/devspecs/ (thanks to Jay Carlson for pointing this out to me).

For more recent ABI info, such as N32, go to the Silicon Graphics publications library, http://techpubs.sgi.com/ follow it to developer documents for IRIX6.5, for example.


--- The original dwarf v2.0.0 spec has no overview. I have prepared a sample overview appendix in source (pic and mm (troff)) form (dwarf2relate.pic) and postscript form (dwarf2relate.ps) form.
---

duel is a very elegant (IMO) data-display language for debuggers. It is intended to be made part of a debugger. duel is built-in to Silicon Graphics' dbx. Designed by Michael Golan (when he was at Princeton University). The following are the author's original papers.


---

DWARF is a debugging information format. Created by compilers and used by debuggers. It was defined by a committee with representatives from a wide range of companies. It is the format chosen by Silicon Graphics for its -n32 and -64 ABIs.

Documents describing DWARF, libdwarf, SGI's extensions to DWARF left-mouse to view mips_extensions.ps 118358 bytes (postscript file), and an implementation of libdwarf and a dwarf dumping utility (dwarfdump) are available at no charge.

shift left-mouse to download libdwarf2001Aug29.tar.gz 721452 bytes (gzipped tar file). Aug 23 version had mips_extensions.mm trashed (by postscript content) and mips_extensions.ps not updated. This restores the files. The convention as to how MIPS/IRIX restore the stack pointer is pointed out in mips_extensions.* now. The defective Aug 23 version has been removed. Thanks to Al Dunsmuir for pointing out the botch in mips_extensions.* .

shift left-mouse to download libdwarf2001Jun07.tar.gz 716508 bytes (gzipped tar file). Fixed a bug in leb reader in libdwarf: did not create correct 64bit integers on machine with 32bit 'int'.

shift left-mouse to download libdwarf2001May23.tar.gz 716027 bytes (gzipped tar file). Some small bug fixes (see dwarfdump/ChangeLog and libdwarf/ChangeLog for fix details). The May21 version is removed, and this substituted: it is the same as May21 except dwarf.h and libdwarf.h are now marked LGPL instead of GPL.

shift left-mouse to download libdwarf2000Jul25.tar.gz 713KBytes (gzipped tar file). Correction to Makefile.in configure.in of libelf/libelf.h reference by Fred Fish (fnf@ninemoons.com)

shift left-mouse to download libdwarf2000Jun12.tar.gz 714KBytes (gzipped tar file). Correction to Makefile for better portability from Jason Molenda(jason@cygnus.com) Some corrections to producer and dwarfdump -v -v -f output.

shift left-mouse to download libdwarf1999Dec14.tar.gz 712KBytes (gzipped tar file). Now implements the new dwarf2 64-bit-offset-extension, compatibly allowing producers to produce dwarf2 with 64bit debug-section offsets (dwarf2 always allowed apps with 64bit pointers, but did not support debug information section offsets or lengths beyound 32 bits). (This extension accepted into dwarf2 on Nov 23, 1999)

DWARF information may also be available in /pub/dwarf on sgigate.sgi.com for ftp (sgigate does not have the latest version.)

Version 1 of DWARF was designed and implemented by ATT/USL as part of System V Release 4. ATT/USL gave permission for the DWARF Committee to use the DWARF version 1 as a base (though there was no true written specification, the committee prepared one). The DWARF committee was known as the plsig (programming languages special interest group) operating under the auspices of Unix International (UI now defunct, taken over by XOPEN, who runs the email list, plsig@opengroup.org. to join this nearly inactive list, send email to plsig-request@opengroup.org). Many of the concepts from version were carried over to Version 2, though the representation details are completely different.

As of late November, 1999, a new dwarf2 committee was formed. It meets every 2 weeks (so far all meetings at SGI in Mountain View). HP, Intel, Cygnus, Diab_SDS, Eager Consulting are among the participants (as is SGI). All interested parties are welcome to participate. See http://www.eagercon.com for more information on the committee.

New features which have been accepted into draft-dwarf (not yet released, so as of March 2001 should not be depended upon to remain as written) are, in part:

Many new concepts were introduced in Version 2 (the Version 2.0.0 specification), some of which were contributed by participating organizations and some of which were invented by committee members. The newly formed committee intends to deal with C++ namespaces and other issues which are not presently defined by DWARF2.

The following is a list of organizations actively using DWARF version 2.

I would appreciate getting corrections to this list (send email to davea@sgi.com).

gdb as of August 2000 does not support IRIX -64 dwarf2 as SGI uses unadorned 64bit offsets in its -64 dwarf. To get a gdb which supports SGI 64bit dwarf, Shift-LEFTMOUSE to download this text file which contains a 600 line patch to gdb 4.17 which is said not to be too difficult to apply to gdb 5.0. Apply the patch to your gdb source. Once the patch is applied the gdb you build won't work on -n32 IRIX applications, so you must build two distinct gdb executables, once with and once without the patch, if you wish to debug n32 and -64 IRIX applications. And you must use the right copy of gdb on each (gdb does not figure this out on its own at present). Adding multi-arch support so this patch gets seamlessly into gdb (so you can debug n32 or -64 with one gdb executable) should not be hard to do but I've not yet found time to do it (sorry).