118334Speter/* Table of DBX symbol codes for the GNU system.
2169689Skan   Copyright (C) 1988, 1997, 1998, 2004 Free Software Foundation, Inc.
350397Sobrien   This file is part of the GNU C Library.
418334Speter
550397Sobrien   The GNU C Library is free software; you can redistribute it and/or
650397Sobrien   modify it under the terms of the GNU Library General Public License as
750397Sobrien   published by the Free Software Foundation; either version 2 of the
850397Sobrien   License, or (at your option) any later version.
918334Speter
1050397Sobrien   The GNU C Library is distributed in the hope that it will be useful,
1118334Speter   but WITHOUT ANY WARRANTY; without even the implied warranty of
1250397Sobrien   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1350397Sobrien   Library General Public License for more details.
1418334Speter
1550397Sobrien   You should have received a copy of the GNU Library General Public
1650397Sobrien   License along with the GNU C Library; see the file COPYING.LIB.  If not,
17169689Skan   write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18169689Skan   Boston, MA 02110-1301, USA.  */
1918334Speter
2018334Speter/* This contains contribution from Cygnus Support.  */
2118334Speter
2218334Speter/* Global variable.  Only the name is significant.
2318334Speter   To find the address, look in the corresponding external symbol.  */
2418334Speter__define_stab (N_GSYM, 0x20, "GSYM")
2518334Speter
2618334Speter/* Function name for BSD Fortran.  Only the name is significant.
2718334Speter   To find the address, look in the corresponding external symbol.  */
2818334Speter__define_stab (N_FNAME, 0x22, "FNAME")
2918334Speter
3018334Speter/* Function name or text-segment variable for C.  Value is its address.
3118334Speter   Desc is supposedly starting line number, but GCC doesn't set it
3218334Speter   and DBX seems not to miss it.  */
3318334Speter__define_stab (N_FUN, 0x24, "FUN")
3418334Speter
3518334Speter/* Data-segment variable with internal linkage.  Value is its address.
3618334Speter   "Static Sym".  */
3718334Speter__define_stab (N_STSYM, 0x26, "STSYM")
3818334Speter
3918334Speter/* BSS-segment variable with internal linkage.  Value is its address.  */
4018334Speter__define_stab (N_LCSYM, 0x28, "LCSYM")
4118334Speter
42169689Skan/* Begin function marker.  */
43169689Skan__define_stab (N_BNSYM, 0x2e, "BNSYM")
44169689Skan
45169689Skan/* End function marker.  */
46169689Skan__define_stab (N_ENSYM, 0x4e, "ENSYM")
47169689Skan
4818334Speter/* Name of main routine.  Only the name is significant.
4918334Speter   This is not used in C.  */
5018334Speter__define_stab (N_MAIN, 0x2a, "MAIN")
5118334Speter
5218334Speter/* Global symbol in Pascal.
5318334Speter   Supposedly the value is its line number; I'm skeptical.  */
5418334Speter__define_stab (N_PC, 0x30, "PC")
5518334Speter
56117395Skan/* Number of symbols:  0, files,,funcs,lines according to Ultrix V4.0.  */
5718334Speter__define_stab (N_NSYMS, 0x32, "NSYMS")
5818334Speter
59117395Skan/* "No DST map for sym: name, ,0,type,ignored"  according to Ultrix V4.0.  */
6018334Speter__define_stab (N_NOMAP, 0x34, "NOMAP")
6118334Speter
6218334Speter/* New stab from Solaris.  I don't know what it means, but it
6318334Speter   don't seem to contain useful information.  */
6418334Speter__define_stab (N_OBJ, 0x38, "OBJ")
6518334Speter
6618334Speter/* New stab from Solaris.  I don't know what it means, but it
6718334Speter   don't seem to contain useful information.  Possibly related to the
6818334Speter   optimization flags used in this module.  */
6918334Speter__define_stab (N_OPT, 0x3c, "OPT")
7018334Speter
7118334Speter/* Register variable.  Value is number of register.  */
7218334Speter__define_stab (N_RSYM, 0x40, "RSYM")
7318334Speter
7418334Speter/* Modula-2 compilation unit.  Can someone say what info it contains?  */
7518334Speter__define_stab (N_M2C, 0x42, "M2C")
7618334Speter
7718334Speter/* Line number in text segment.  Desc is the line number;
7818334Speter   value is corresponding address.  */
7918334Speter__define_stab (N_SLINE, 0x44, "SLINE")
8018334Speter
8118334Speter/* Similar, for data segment.  */
8218334Speter__define_stab (N_DSLINE, 0x46, "DSLINE")
8318334Speter
8418334Speter/* Similar, for bss segment.  */
8518334Speter__define_stab (N_BSLINE, 0x48, "BSLINE")
8618334Speter
8718334Speter/* Sun's source-code browser stabs.  ?? Don't know what the fields are.
8818334Speter   Supposedly the field is "path to associated .cb file".  THIS VALUE
8918334Speter   OVERLAPS WITH N_BSLINE!  */
9018334Speter__define_stab (N_BROWS, 0x48, "BROWS")
9118334Speter
9218334Speter/* GNU Modula-2 definition module dependency.  Value is the modification time
93117395Skan   of the definition file.  Other is nonzero if it is imported with the
9418334Speter   GNU M2 keyword %INITIALIZE.  Perhaps N_M2C can be used if there
9518334Speter   are enough empty fields? */
9618334Speter__define_stab(N_DEFD, 0x4a, "DEFD")
9718334Speter
9818334Speter/* THE FOLLOWING TWO STAB VALUES CONFLICT.  Happily, one is for Modula-2
99117395Skan   and one is for C++.   Still,...  */
10018334Speter/* GNU C++ exception variable.  Name is variable name.  */
10118334Speter__define_stab (N_EHDECL, 0x50, "EHDECL")
10218334Speter/* Modula2 info "for imc":  name,,0,0,0  according to Ultrix V4.0.  */
10318334Speter__define_stab (N_MOD2, 0x50, "MOD2")
10418334Speter
10518334Speter/* GNU C++ `catch' clause.  Value is its address.  Desc is nonzero if
10618334Speter   this entry is immediately followed by a CAUGHT stab saying what exception
10718334Speter   was caught.  Multiple CAUGHT stabs means that multiple exceptions
10818334Speter   can be caught here.  If Desc is 0, it means all exceptions are caught
10918334Speter   here.  */
11018334Speter__define_stab (N_CATCH, 0x54, "CATCH")
11118334Speter
11218334Speter/* Structure or union element.  Value is offset in the structure.  */
11318334Speter__define_stab (N_SSYM, 0x60, "SSYM")
11418334Speter
11518334Speter/* Name of main source file.
11618334Speter   Value is starting text address of the compilation.  */
11718334Speter__define_stab (N_SO, 0x64, "SO")
11818334Speter
11918334Speter/* Automatic variable in the stack.  Value is offset from frame pointer.
12018334Speter   Also used for type descriptions.  */
12118334Speter__define_stab (N_LSYM, 0x80, "LSYM")
12218334Speter
12318334Speter/* Beginning of an include file.  Only Sun uses this.
12418334Speter   In an object file, only the name is significant.
12518334Speter   The Sun linker puts data into some of the other fields.  */
12618334Speter__define_stab (N_BINCL, 0x82, "BINCL")
12718334Speter
12818334Speter/* Name of sub-source file (#include file).
12918334Speter   Value is starting text address of the compilation.  */
13018334Speter__define_stab (N_SOL, 0x84, "SOL")
13118334Speter
13218334Speter/* Parameter variable.  Value is offset from argument pointer.
13318334Speter   (On most machines the argument pointer is the same as the frame pointer.  */
13418334Speter__define_stab (N_PSYM, 0xa0, "PSYM")
13518334Speter
13618334Speter/* End of an include file.  No name.
13718334Speter   This and N_BINCL act as brackets around the file's output.
13818334Speter   In an object file, there is no significant data in this entry.
13918334Speter   The Sun linker puts data into some of the fields.  */
14018334Speter__define_stab (N_EINCL, 0xa2, "EINCL")
14118334Speter
14218334Speter/* Alternate entry point.  Value is its address.  */
14318334Speter__define_stab (N_ENTRY, 0xa4, "ENTRY")
14418334Speter
14518334Speter/* Beginning of lexical block.
14618334Speter   The desc is the nesting level in lexical blocks.
14718334Speter   The value is the address of the start of the text for the block.
14818334Speter   The variables declared inside the block *precede* the N_LBRAC symbol.  */
14918334Speter__define_stab (N_LBRAC, 0xc0, "LBRAC")
15018334Speter
15118334Speter/* Place holder for deleted include file.  Replaces a N_BINCL and everything
15218334Speter   up to the corresponding N_EINCL.  The Sun linker generates these when
15318334Speter   it finds multiple identical copies of the symbols from an include file.
15418334Speter   This appears only in output from the Sun linker.  */
15518334Speter__define_stab (N_EXCL, 0xc2, "EXCL")
15618334Speter
15718334Speter/* Modula-2 scope information.  Can someone say what info it contains?  */
15818334Speter__define_stab (N_SCOPE, 0xc4, "SCOPE")
15918334Speter
16018334Speter/* End of a lexical block.  Desc matches the N_LBRAC's desc.
16118334Speter   The value is the address of the end of the text for the block.  */
16218334Speter__define_stab (N_RBRAC, 0xe0, "RBRAC")
16318334Speter
16418334Speter/* Begin named common block.  Only the name is significant.  */
16518334Speter__define_stab (N_BCOMM, 0xe2, "BCOMM")
16618334Speter
16718334Speter/* End named common block.  Only the name is significant
16818334Speter   (and it should match the N_BCOMM).  */
16918334Speter__define_stab (N_ECOMM, 0xe4, "ECOMM")
17018334Speter
17118334Speter/* End common (local name): value is address.
17218334Speter   I'm not sure how this is used.  */
17318334Speter__define_stab (N_ECOML, 0xe8, "ECOML")
17418334Speter
17518334Speter/* These STAB's are used on Gould systems for Non-Base register symbols
17618334Speter   or something like that.  FIXME.  I have assigned the values at random
177117395Skan   since I don't have a Gould here.  Fixups from Gould folk welcome...  */
17818334Speter__define_stab (N_NBTEXT, 0xF0, "NBTEXT")
17918334Speter__define_stab (N_NBDATA, 0xF2, "NBDATA")
18018334Speter__define_stab (N_NBBSS,  0xF4, "NBBSS")
18118334Speter__define_stab (N_NBSTS,  0xF6, "NBSTS")
18218334Speter__define_stab (N_NBLCS,  0xF8, "NBLCS")
18318334Speter
18418334Speter/* Second symbol entry containing a length-value for the preceding entry.
18518334Speter   The value is the length.  */
18618334Speter__define_stab (N_LENG, 0xfe, "LENG")
18718334Speter
18818334Speter/* The above information, in matrix format.
18918334Speter
19018334Speter			STAB MATRIX
19118334Speter	_________________________________________________
19218334Speter	| 00 - 1F are not dbx stab symbols		|
19318334Speter	| In most cases, the low bit is the EXTernal bit|
19418334Speter
19518334Speter	| 00 UNDEF  | 02 ABS	| 04 TEXT   | 06 DATA	|
19618334Speter	| 01  |EXT  | 03  |EXT	| 05  |EXT  | 07  |EXT	|
19718334Speter
19818334Speter	| 08 BSS    | 0A INDR	| 0C FN_SEQ | 0E   	|
19918334Speter	| 09  |EXT  | 0B 	| 0D	    | 0F	|
20018334Speter
20118334Speter	| 10 	    | 12 COMM	| 14 SETA   | 16 SETT	|
20218334Speter	| 11	    | 13	| 15 	    | 17	|
20318334Speter
20418334Speter	| 18 SETD   | 1A SETB	| 1C SETV   | 1E WARNING|
20518334Speter	| 19	    | 1B	| 1D 	    | 1F FN	|
20618334Speter
20718334Speter	|_______________________________________________|
20818334Speter	| Debug entries with bit 01 set are unused.	|
20918334Speter	| 20 GSYM   | 22 FNAME	| 24 FUN    | 26 STSYM	|
210169689Skan	| 28 LCSYM  | 2A MAIN	| 2C	    | 2E BNSYM	|
21118334Speter	| 30 PC	    | 32 NSYMS	| 34 NOMAP  | 36	|
21218334Speter	| 38 OBJ    | 3A	| 3C OPT    | 3E	|
21318334Speter	| 40 RSYM   | 42 M2C	| 44 SLINE  | 46 DSLINE |
214169689Skan	| 48 BSLINE*| 4A DEFD	| 4C        | 4E ENSYM	|
21518334Speter	| 50 EHDECL*| 52	| 54 CATCH  | 56        |
21618334Speter	| 58        | 5A        | 5C        | 5E	|
21718334Speter	| 60 SSYM   | 62	| 64 SO	    | 66 	|
21818334Speter	| 68 	    | 6A	| 6C	    | 6E	|
21918334Speter	| 70	    | 72	| 74	    | 76	|
22018334Speter	| 78	    | 7A	| 7C	    | 7E	|
22118334Speter	| 80 LSYM   | 82 BINCL	| 84 SOL    | 86	|
22218334Speter	| 88	    | 8A	| 8C	    | 8E	|
22318334Speter	| 90	    | 92	| 94	    | 96	|
22418334Speter	| 98	    | 9A	| 9C	    | 9E	|
22518334Speter	| A0 PSYM   | A2 EINCL	| A4 ENTRY  | A6	|
22618334Speter	| A8	    | AA	| AC	    | AE	|
22718334Speter	| B0	    | B2	| B4	    | B6	|
22818334Speter	| B8	    | BA	| BC	    | BE	|
22918334Speter	| C0 LBRAC  | C2 EXCL	| C4 SCOPE  | C6	|
23018334Speter	| C8	    | CA	| CC	    | CE	|
23118334Speter	| D0	    | D2	| D4	    | D6	|
23218334Speter	| D8	    | DA	| DC	    | DE	|
23318334Speter	| E0 RBRAC  | E2 BCOMM	| E4 ECOMM  | E6	|
23418334Speter	| E8 ECOML  | EA	| EC	    | EE	|
23518334Speter	| F0	    | F2	| F4	    | F6	|
23618334Speter	| F8	    | FA	| FC	    | FE LENG	|
23718334Speter	+-----------------------------------------------+
23818334Speter * 50 EHDECL is also MOD2.
23918334Speter * 48 BSLINE is also BROWS.
24018334Speter */
241