source: trunk/libs/newlib/src/include/coff/symconst.h @ 487

Last change on this file since 487 was 444, checked in by satin@…, 7 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 6.9 KB
Line 
1/* Declarations of constants for internal format of MIPS ECOFF symbols.
2   Originally contributed by MIPS Computer Systems and Third Eye Software.
3   Changes contributed by Cygnus Support are in the public domain.
4
5   This file is just aggregated with the files that make up the GNU
6   release; it is not considered part of GAS, GDB, or other GNU
7   programs.  */
8
9/*
10 * |-----------------------------------------------------------|
11 * | Copyright (c) 1992, 1991, 1990 MIPS Computer Systems, Inc.|
12 * | MIPS Computer Systems, Inc. grants reproduction and use   |
13 * | rights to all parties, PROVIDED that this comment is      |
14 * | maintained in the copy.                                   |
15 * |-----------------------------------------------------------|
16 */
17
18/* (C) Copyright 1984 by Third Eye Software, Inc.
19 *
20 * Third Eye Software, Inc. grants reproduction and use rights to
21 * all parties, PROVIDED that this comment is maintained in the copy.
22 *
23 * Third Eye makes no claims about the applicability of this
24 * symbol table to a particular use.
25 */
26
27/* glevels for field in FDR */
28#define GLEVEL_0        2
29#define GLEVEL_1        1
30#define GLEVEL_2        0       /* for upward compat reasons. */
31#define GLEVEL_3        3
32
33/* magic number fo symheader */
34#define magicSym        0x7009
35/* The Alpha uses this value instead, for some reason.  */
36#define magicSym2       0x1992
37
38/* Language codes */
39#define langC           0       
40#define langPascal      1
41#define langFortran     2
42#define langAssembler   3       /* one Assembley inst might map to many mach */
43#define langMachine     4
44#define langNil         5
45#define langAda         6
46#define langPl1         7
47#define langCobol       8
48#define langStdc        9       /* FIXME: Collides with SGI langCplusplus */
49#define langCplusplus   9       /* FIXME: Collides with langStdc */
50#define langCplusplusV2 10      /* SGI addition */
51#define langMax         11      /* maximum allowed 32 -- 5 bits */
52
53/* The following are value definitions for the fields in the SYMR */
54
55/*
56 * Storage Classes
57 */
58
59#define scNil           0
60#define scText          1       /* text symbol */
61#define scData          2       /* initialized data symbol */
62#define scBss           3       /* un-initialized data symbol */
63#define scRegister      4       /* value of symbol is register number */
64#define scAbs           5       /* value of symbol is absolute */
65#define scUndefined     6       /* who knows? */
66#define scCdbLocal      7       /* variable's value is IN se->va.?? */
67#define scBits          8       /* this is a bit field */
68#define scCdbSystem     9       /* variable's value is IN CDB's address space */
69#define scDbx           9       /* overlap dbx internal use */
70#define scRegImage      10      /* register value saved on stack */
71#define scInfo          11      /* symbol contains debugger information */
72#define scUserStruct    12      /* address in struct user for current process */
73#define scSData         13      /* load time only small data */
74#define scSBss          14      /* load time only small common */
75#define scRData         15      /* load time only read only data */
76#define scVar           16      /* Var parameter (fortran,pascal) */
77#define scCommon        17      /* common variable */
78#define scSCommon       18      /* small common */
79#define scVarRegister   19      /* Var parameter in a register */
80#define scVariant       20      /* Variant record */
81#define scSUndefined    21      /* small undefined(external) data */
82#define scInit          22      /* .init section symbol */
83#define scBasedVar      23      /* Fortran or PL/1 ptr based var */ 
84#define scXData         24      /* exception handling data */
85#define scPData         25      /* Procedure section */
86#define scFini          26      /* .fini section */
87#define scRConst        27      /* .rconst section */
88#define scMax           32
89
90
91/*
92 *   Symbol Types
93 */
94
95#define stNil           0       /* Nuthin' special */
96#define stGlobal        1       /* external symbol */
97#define stStatic        2       /* static */
98#define stParam         3       /* procedure argument */
99#define stLocal         4       /* local variable */
100#define stLabel         5       /* label */
101#define stProc          6       /*     "      "  Procedure */
102#define stBlock         7       /* beginnning of block */
103#define stEnd           8       /* end (of anything) */
104#define stMember        9       /* member (of anything  - struct/union/enum */
105#define stTypedef       10      /* type definition */
106#define stFile          11      /* file name */
107#define stRegReloc      12      /* register relocation */
108#define stForward       13      /* forwarding address */
109#define stStaticProc    14      /* load time only static procs */
110#define stConstant      15      /* const */
111#define stStaParam      16      /* Fortran static parameters */
112    /* These new symbol types have been recently added to SGI machines. */
113#define stStruct        26      /* Beginning of block defining a struct type */
114#define stUnion         27      /* Beginning of block defining a union type */
115#define stEnum          28      /* Beginning of block defining an enum type */
116#define stIndirect      34      /* Indirect type specification */
117    /* Pseudo-symbols - internal to debugger */
118#define stStr           60      /* string */
119#define stNumber        61      /* pure number (ie. 4 NOR 2+2) */
120#define stExpr          62      /* 2+2 vs. 4 */
121#define stType          63      /* post-coersion SER */
122#define stMax           64
123
124/* definitions for fields in TIR */
125
126/* type qualifiers for ti.tq0 -> ti.(itqMax-1) */
127#define tqNil   0       /* bt is what you see */
128#define tqPtr   1       /* pointer */
129#define tqProc  2       /* procedure */
130#define tqArray 3       /* duh */
131#define tqFar   4       /* longer addressing - 8086/8 land */
132#define tqVol   5       /* volatile */
133#define tqConst 6       /* const */
134#define tqMax   8
135
136/* basic types as seen in ti.bt */
137#define btNil           0       /* undefined (also, enum members) */
138#define btAdr           1       /* address - integer same size as pointer */
139#define btChar          2       /* character */
140#define btUChar         3       /* unsigned character */
141#define btShort         4       /* short */
142#define btUShort        5       /* unsigned short */
143#define btInt           6       /* int */
144#define btUInt          7       /* unsigned int */
145#define btLong          8       /* long */
146#define btULong         9       /* unsigned long */
147#define btFloat         10      /* float (real) */
148#define btDouble        11      /* Double (real) */
149#define btStruct        12      /* Structure (Record) */
150#define btUnion         13      /* Union (variant) */
151#define btEnum          14      /* Enumerated */
152#define btTypedef       15      /* defined via a typedef, isymRef points */
153#define btRange         16      /* subrange of int */
154#define btSet           17      /* pascal sets */
155#define btComplex       18      /* fortran complex */
156#define btDComplex      19      /* fortran double complex */
157#define btIndirect      20      /* forward or unnamed typedef */
158#define btFixedDec      21      /* Fixed Decimal */
159#define btFloatDec      22      /* Float Decimal */
160#define btString        23      /* Varying Length Character String */
161#define btBit           24      /* Aligned Bit String */
162#define btPicture       25      /* Picture */
163#define btVoid          26      /* void */
164#define btLongLong      27      /* long long */
165#define btULongLong     28      /* unsigned long long */
166#define btLong64        30      /* long (64-bit) */
167#define btULong64       31      /* unsigned long (64-bit) */
168#define btLongLong64    32      /* long long (64-bit) */
169#define btULongLong64   33      /* unsigned long long (64-bit) */
170#define btAdr64         34      /* address (64-bit) */
171#define btInt64         35      /* int (64-bit) */
172#define btUInt64        36      /* unsigned int (64-bit) */
173#define btMax           64
174
175#if (_MFG == _MIPS)
176/* optimization type codes */
177#define otNil           0
178#define otReg           1       /* move var to reg */
179#define otBlock         2       /* begin basic block */
180#define otProc          3       /* procedure */
181#define otInline        4       /* inline procedure */
182#define otEnd           5       /* whatever you started */
183#define otMax           6       /* KEEP UP TO DATE */
184#endif /* (_MFG == _MIPS) */
Note: See TracBrowser for help on using the repository browser.