diff --minimal -u --exclude=CVS --exclude=*.gmo cygnus.cygnus/src/include/aout/stab.def cygnus.current/src/include/aout/stab.def --- cygnus.cygnus/src/include/aout/stab.def Tue Mar 13 21:27:43 2001 +++ cygnus.current/src/include/aout/stab.def Wed Oct 30 16:40:01 2002 @@ -53,6 +53,9 @@ /* Solaris2: Read-only data symbols. */ __define_stab (N_ROSYM, 0x2c, "ROSYM") +/* MacOS X: The beginning of a relocatable function block - including stabs */ +__define_stab (N_BNSYM, 0x2e, "BNSYM") + /* Global symbol in Pascal. Supposedly the value is its line number; I'm skeptical. */ __define_stab (N_PC, 0x30, "PC") @@ -105,6 +108,11 @@ /* New in Solaris2. Function start/body/end line numbers. */ __define_stab(N_FLINE, 0x4C, "FLINE") + +/* Added for MacOS X, this tells the end of a relocatable function + debugging + info */ + +__define_stab(N_ENSYM, 0x4E, "ENSYM") /* THE FOLLOWING TWO STAB VALUES CONFLICT. Happily, one is for Modula-2 and one is for C++. Still,... */ Index: stabs.texinfo =================================================================== RCS file: /Volumes/Storage/Users/kdienes/source/cvs/cygnus/src/gdb/doc/stabs.texinfo,v retrieving revision 1.3 diff -u -r1.3 stabs.texinfo --- stabs.texinfo 2002/08/13 20:16:07 1.3 +++ stabs.texinfo 2002/11/18 22:37:47 @@ -404,6 +404,7 @@ * Procedures:: * Nested Procedures:: * Block Structure:: +* Relocatable Symbol Blocks:: Mac OS X Coalesced Symbols. * Alternate Entry Points:: Entering procedures except at the beginning. @end menu @@ -740,6 +741,29 @@ name of the symbol is @samp{.bb}, then it is the beginning of the block; if the name of the symbol is @samp{.be}; it is the end of the block. +@node Relocatable Symbol Blocks +@section Relocatable Symbol Blocks + +@findex N_BNSYM +@findex N_ENSYM +On Mac OS X, a @dfn{coalesced symbol} is a true definition of a symbol +that may appear one or more times in the compilation units generated +by the compiler. + +The static link editor allows multiple definitions of a coalesced +symbol without any warnings or errors. The static link editor outputs +only one instance of each coalesced symbol, using the first instance it +encounters in the object files being linked. The static link editor +always outputs an instance of a coalesced symbol if it appears in the +object files being linked, even if it also appears in the dynamic +libraries being referenced. The dynamic link editor then relocates +such that only one instance of each coalesced symbol is used +throughout the program. + +To allow the linker to properly manage the debug information for +coalesced symbols, the stabs entries for a given coalesced symbol must +be preceded by @code{N_BNSYM} and terminated with @code{N_ENSYM}. + @node Alternate Entry Points @section Alternate Entry Points @@ -3240,6 +3264,9 @@ @item 0x2c N_ROSYM Variable in @code{.rodata} section; see @ref{Statics}. +@item 0x2e N_BNSYM +Start of a relocatble symbolblock; see @ref{Relocatable Symbol Blocks}. + @item 0x30 N_PC Global symbol (for Pascal); see @ref{N_PC}. @@ -3281,6 +3308,9 @@ @item 0x4c N_FLINE Function start/body/end line numbers (Solaris2). + +@item 0x4e N_ENSYM +End of a relocatble symbol block; see @ref{Relocatable Symbol Blocks}. @item 0x50 N_EHDECL GNU C++ exception variable; see @ref{N_EHDECL}.