Subject: Re: Exploring the limits of free software: Cygnus, and GPL
From: Ian Lance Taylor <>
Date: 26 May 1999 10:43:16 -0400

   Date: Wed, 26 May 1999 02:14:08 -0700
   From: John Gilmore <>

   > Sometimes I want to use some feature invented by the free software
   > community, such as extended inline assembler or Linux packet driver
   > sockets or parsing debugging information generated by gcc.  These are
   > things which are best used with documentation along the lines of a
   > standard, such that I can write to a clearly and completely specified
   > interface without needing to examine the implementation which I know
   > will change in the future.
   > These are the sorts of standards which I do not see the free software
   > community writing.

   While I managed GDB, Julia Menapace wrote "The ``stabs'' debug
   format", a new manual for GNU's most prevalent debugging info format.
   It is distributed with GDB (e.g. gdb-4.18/gdb/doc/stabs.texinfo).  She
   and I largely generated the manual by reverse-engineering, since GCC's
   Stabs implementation itself had been reverse-engineered from the PCC
   compiler's debug symbol table information originally used by
   Berkeley's PDX and DBX debuggers.  Indeed, in many cases we didn't
   know why particular formats or values were there -- but at least we
   documented 'em as best we could, including some bug reports.

   We didn't write a standard, just a manual.

Yes, I've updated that manual quite a bit over the years.

I know of an emulator company who would like their emulator to read
gcc output directly.  Since their emulator presents a debugger-type
interface, that means they need to parse stabs debugging information.
They've tried to use that manual to do this.  Unfortunately, they have
been caught out several times by changes in the debugging information
generated by different versions of gcc.  I've tried to help them
understand why these changes are occurring and how they can adapt.

This is one of the cases that made me aware that gcc debugging
information is specifically not standardized, yet there are good
reasons that it should be.