* stab.def: Use __define_stab_duplicate rather than __define_stab
authorIan Lance Taylor <ian@airs.com>
Mon, 11 Mar 1996 17:17:00 +0000 (17:17 +0000)
committerIan Lance Taylor <ian@airs.com>
Mon, 11 Mar 1996 17:17:00 +0000 (17:17 +0000)
for duplicate entries N_BROWS and N_MOD2.
* stab_gnu.h (__define_stab_duplicate): Define before including
stab.def.

include/aout/stab.def

index 217011b5a9dac8127c923dab852422246d9812b4..86eefe9d39762b1d0d8253e7494294270ceeba2e 100644 (file)
@@ -13,8 +13,19 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 \f
+/* New stab from Solaris 2.  This uses an n_type of 0, which in a.out files
+   overlaps the N_UNDF used for ordinary symbols.  In ELF files, the
+   debug information is in a different file section, so there is no conflict.
+   This symbol's n_value gives the size of the string section associated
+   with this file.  The symbol's n_strx (relative to the just-updated
+   string section start address) gives the name of the source file,
+   e.g. "foo.c", without any path information.  The symbol's n_desc gives
+   the count of upcoming symbols associated with this file (not including
+   this one).  */
+/* __define_stab (N_UNDF, 0x00, "UNDF")  */
+
 /* Global variable.  Only the name is significant.
    To find the address, look in the corresponding external symbol.  */
 __define_stab (N_GSYM, 0x20, "GSYM")
@@ -35,10 +46,12 @@ __define_stab (N_STSYM, 0x26, "STSYM")
 /* BSS-segment variable with internal linkage.  Value is its address.  */
 __define_stab (N_LCSYM, 0x28, "LCSYM")
 
-/* Name of main routine.  Only the name is significant.
-   This is not used in C.  */
+/* Name of main routine.  Only the name is significant.  */
 __define_stab (N_MAIN, 0x2a, "MAIN")
 
+/* Solaris2:  Read-only data symbols.  */
+__define_stab (N_ROSYM, 0x2c, "ROSYM")
+
 /* Global symbol in Pascal.
    Supposedly the value is its line number; I'm skeptical.  */
 __define_stab (N_PC, 0x30, "PC")
@@ -49,13 +62,16 @@ __define_stab (N_NSYMS, 0x32, "NSYMS")
 /* "No DST map for sym: name, ,0,type,ignored"  according to Ultrix V4.0. */
 __define_stab (N_NOMAP, 0x34, "NOMAP")
 
-/* New stab from Solaris.  I don't know what it means, but it
-   don't seem to contain useful information.  */
+/* New stab from Solaris 2.  Like N_SO, but for the object file.  Two in
+   a row provide the build directory and the relative path of the .o from it.
+   Solaris2 uses this to avoid putting the stabs info into the linked
+   executable; this stab goes into the ".stab.index" section, and the debugger
+   reads the real stabs directly from the .o files instead.  */
 __define_stab (N_OBJ, 0x38, "OBJ")
 
-/* New stab from Solaris.  I don't know what it means, but it
-   don't seem to contain useful information.  Possibly related to the
-   optimization flags used in this module.  */
+/* New stab from Solaris 2.  Options for the debugger, related to the
+   source language for this module.  E.g. whether to use ANSI
+   integral promotions or traditional integral promotions.  */
 __define_stab (N_OPT, 0x3c, "OPT")
 
 /* Register variable.  Value is number of register.  */
@@ -65,7 +81,8 @@ __define_stab (N_RSYM, 0x40, "RSYM")
 __define_stab (N_M2C, 0x42, "M2C")
 
 /* Line number in text segment.  Desc is the line number;
-   value is corresponding address.  */
+   value is corresponding address.  On Solaris2, the line number is
+   relative to the start of the current function.  */
 __define_stab (N_SLINE, 0x44, "SLINE")
 
 /* Similar, for data segment.  */
@@ -77,7 +94,7 @@ __define_stab (N_BSLINE, 0x48, "BSLINE")
 /* Sun's source-code browser stabs.  ?? Don't know what the fields are.
    Supposedly the field is "path to associated .cb file".  THIS VALUE
    OVERLAPS WITH N_BSLINE!  */
-__define_stab (N_BROWS, 0x48, "BROWS")
+__define_stab_duplicate (N_BROWS, 0x48, "BROWS")
 
 /* GNU Modula-2 definition module dependency.  Value is the modification time
    of the definition file.  Other is non-zero if it is imported with the
@@ -85,12 +102,15 @@ __define_stab (N_BROWS, 0x48, "BROWS")
    are enough empty fields? */
 __define_stab(N_DEFD, 0x4a, "DEFD")
 
+/* New in Solaris2.  Function start/body/end line numbers.  */
+__define_stab(N_FLINE, 0x4C, "FLINE")
+
 /* THE FOLLOWING TWO STAB VALUES CONFLICT.  Happily, one is for Modula-2
    and one is for C++.   Still,... */
 /* GNU C++ exception variable.  Name is variable name.  */
 __define_stab (N_EHDECL, 0x50, "EHDECL")
 /* Modula2 info "for imc":  name,,0,0,0  according to Ultrix V4.0.  */
-__define_stab (N_MOD2, 0x50, "MOD2")
+__define_stab_duplicate (N_MOD2, 0x50, "MOD2")
 
 /* GNU C++ `catch' clause.  Value is its address.  Desc is nonzero if
    this entry is immediately followed by a CAUGHT stab saying what exception
@@ -102,8 +122,17 @@ __define_stab (N_CATCH, 0x54, "CATCH")
 /* Structure or union element.  Value is offset in the structure.  */
 __define_stab (N_SSYM, 0x60, "SSYM")
 
+/* Solaris2:  Last stab emitted for module.  */
+__define_stab (N_ENDM, 0x62, "ENDM")
+
 /* Name of main source file.
-   Value is starting text address of the compilation.  */
+   Value is starting text address of the compilation.
+   If multiple N_SO's appear, the first to contain a trailing / is the
+   compilation directory.  The first to not contain a trailing / is the
+   source file name, relative to the compilation directory.  Others (perhaps
+   resulting from cfront) are ignored.
+   On Solaris2, value is undefined, but desc is a source-language code.  */
+
 __define_stab (N_SO, 0x64, "SO")
 
 /* Automatic variable in the stack.  Value is offset from frame pointer.
@@ -135,7 +164,8 @@ __define_stab (N_ENTRY, 0xa4, "ENTRY")
 /* Beginning of lexical block.
    The desc is the nesting level in lexical blocks.
    The value is the address of the start of the text for the block.
-   The variables declared inside the block *precede* the N_LBRAC symbol.  */
+   The variables declared inside the block *precede* the N_LBRAC symbol.
+   On Solaris2, the value is relative to the start of the current function.  */
 __define_stab (N_LBRAC, 0xc0, "LBRAC")
 
 /* Place holder for deleted include file.  Replaces a N_BINCL and everything
@@ -148,7 +178,8 @@ __define_stab (N_EXCL, 0xc2, "EXCL")
 __define_stab (N_SCOPE, 0xc4, "SCOPE")
 
 /* End of a lexical block.  Desc matches the N_LBRAC's desc.
-   The value is the address of the end of the text for the block.  */
+   The value is the address of the end of the text for the block.
+   On Solaris2, the value is relative to the start of the current function.  */
 __define_stab (N_RBRAC, 0xe0, "RBRAC")
 
 /* Begin named common block.  Only the name is significant.  */
@@ -158,10 +189,13 @@ __define_stab (N_BCOMM, 0xe2, "BCOMM")
    (and it should match the N_BCOMM).  */
 __define_stab (N_ECOMM, 0xe4, "ECOMM")
 
-/* End common (local name): value is address.
-   I'm not sure how this is used.  */
+/* Member of a common block; value is offset within the common block.
+   This should occur within a BCOMM/ECOMM pair.  */
 __define_stab (N_ECOML, 0xe8, "ECOML")
 
+/* Solaris2: Pascal "with" statement: type,,0,0,offset */
+__define_stab (N_WITH, 0xea, "WITH")
+
 /* These STAB's are used on Gould systems for Non-Base register symbols
    or something like that.  FIXME.  I have assigned the values at random
    since I don't have a Gould here.  Fixups from Gould folk welcome... */
@@ -185,11 +219,11 @@ __define_stab (N_LENG, 0xfe, "LENG")
        | 00 UNDEF  | 02 ABS    | 04 TEXT   | 06 DATA   |
        | 01  |EXT  | 03  |EXT  | 05  |EXT  | 07  |EXT  |
 
-       | 08 BSS    | 0A INDR   | 0C FN_SEQ | 0E        |
-       | 09  |EXT  | 0B        | 0D        | 0F        |
+       | 08 BSS    | 0A INDR   | 0C FN_SEQ | 0E WEAKA  |
+       | 09  |EXT  | 0B        | 0D WEAKU  | 0F WEAKT  |
 
-       | 10        | 12 COMM   | 14 SETA   | 16 SETT   |
-       | 11        | 13        | 15        | 17        |
+       | 10 WEAKD  | 12 COMM   | 14 SETA   | 16 SETT   |
+       | 11 WEAKB  | 13        | 15        | 17        |
 
        | 18 SETD   | 1A SETB   | 1C SETV   | 1E WARNING|
        | 19        | 1B        | 1D        | 1F FN     |
@@ -197,14 +231,14 @@ __define_stab (N_LENG, 0xfe, "LENG")
        |_______________________________________________|
        | Debug entries with bit 01 set are unused.     |
        | 20 GSYM   | 22 FNAME  | 24 FUN    | 26 STSYM  |
-       | 28 LCSYM  | 2A MAIN   | 2C        | 2E        |
+       | 28 LCSYM  | 2A MAIN   | 2C ROSYM  | 2E        |
        | 30 PC     | 32 NSYMS  | 34 NOMAP  | 36        |
        | 38 OBJ    | 3A        | 3C OPT    | 3E        |
        | 40 RSYM   | 42 M2C    | 44 SLINE  | 46 DSLINE |
-       | 48 BSLINE*| 4A DEFD   | 4C        | 4E        |
+       | 48 BSLINE*| 4A DEFD   | 4C FLINE  | 4E        |
        | 50 EHDECL*| 52        | 54 CATCH  | 56        |
        | 58        | 5A        | 5C        | 5E        |
-       | 60 SSYM   | 62        | 64 SO     | 66        |
+       | 60 SSYM   | 62 ENDM   | 64 SO     | 66        |
        | 68        | 6A        | 6C        | 6E        |
        | 70        | 72        | 74        | 76        |
        | 78        | 7A        | 7C        | 7E        |
@@ -221,7 +255,7 @@ __define_stab (N_LENG, 0xfe, "LENG")
        | D0        | D2        | D4        | D6        |
        | D8        | DA        | DC        | DE        |
        | E0 RBRAC  | E2 BCOMM  | E4 ECOMM  | E6        |
-       | E8 ECOML  | EA        | EC        | EE        |
+       | E8 ECOML  | EA WITH   | EC        | EE        |
        | F0        | F2        | F4        | F6        |
        | F8        | FA        | FC        | FE LENG   |
        +-----------------------------------------------+
This page took 0.028868 seconds and 4 git commands to generate.