Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6400 | punk_joker | 1 | /* @(#)stab.h 1.11 92/05/11 SMI */ |
2 | /* $Id: stab.h,v 1.2 2005/10/11 08:44:56 tobias-weber Exp $ */ |
||
3 | /* |
||
4 | * Copyright (c) 1990 by Sun Microsystems, Inc. |
||
5 | */ |
||
6 | |||
7 | /* |
||
8 | * This file gives definitions supplementing |
||
9 | * for permanent symbol table entries. |
||
10 | * These must have one of the N_STAB bits on, |
||
11 | * and are subject to relocation according to the masks in |
||
12 | */ |
||
13 | |||
14 | #ifndef _STAB_H |
||
15 | #define _STAB_H |
||
16 | |||
17 | |||
18 | #if !defined(_a_out_h) && !defined(_A_OUT_H) |
||
19 | /* this file contains fragments of a.out.h and stab.h relevant to |
||
20 | * support of stabX processing within ELF files - see the |
||
21 | * Format of a symbol table entry |
||
22 | */ |
||
23 | struct nlist { |
||
24 | union { |
||
25 | char *n_name; /* for use when in-core */ |
||
26 | long n_strx; /* index into file string table */ |
||
27 | } n_un; |
||
28 | unsigned char n_type; /* type flag (N_TEXT,..) */ |
||
29 | char n_other; /* unused */ |
||
30 | short n_desc; /* see |
||
31 | unsigned long n_value; /* value of symbol (or sdb offset) */ |
||
32 | }; |
||
33 | |||
34 | /* |
||
35 | * Simple values for n_type. |
||
36 | */ |
||
37 | #define N_UNDF 0x0 /* undefined */ |
||
38 | #define N_ABS 0x2 /* absolute */ |
||
39 | #define N_TEXT 0x4 /* text */ |
||
40 | #define N_DATA 0x6 /* data */ |
||
41 | #define N_BSS 0x8 /* bss */ |
||
42 | #define N_COMM 0x12 /* common (internal to ld) */ |
||
43 | #define N_FN 0x1f /* file name symbol */ |
||
44 | |||
45 | #define N_EXT 01 /* external bit, or'ed in */ |
||
46 | #define N_TYPE 0x1e /* mask for all the type bits */ |
||
47 | |||
48 | #endif |
||
49 | |||
50 | /* |
||
51 | * for symbolic debugger, sdb(1): |
||
52 | */ |
||
53 | #define N_GSYM 0x20 /* global symbol: name,,0,type,0 */ |
||
54 | #define N_FNAME 0x22 /* procedure name (f77 kludge): name,,0 */ |
||
55 | #define N_FUN 0x24 /* procedure: name,,0,linenumber,address */ |
||
56 | #define N_STSYM 0x26 /* static symbol: name,,0,type,address */ |
||
57 | #define N_LCSYM 0x28 /* .lcomm symbol: name,,0,type,address */ |
||
58 | #define N_MAIN 0x2a /* name of main routine : name,,0,0,0 */ |
||
59 | #define N_ROSYM 0x2c /* ro_data objects */ |
||
60 | #define N_OBJ 0x38 /* object file path or name */ |
||
61 | #define N_OPT 0x3c /* compiler options */ |
||
62 | #define N_RSYM 0x40 /* register sym: name,,0,type,register */ |
||
63 | #define N_SLINE 0x44 /* src line: 0,,0,linenumber,address */ |
||
64 | #define N_FLINE 0x4c /* function start.end */ |
||
65 | #define N_SSYM 0x60 /* structure elt: name,,0,type,struct_offset */ |
||
66 | #define N_ENDM 0x62 /* last stab emitted for module */ |
||
67 | #define N_SO 0x64 /* source file name: name,,0,0,address */ |
||
68 | #define N_LSYM 0x80 /* local sym: name,,0,type,offset */ |
||
69 | #define N_BINCL 0x82 /* header file: name,,0,0,0 */ |
||
70 | #define N_SOL 0x84 /* #included file name: name,,0,0,address */ |
||
71 | #define N_PSYM 0xa0 /* parameter: name,,0,type,offset */ |
||
72 | #define N_EINCL 0xa2 /* end of include file */ |
||
73 | #define N_ENTRY 0xa4 /* alternate entry: name,linenumber,address */ |
||
74 | #define N_LBRAC 0xc0 /* left bracket: 0,,0,nesting level,address */ |
||
75 | #define N_EXCL 0xc2 /* excluded include file */ |
||
76 | #define N_RBRAC 0xe0 /* right bracket: 0,,0,nesting level,address */ |
||
77 | #define N_BCOMM 0xe2 /* begin common: name,, */ |
||
78 | #define N_ECOMM 0xe4 /* end common: name,, */ |
||
79 | #define N_ECOML 0xe8 /* end common (local name): ,,address */ |
||
80 | #define N_LENG 0xfe /* second stab entry with length information */ |
||
81 | |||
82 | /* |
||
83 | * for the berkeley pascal compiler, pc(1): |
||
84 | */ |
||
85 | #define N_PC 0x30 /* global pascal symbol: name,,0,subtype,line */ |
||
86 | #define N_WITH 0xea /* pascal with statement: type,,0,0,offset */ |
||
87 | |||
88 | /* |
||
89 | * for code browser only |
||
90 | */ |
||
91 | #define N_BROWS 0x48 /* path to associated .cb file */ |
||
92 | |||
93 | /* |
||
94 | * Optional langauge designations for N_SO |
||
95 | */ |
||
96 | #define N_SO_AS 1 /* Assembler */ |
||
97 | #define N_SO_C 2 /* C */ |
||
98 | #define N_SO_ANSI_C 3 /* ANSI C */ |
||
99 | #define N_SO_CC 4 /* C++ */ |
||
100 | #define N_SO_FORTRAN 5 /* Fortran 77 */ |
||
101 | #define N_SO_PASCAL 6 /* Pascal */ |
||
102 | |||
103 | /* |
||
104 | * Floating point type values |
||
105 | */ |
||
106 | #define NF_NONE 0 /* Undefined type */ |
||
107 | #define NF_SINGLE 1 /* IEEE 32 bit float */ |
||
108 | #define NF_DOUBLE 2 /* IEEE 64 bit float */ |
||
109 | #define NF_COMPLEX 3 /* Fortran complex */ |
||
110 | #define NF_COMPLEX16 4 /* Fortran double complex */ |
||
111 | #define NF_COMPLEX32 5 /* Fortran complex*16 */ |
||
112 | #define NF_LDOUBLE 6 /* Long double */ |
||
113 | |||
114 | #endif |