12632Sstever@eecs.umich.edu/*
22632Sstever@eecs.umich.edu * Copyright (c) 2003, 2005-2006 The Regents of The University of Michigan
32632Sstever@eecs.umich.edu * All rights reserved.
42632Sstever@eecs.umich.edu *
52632Sstever@eecs.umich.edu * Redistribution and use in source and binary forms, with or without
62632Sstever@eecs.umich.edu * modification, are permitted provided that the following conditions are
72632Sstever@eecs.umich.edu * met: redistributions of source code must retain the above copyright
82632Sstever@eecs.umich.edu * notice, this list of conditions and the following disclaimer;
92632Sstever@eecs.umich.edu * redistributions in binary form must reproduce the above copyright
102632Sstever@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the
112632Sstever@eecs.umich.edu * documentation and/or other materials provided with the distribution;
122632Sstever@eecs.umich.edu * neither the name of the copyright holders nor the names of its
132632Sstever@eecs.umich.edu * contributors may be used to endorse or promote products derived from
142632Sstever@eecs.umich.edu * this software without specific prior written permission.
152632Sstever@eecs.umich.edu *
162632Sstever@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
172632Sstever@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
182632Sstever@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
192632Sstever@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
202632Sstever@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
212632Sstever@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
222632Sstever@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
232632Sstever@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
242632Sstever@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
252632Sstever@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
262632Sstever@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
272632Sstever@eecs.umich.edu *
282632Sstever@eecs.umich.edu * Authors: Steve Reinhardt
292632Sstever@eecs.umich.edu */
302632Sstever@eecs.umich.edu
3112SN/A/*
3212SN/A * Taken from binutils-2.14.90.0.5 include/coff/symconst.h
3312SN/A */
3412SN/A
3512SN/A/* Declarations of constants for internal format of MIPS ECOFF symbols.
3612SN/A   Originally contributed by MIPS Computer Systems and Third Eye Software.
3712SN/A   Changes contributed by Cygnus Support are in the public domain.
3812SN/A
3912SN/A   This file is just aggregated with the files that make up the GNU
4012SN/A   release; it is not considered part of GAS, GDB, or other GNU
4112SN/A   programs.  */
4212SN/A
4312SN/A/*
4412SN/A * |-----------------------------------------------------------|
4512SN/A * | Copyright (c) 1992, 1991, 1990 MIPS Computer Systems, Inc.|
4612SN/A * | MIPS Computer Systems, Inc. grants reproduction and use   |
4712SN/A * | rights to all parties, PROVIDED that this comment is      |
4812SN/A * | maintained in the copy.                                   |
4912SN/A * |-----------------------------------------------------------|
5012SN/A */
5112SN/A
5212SN/A/* (C) Copyright 1984 by Third Eye Software, Inc.
5312SN/A *
5412SN/A * Third Eye Software, Inc. grants reproduction and use rights to
5512SN/A * all parties, PROVIDED that this comment is maintained in the copy.
5612SN/A *
5712SN/A * Third Eye makes no claims about the applicability of this
5812SN/A * symbol table to a particular use.
5912SN/A */
6012SN/A
6112SN/A/* glevels for field in FDR */
625543Ssaidi@eecs.umich.edu#define GLEVEL_0        2
635543Ssaidi@eecs.umich.edu#define GLEVEL_1        1
645543Ssaidi@eecs.umich.edu#define GLEVEL_2        0       /* for upward compat reasons. */
655543Ssaidi@eecs.umich.edu#define GLEVEL_3        3
6612SN/A
6712SN/A/* magic number fo symheader */
685543Ssaidi@eecs.umich.edu#define magicSym        0x7009
6912SN/A/* The Alpha uses this value instead, for some reason.  */
705543Ssaidi@eecs.umich.edu#define magicSym2       0x1992
7112SN/A
7212SN/A/* Language codes */
735543Ssaidi@eecs.umich.edu#define langC           0
745543Ssaidi@eecs.umich.edu#define langPascal      1
755543Ssaidi@eecs.umich.edu#define langFortran     2
765543Ssaidi@eecs.umich.edu#define langAssembler   3       /* one Assembley inst might map to many mach */
775543Ssaidi@eecs.umich.edu#define langMachine     4
785543Ssaidi@eecs.umich.edu#define langNil         5
795543Ssaidi@eecs.umich.edu#define langAda         6
805543Ssaidi@eecs.umich.edu#define langPl1         7
815543Ssaidi@eecs.umich.edu#define langCobol       8
825543Ssaidi@eecs.umich.edu#define langStdc        9       /* FIXME: Collides with SGI langCplusplus */
835543Ssaidi@eecs.umich.edu#define langCplusplus   9       /* FIXME: Collides with langStdc */
845543Ssaidi@eecs.umich.edu#define langCplusplusV2 10      /* SGI addition */
855543Ssaidi@eecs.umich.edu#define langMax         11      /* maximun allowed 32 -- 5 bits */
8612SN/A
8712SN/A/* The following are value definitions for the fields in the SYMR */
8812SN/A
8912SN/A/*
9012SN/A * Storage Classes
9112SN/A */
9212SN/A
935543Ssaidi@eecs.umich.edu#define scNil           0
945543Ssaidi@eecs.umich.edu#define scText          1       /* text symbol */
955543Ssaidi@eecs.umich.edu#define scData          2       /* initialized data symbol */
965543Ssaidi@eecs.umich.edu#define scBss           3       /* un-initialized data symbol */
975543Ssaidi@eecs.umich.edu#define scRegister      4       /* value of symbol is register number */
985543Ssaidi@eecs.umich.edu#define scAbs           5       /* value of symbol is absolute */
995543Ssaidi@eecs.umich.edu#define scUndefined     6       /* who knows? */
1005543Ssaidi@eecs.umich.edu#define scCdbLocal      7       /* variable's value is IN se->va.?? */
1015543Ssaidi@eecs.umich.edu#define scBits          8       /* this is a bit field */
1025543Ssaidi@eecs.umich.edu#define scCdbSystem     9       /* variable's value is IN CDB's address space */
1035543Ssaidi@eecs.umich.edu#define scDbx           9       /* overlap dbx internal use */
1045543Ssaidi@eecs.umich.edu#define scRegImage      10      /* register value saved on stack */
1055543Ssaidi@eecs.umich.edu#define scInfo          11      /* symbol contains debugger information */
1065543Ssaidi@eecs.umich.edu#define scUserStruct    12      /* address in struct user for current process */
1075543Ssaidi@eecs.umich.edu#define scSData         13      /* load time only small data */
1085543Ssaidi@eecs.umich.edu#define scSBss          14      /* load time only small common */
1095543Ssaidi@eecs.umich.edu#define scRData         15      /* load time only read only data */
1105543Ssaidi@eecs.umich.edu#define scVar           16      /* Var parameter (fortran,pascal) */
1115543Ssaidi@eecs.umich.edu#define scCommon        17      /* common variable */
1125543Ssaidi@eecs.umich.edu#define scSCommon       18      /* small common */
1135543Ssaidi@eecs.umich.edu#define scVarRegister   19      /* Var parameter in a register */
1145543Ssaidi@eecs.umich.edu#define scVariant       20      /* Variant record */
1155543Ssaidi@eecs.umich.edu#define scSUndefined    21      /* small undefined(external) data */
1165543Ssaidi@eecs.umich.edu#define scInit          22      /* .init section symbol */
1175543Ssaidi@eecs.umich.edu#define scBasedVar      23      /* Fortran or PL/1 ptr based var */
11812SN/A#define scXData         24      /* exception handling data */
11912SN/A#define scPData         25      /* Procedure section */
12012SN/A#define scFini          26      /* .fini section */
1215543Ssaidi@eecs.umich.edu#define scRConst        27      /* .rconst section */
1225543Ssaidi@eecs.umich.edu#define scMax           32
12312SN/A
12412SN/A
12512SN/A/*
12612SN/A *   Symbol Types
12712SN/A */
12812SN/A
1295543Ssaidi@eecs.umich.edu#define stNil           0       /* Nuthin' special */
1305543Ssaidi@eecs.umich.edu#define stGlobal        1       /* external symbol */
1315543Ssaidi@eecs.umich.edu#define stStatic        2       /* static */
1325543Ssaidi@eecs.umich.edu#define stParam         3       /* procedure argument */
1335543Ssaidi@eecs.umich.edu#define stLocal         4       /* local variable */
1345543Ssaidi@eecs.umich.edu#define stLabel         5       /* label */
1355543Ssaidi@eecs.umich.edu#define stProc          6       /*     "      "  Procedure */
1365543Ssaidi@eecs.umich.edu#define stBlock         7       /* beginnning of block */
1375543Ssaidi@eecs.umich.edu#define stEnd           8       /* end (of anything) */
1385543Ssaidi@eecs.umich.edu#define stMember        9       /* member (of anything  - struct/union/enum */
1395543Ssaidi@eecs.umich.edu#define stTypedef       10      /* type definition */
1405543Ssaidi@eecs.umich.edu#define stFile          11      /* file name */
1415543Ssaidi@eecs.umich.edu#define stRegReloc      12      /* register relocation */
1425543Ssaidi@eecs.umich.edu#define stForward       13      /* forwarding address */
1435543Ssaidi@eecs.umich.edu#define stStaticProc    14      /* load time only static procs */
1445543Ssaidi@eecs.umich.edu#define stConstant      15      /* const */
1455543Ssaidi@eecs.umich.edu#define stStaParam      16      /* Fortran static parameters */
14612SN/A    /* These new symbol types have been recently added to SGI machines. */
1475543Ssaidi@eecs.umich.edu#define stStruct        26      /* Beginning of block defining a struct type */
1485543Ssaidi@eecs.umich.edu#define stUnion         27      /* Beginning of block defining a union type */
1495543Ssaidi@eecs.umich.edu#define stEnum          28      /* Beginning of block defining an enum type */
1505543Ssaidi@eecs.umich.edu#define stIndirect      34      /* Indirect type specification */
15112SN/A    /* Pseudo-symbols - internal to debugger */
1525543Ssaidi@eecs.umich.edu#define stStr           60      /* string */
1535543Ssaidi@eecs.umich.edu#define stNumber        61      /* pure number (ie. 4 NOR 2+2) */
1545543Ssaidi@eecs.umich.edu#define stExpr          62      /* 2+2 vs. 4 */
1555543Ssaidi@eecs.umich.edu#define stType          63      /* post-coersion SER */
1565543Ssaidi@eecs.umich.edu#define stMax           64
15712SN/A
15812SN/A/* definitions for fields in TIR */
15912SN/A
16012SN/A/* type qualifiers for ti.tq0 -> ti.(itqMax-1) */
1615543Ssaidi@eecs.umich.edu#define tqNil   0       /* bt is what you see */
1625543Ssaidi@eecs.umich.edu#define tqPtr   1       /* pointer */
1635543Ssaidi@eecs.umich.edu#define tqProc  2       /* procedure */
1645543Ssaidi@eecs.umich.edu#define tqArray 3       /* duh */
1655543Ssaidi@eecs.umich.edu#define tqFar   4       /* longer addressing - 8086/8 land */
1665543Ssaidi@eecs.umich.edu#define tqVol   5       /* volatile */
1675543Ssaidi@eecs.umich.edu#define tqConst 6       /* const */
1685543Ssaidi@eecs.umich.edu#define tqMax   8
16912SN/A
17012SN/A/* basic types as seen in ti.bt */
1715543Ssaidi@eecs.umich.edu#define btNil           0       /* undefined (also, enum members) */
1725543Ssaidi@eecs.umich.edu#define btAdr           1       /* address - integer same size as pointer */
1735543Ssaidi@eecs.umich.edu#define btChar          2       /* character */
1745543Ssaidi@eecs.umich.edu#define btUChar         3       /* unsigned character */
1755543Ssaidi@eecs.umich.edu#define btShort         4       /* short */
1765543Ssaidi@eecs.umich.edu#define btUShort        5       /* unsigned short */
1775543Ssaidi@eecs.umich.edu#define btInt           6       /* int */
1785543Ssaidi@eecs.umich.edu#define btUInt          7       /* unsigned int */
1795543Ssaidi@eecs.umich.edu#define btLong          8       /* long */
1805543Ssaidi@eecs.umich.edu#define btULong         9       /* unsigned long */
1815543Ssaidi@eecs.umich.edu#define btFloat         10      /* float (real) */
1825543Ssaidi@eecs.umich.edu#define btDouble        11      /* Double (real) */
1835543Ssaidi@eecs.umich.edu#define btStruct        12      /* Structure (Record) */
1845543Ssaidi@eecs.umich.edu#define btUnion         13      /* Union (variant) */
1855543Ssaidi@eecs.umich.edu#define btEnum          14      /* Enumerated */
1865543Ssaidi@eecs.umich.edu#define btTypedef       15      /* defined via a typedef, isymRef points */
1875543Ssaidi@eecs.umich.edu#define btRange         16      /* subrange of int */
1885543Ssaidi@eecs.umich.edu#define btSet           17      /* pascal sets */
1895543Ssaidi@eecs.umich.edu#define btComplex       18      /* fortran complex */
1905543Ssaidi@eecs.umich.edu#define btDComplex      19      /* fortran double complex */
1915543Ssaidi@eecs.umich.edu#define btIndirect      20      /* forward or unnamed typedef */
1925543Ssaidi@eecs.umich.edu#define btFixedDec      21      /* Fixed Decimal */
1935543Ssaidi@eecs.umich.edu#define btFloatDec      22      /* Float Decimal */
1945543Ssaidi@eecs.umich.edu#define btString        23      /* Varying Length Character String */
1955543Ssaidi@eecs.umich.edu#define btBit           24      /* Aligned Bit String */
1965543Ssaidi@eecs.umich.edu#define btPicture       25      /* Picture */
1975543Ssaidi@eecs.umich.edu#define btVoid          26      /* void */
1985543Ssaidi@eecs.umich.edu#define btLongLong      27      /* long long */
1995543Ssaidi@eecs.umich.edu#define btULongLong     28      /* unsigned long long */
2005543Ssaidi@eecs.umich.edu#define btMax           64
201