Blame include/coff/symconst.h

Packit bbfece
/* Declarations of constants for internal format of MIPS ECOFF symbols.
Packit bbfece
   Originally contributed by MIPS Computer Systems and Third Eye Software.
Packit bbfece
   Changes contributed by Cygnus Support are in the public domain.
Packit bbfece
Packit bbfece
   This file is just aggregated with the files that make up the GNU
Packit bbfece
   release; it is not considered part of GAS, GDB, or other GNU
Packit bbfece
   programs.  */
Packit bbfece
Packit bbfece
/*
Packit bbfece
 * |-----------------------------------------------------------|
Packit bbfece
 * | Copyright (c) 1992, 1991, 1990 MIPS Computer Systems, Inc.|
Packit bbfece
 * | MIPS Computer Systems, Inc. grants reproduction and use   |
Packit bbfece
 * | rights to all parties, PROVIDED that this comment is      |
Packit bbfece
 * | maintained in the copy.                                   |
Packit bbfece
 * |-----------------------------------------------------------|
Packit bbfece
 */
Packit bbfece
Packit bbfece
/* (C) Copyright 1984 by Third Eye Software, Inc.
Packit bbfece
 *
Packit bbfece
 * Third Eye Software, Inc. grants reproduction and use rights to
Packit bbfece
 * all parties, PROVIDED that this comment is maintained in the copy.
Packit bbfece
 *
Packit bbfece
 * Third Eye makes no claims about the applicability of this
Packit bbfece
 * symbol table to a particular use.
Packit bbfece
 */
Packit bbfece
Packit bbfece
/* glevels for field in FDR */
Packit bbfece
#define GLEVEL_0	2
Packit bbfece
#define GLEVEL_1	1
Packit bbfece
#define GLEVEL_2	0	/* for upward compat reasons. */
Packit bbfece
#define GLEVEL_3	3
Packit bbfece
Packit bbfece
/* magic number fo symheader */
Packit bbfece
#define magicSym	0x7009
Packit bbfece
/* The Alpha uses this value instead, for some reason.  */
Packit bbfece
#define magicSym2	0x1992
Packit bbfece
Packit bbfece
/* Language codes */
Packit bbfece
#define langC		0	
Packit bbfece
#define langPascal	1
Packit bbfece
#define langFortran	2
Packit bbfece
#define	langAssembler	3	/* one Assembley inst might map to many mach */
Packit bbfece
#define langMachine	4
Packit bbfece
#define langNil		5
Packit bbfece
#define langAda		6
Packit bbfece
#define langPl1		7
Packit bbfece
#define langCobol	8
Packit bbfece
#define langStdc	9	/* FIXME: Collides with SGI langCplusplus */
Packit bbfece
#define langCplusplus	9	/* FIXME: Collides with langStdc */
Packit bbfece
#define langCplusplusV2	10	/* SGI addition */
Packit bbfece
#define langMax		11	/* maximum allowed 32 -- 5 bits */
Packit bbfece
Packit bbfece
/* The following are value definitions for the fields in the SYMR */
Packit bbfece
Packit bbfece
/*
Packit bbfece
 * Storage Classes
Packit bbfece
 */
Packit bbfece
Packit bbfece
#define scNil		0
Packit bbfece
#define scText		1	/* text symbol */
Packit bbfece
#define scData		2	/* initialized data symbol */
Packit bbfece
#define scBss		3	/* un-initialized data symbol */
Packit bbfece
#define scRegister	4	/* value of symbol is register number */
Packit bbfece
#define scAbs		5	/* value of symbol is absolute */
Packit bbfece
#define scUndefined	6	/* who knows? */
Packit bbfece
#define scCdbLocal	7	/* variable's value is IN se->va.?? */
Packit bbfece
#define scBits		8	/* this is a bit field */
Packit bbfece
#define scCdbSystem	9	/* variable's value is IN CDB's address space */
Packit bbfece
#define scDbx		9	/* overlap dbx internal use */
Packit bbfece
#define scRegImage	10	/* register value saved on stack */
Packit bbfece
#define scInfo		11	/* symbol contains debugger information */
Packit bbfece
#define scUserStruct	12	/* address in struct user for current process */
Packit bbfece
#define scSData		13	/* load time only small data */
Packit bbfece
#define scSBss		14	/* load time only small common */
Packit bbfece
#define scRData		15	/* load time only read only data */
Packit bbfece
#define scVar		16	/* Var parameter (fortran,pascal) */
Packit bbfece
#define scCommon	17	/* common variable */
Packit bbfece
#define scSCommon	18	/* small common */
Packit bbfece
#define scVarRegister	19	/* Var parameter in a register */
Packit bbfece
#define scVariant	20	/* Variant record */
Packit bbfece
#define scSUndefined	21	/* small undefined(external) data */
Packit bbfece
#define scInit		22	/* .init section symbol */
Packit bbfece
#define scBasedVar	23	/* Fortran or PL/1 ptr based var */ 
Packit bbfece
#define scXData         24      /* exception handling data */
Packit bbfece
#define scPData         25      /* Procedure section */
Packit bbfece
#define scFini          26      /* .fini section */
Packit bbfece
#define scRConst	27	/* .rconst section */
Packit bbfece
#define scMax		32
Packit bbfece
Packit bbfece
Packit bbfece
/*
Packit bbfece
 *   Symbol Types
Packit bbfece
 */
Packit bbfece
Packit bbfece
#define stNil		0	/* Nuthin' special */
Packit bbfece
#define stGlobal	1	/* external symbol */
Packit bbfece
#define stStatic	2	/* static */
Packit bbfece
#define stParam		3	/* procedure argument */
Packit bbfece
#define stLocal		4	/* local variable */
Packit bbfece
#define stLabel		5	/* label */
Packit bbfece
#define stProc		6	/*     "      "	 Procedure */
Packit bbfece
#define stBlock		7	/* beginnning of block */
Packit bbfece
#define stEnd		8	/* end (of anything) */
Packit bbfece
#define stMember	9	/* member (of anything	- struct/union/enum */
Packit bbfece
#define stTypedef	10	/* type definition */
Packit bbfece
#define stFile		11	/* file name */
Packit bbfece
#define stRegReloc	12	/* register relocation */
Packit bbfece
#define stForward	13	/* forwarding address */
Packit bbfece
#define stStaticProc	14	/* load time only static procs */
Packit bbfece
#define stConstant	15	/* const */
Packit bbfece
#define stStaParam	16	/* Fortran static parameters */
Packit bbfece
    /* These new symbol types have been recently added to SGI machines. */
Packit bbfece
#define stStruct	26	/* Beginning of block defining a struct type */
Packit bbfece
#define stUnion		27	/* Beginning of block defining a union type */
Packit bbfece
#define stEnum		28	/* Beginning of block defining an enum type */
Packit bbfece
#define stIndirect	34	/* Indirect type specification */
Packit bbfece
    /* Pseudo-symbols - internal to debugger */
Packit bbfece
#define stStr		60	/* string */
Packit bbfece
#define stNumber	61	/* pure number (ie. 4 NOR 2+2) */
Packit bbfece
#define stExpr		62	/* 2+2 vs. 4 */
Packit bbfece
#define stType		63	/* post-coersion SER */
Packit bbfece
#define stMax		64
Packit bbfece
Packit bbfece
/* definitions for fields in TIR */
Packit bbfece
Packit bbfece
/* type qualifiers for ti.tq0 -> ti.(itqMax-1) */
Packit bbfece
#define tqNil	0	/* bt is what you see */
Packit bbfece
#define tqPtr	1	/* pointer */
Packit bbfece
#define tqProc	2	/* procedure */
Packit bbfece
#define tqArray 3	/* duh */
Packit bbfece
#define tqFar	4	/* longer addressing - 8086/8 land */
Packit bbfece
#define tqVol	5	/* volatile */
Packit bbfece
#define tqConst 6	/* const */
Packit bbfece
#define tqMax	8
Packit bbfece
Packit bbfece
/* basic types as seen in ti.bt */
Packit bbfece
#define btNil		0	/* undefined (also, enum members) */
Packit bbfece
#define btAdr		1	/* address - integer same size as pointer */
Packit bbfece
#define btChar		2	/* character */
Packit bbfece
#define btUChar		3	/* unsigned character */
Packit bbfece
#define btShort		4	/* short */
Packit bbfece
#define btUShort	5	/* unsigned short */
Packit bbfece
#define btInt		6	/* int */
Packit bbfece
#define btUInt		7	/* unsigned int */
Packit bbfece
#define btLong		8	/* long */
Packit bbfece
#define btULong		9	/* unsigned long */
Packit bbfece
#define btFloat		10	/* float (real) */
Packit bbfece
#define btDouble	11	/* Double (real) */
Packit bbfece
#define btStruct	12	/* Structure (Record) */
Packit bbfece
#define btUnion		13	/* Union (variant) */
Packit bbfece
#define btEnum		14	/* Enumerated */
Packit bbfece
#define btTypedef	15	/* defined via a typedef, isymRef points */
Packit bbfece
#define btRange		16	/* subrange of int */
Packit bbfece
#define btSet		17	/* pascal sets */
Packit bbfece
#define btComplex	18	/* fortran complex */
Packit bbfece
#define btDComplex	19	/* fortran double complex */
Packit bbfece
#define btIndirect	20	/* forward or unnamed typedef */
Packit bbfece
#define btFixedDec	21	/* Fixed Decimal */
Packit bbfece
#define btFloatDec	22	/* Float Decimal */
Packit bbfece
#define btString	23	/* Varying Length Character String */
Packit bbfece
#define btBit		24	/* Aligned Bit String */
Packit bbfece
#define btPicture	25	/* Picture */
Packit bbfece
#define btVoid		26	/* void */
Packit bbfece
#define btLongLong	27	/* long long */
Packit bbfece
#define btULongLong	28	/* unsigned long long */
Packit bbfece
#define btLong64	30	/* long (64-bit) */
Packit bbfece
#define btULong64	31	/* unsigned long (64-bit) */
Packit bbfece
#define btLongLong64	32	/* long long (64-bit) */
Packit bbfece
#define btULongLong64	33	/* unsigned long long (64-bit) */
Packit bbfece
#define btAdr64		34	/* address (64-bit) */
Packit bbfece
#define btInt64		35	/* int (64-bit) */
Packit bbfece
#define btUInt64	36	/* unsigned int (64-bit) */
Packit bbfece
#define btMax		64
Packit bbfece
Packit bbfece
#if (_MFG == _MIPS)
Packit bbfece
/* optimization type codes */
Packit bbfece
#define otNil		0
Packit bbfece
#define otReg		1	/* move var to reg */
Packit bbfece
#define otBlock		2	/* begin basic block */
Packit bbfece
#define	otProc		3	/* procedure */
Packit bbfece
#define otInline	4	/* inline procedure */
Packit bbfece
#define otEnd		5	/* whatever you started */
Packit bbfece
#define otMax		6	/* KEEP UP TO DATE */
Packit bbfece
#endif /* (_MFG == _MIPS) */