133965Sjdp/* Declarations of internal format of MIPS ECOFF symbols. 233965Sjdp Originally contributed by MIPS Computer Systems and Third Eye Software. 333965Sjdp Changes contributed by Cygnus Support are in the public domain. 433965Sjdp 533965Sjdp This file is just aggregated with the files that make up the GNU 633965Sjdp release; it is not considered part of GAS, GDB, or other GNU 733965Sjdp programs. */ 833965Sjdp 933965Sjdp/* 1033965Sjdp * |-----------------------------------------------------------| 1133965Sjdp * | Copyright (c) 1992, 1991, 1990 MIPS Computer Systems, Inc.| 1233965Sjdp * | MIPS Computer Systems, Inc. grants reproduction and use | 1333965Sjdp * | rights to all parties, PROVIDED that this comment is | 1433965Sjdp * | maintained in the copy. | 1533965Sjdp * |-----------------------------------------------------------| 1633965Sjdp */ 1733965Sjdp#ifndef _SYM_H 1833965Sjdp#define _SYM_H 1933965Sjdp 2033965Sjdp/* (C) Copyright 1984 by Third Eye Software, Inc. 2133965Sjdp * 2233965Sjdp * Third Eye Software, Inc. grants reproduction and use rights to 2333965Sjdp * all parties, PROVIDED that this comment is maintained in the copy. 2433965Sjdp * 2533965Sjdp * Third Eye makes no claims about the applicability of this 2633965Sjdp * symbol table to a particular use. 2733965Sjdp */ 2833965Sjdp 2933965Sjdp/* 3033965Sjdp * This file contains the definition of the Third Eye Symbol Table. 3133965Sjdp * 3233965Sjdp * Symbols are assumed to be in 'encounter order' - i.e. the order that 3333965Sjdp * the things they represent were encountered by the compiler/assembler/loader. 3433965Sjdp * EXCEPT for globals! These are assumed to be bunched together, 3533965Sjdp * probably right after the last 'normal' symbol. Globals ARE sorted 3633965Sjdp * in ascending order. 3733965Sjdp * 3833965Sjdp * ----------------------------------------------------------------------- 3933965Sjdp * A brief word about Third Eye naming/use conventions: 4033965Sjdp * 4133965Sjdp * All arrays and index's are 0 based. 4233965Sjdp * All "ifooMax" values are the highest legal value PLUS ONE. This makes 4333965Sjdp * them good for allocating arrays, etc. All checks are "ifoo < ifooMax". 4433965Sjdp * 4533965Sjdp * "isym" Index into the SYMbol table. 4633965Sjdp * "ipd" Index into the Procedure Descriptor array. 4733965Sjdp * "ifd" Index into the File Descriptor array. 4833965Sjdp * "iss" Index into String Space. 4933965Sjdp * "cb" Count of Bytes. 5033965Sjdp * "rgPd" array whose domain is "0..ipdMax-1" and RanGe is PDR. 5133965Sjdp * "rgFd" array whose domain is "0..ifdMax-1" and RanGe is FDR. 5233965Sjdp */ 5333965Sjdp 5433965Sjdp 5533965Sjdp/* 5633965Sjdp * Symbolic Header (HDR) structure. 5733965Sjdp * As long as all the pointers are set correctly, 5833965Sjdp * we don't care WHAT order the various sections come out in! 5933965Sjdp * 6033965Sjdp * A file produced solely for the use of CDB will probably NOT have 6133965Sjdp * any instructions or data areas in it, as these are available 6233965Sjdp * in the original. 6333965Sjdp */ 6433965Sjdp 6533965Sjdptypedef struct { 6633965Sjdp short magic; /* to verify validity of the table */ 6733965Sjdp short vstamp; /* version stamp */ 6833965Sjdp long ilineMax; /* number of line number entries */ 6933965Sjdp bfd_vma cbLine; /* number of bytes for line number entries */ 7033965Sjdp bfd_vma cbLineOffset; /* offset to start of line number entries*/ 7133965Sjdp long idnMax; /* max index into dense number table */ 7233965Sjdp bfd_vma cbDnOffset; /* offset to start dense number table */ 7333965Sjdp long ipdMax; /* number of procedures */ 7433965Sjdp bfd_vma cbPdOffset; /* offset to procedure descriptor table */ 7533965Sjdp long isymMax; /* number of local symbols */ 7633965Sjdp bfd_vma cbSymOffset; /* offset to start of local symbols*/ 7733965Sjdp long ioptMax; /* max index into optimization symbol entries */ 7833965Sjdp bfd_vma cbOptOffset; /* offset to optimization symbol entries */ 7933965Sjdp long iauxMax; /* number of auxillary symbol entries */ 8033965Sjdp bfd_vma cbAuxOffset; /* offset to start of auxillary symbol entries*/ 8133965Sjdp long issMax; /* max index into local strings */ 8233965Sjdp bfd_vma cbSsOffset; /* offset to start of local strings */ 8333965Sjdp long issExtMax; /* max index into external strings */ 8433965Sjdp bfd_vma cbSsExtOffset; /* offset to start of external strings */ 8533965Sjdp long ifdMax; /* number of file descriptor entries */ 8633965Sjdp bfd_vma cbFdOffset; /* offset to file descriptor table */ 8733965Sjdp long crfd; /* number of relative file descriptor entries */ 8833965Sjdp bfd_vma cbRfdOffset; /* offset to relative file descriptor table */ 8933965Sjdp long iextMax; /* max index into external symbols */ 9033965Sjdp bfd_vma cbExtOffset; /* offset to start of external symbol entries*/ 9133965Sjdp /* If you add machine dependent fields, add them here */ 9233965Sjdp } HDRR, *pHDRR; 9333965Sjdp#define cbHDRR sizeof(HDRR) 9433965Sjdp#define hdrNil ((pHDRR)0) 9533965Sjdp 9633965Sjdp/* 9733965Sjdp * The FDR and PDR structures speed mapping of address <-> name. 9833965Sjdp * They are sorted in ascending memory order and are kept in 9933965Sjdp * memory by CDB at runtime. 10033965Sjdp */ 10133965Sjdp 10233965Sjdp/* 10333965Sjdp * File Descriptor 10433965Sjdp * 10533965Sjdp * There is one of these for EVERY FILE, whether compiled with 10633965Sjdp * full debugging symbols or not. The name of a file should be 10733965Sjdp * the path name given to the compiler. This allows the user 10833965Sjdp * to simply specify the names of the directories where the COMPILES 10933965Sjdp * were done, and we will be able to find their files. 11033965Sjdp * A field whose comment starts with "R - " indicates that it will be 11133965Sjdp * setup at runtime. 11233965Sjdp */ 11333965Sjdptypedef struct fdr { 11433965Sjdp bfd_vma adr; /* memory address of beginning of file */ 11533965Sjdp long rss; /* file name (of source, if known) */ 11633965Sjdp long issBase; /* file's string space */ 11733965Sjdp bfd_vma cbSs; /* number of bytes in the ss */ 11833965Sjdp long isymBase; /* beginning of symbols */ 11933965Sjdp long csym; /* count file's of symbols */ 12033965Sjdp long ilineBase; /* file's line symbols */ 12133965Sjdp long cline; /* count of file's line symbols */ 12233965Sjdp long ioptBase; /* file's optimization entries */ 12333965Sjdp long copt; /* count of file's optimization entries */ 12433965Sjdp unsigned short ipdFirst;/* start of procedures for this file */ 12533965Sjdp short cpd; /* count of procedures for this file */ 12633965Sjdp long iauxBase; /* file's auxiliary entries */ 12733965Sjdp long caux; /* count of file's auxiliary entries */ 12833965Sjdp long rfdBase; /* index into the file indirect table */ 12933965Sjdp long crfd; /* count file indirect entries */ 13033965Sjdp unsigned lang: 5; /* language for this file */ 13133965Sjdp unsigned fMerge : 1; /* whether this file can be merged */ 13233965Sjdp unsigned fReadin : 1; /* true if it was read in (not just created) */ 13333965Sjdp unsigned fBigendian : 1;/* if set, was compiled on big endian machine */ 13433965Sjdp /* aux's will be in compile host's sex */ 13533965Sjdp unsigned glevel : 2; /* level this file was compiled with */ 13633965Sjdp unsigned reserved : 22; /* reserved for future use */ 13733965Sjdp bfd_vma cbLineOffset; /* byte offset from header for this file ln's */ 13833965Sjdp bfd_vma cbLine; /* size of lines for this file */ 13933965Sjdp } FDR, *pFDR; 14033965Sjdp#define cbFDR sizeof(FDR) 14133965Sjdp#define fdNil ((pFDR)0) 14233965Sjdp#define ifdNil -1 14333965Sjdp#define ifdTemp 0 14433965Sjdp#define ilnNil -1 14533965Sjdp 14633965Sjdp 14733965Sjdp/* 14833965Sjdp * Procedure Descriptor 14933965Sjdp * 15033965Sjdp * There is one of these for EVERY TEXT LABEL. 15133965Sjdp * If a procedure is in a file with full symbols, then isym 15233965Sjdp * will point to the PROC symbols, else it will point to the 15333965Sjdp * global symbol for the label. 15433965Sjdp */ 15533965Sjdp 15633965Sjdptypedef struct pdr { 15733965Sjdp bfd_vma adr; /* memory address of start of procedure */ 15833965Sjdp long isym; /* start of local symbol entries */ 15933965Sjdp long iline; /* start of line number entries*/ 16033965Sjdp long regmask; /* save register mask */ 16133965Sjdp long regoffset; /* save register offset */ 16233965Sjdp long iopt; /* start of optimization symbol entries*/ 16333965Sjdp long fregmask; /* save floating point register mask */ 16433965Sjdp long fregoffset; /* save floating point register offset */ 16533965Sjdp long frameoffset; /* frame size */ 16633965Sjdp short framereg; /* frame pointer register */ 16733965Sjdp short pcreg; /* offset or reg of return pc */ 16833965Sjdp long lnLow; /* lowest line in the procedure */ 16933965Sjdp long lnHigh; /* highest line in the procedure */ 17033965Sjdp bfd_vma cbLineOffset; /* byte offset for this procedure from the fd base */ 17133965Sjdp /* These fields are new for 64 bit ECOFF. */ 17233965Sjdp unsigned gp_prologue : 8; /* byte size of GP prologue */ 17333965Sjdp unsigned gp_used : 1; /* true if the procedure uses GP */ 17433965Sjdp unsigned reg_frame : 1; /* true if register frame procedure */ 17533965Sjdp unsigned prof : 1; /* true if compiled with -pg */ 17633965Sjdp unsigned reserved : 13; /* reserved: must be zero */ 17733965Sjdp unsigned localoff : 8; /* offset of local variables from vfp */ 17833965Sjdp } PDR, *pPDR; 17933965Sjdp#define cbPDR sizeof(PDR) 18033965Sjdp#define pdNil ((pPDR) 0) 18133965Sjdp#define ipdNil -1 18233965Sjdp 18333965Sjdp/* 18433965Sjdp * The structure of the runtime procedure descriptor created by the loader 18533965Sjdp * for use by the static exception system. 18633965Sjdp */ 18733965Sjdp/* 18833965Sjdp * If 0'd out because exception_info chokes Visual C++ and because there 18933965Sjdp * don't seem to be any references to this structure elsewhere in gdb. 19033965Sjdp */ 19133965Sjdp#if 0 19233965Sjdptypedef struct runtime_pdr { 19333965Sjdp bfd_vma adr; /* memory address of start of procedure */ 19433965Sjdp long regmask; /* save register mask */ 19533965Sjdp long regoffset; /* save register offset */ 19633965Sjdp long fregmask; /* save floating point register mask */ 19733965Sjdp long fregoffset; /* save floating point register offset */ 19833965Sjdp long frameoffset; /* frame size */ 19933965Sjdp short framereg; /* frame pointer register */ 20033965Sjdp short pcreg; /* offset or reg of return pc */ 20133965Sjdp long irpss; /* index into the runtime string table */ 20233965Sjdp long reserved; 20333965Sjdp struct exception_info *exception_info;/* pointer to exception array */ 20433965Sjdp} RPDR, *pRPDR; 20533965Sjdp#define cbRPDR sizeof(RPDR) 20633965Sjdp#define rpdNil ((pRPDR) 0) 20733965Sjdp#endif 20833965Sjdp 20933965Sjdp/* 21033965Sjdp * Line Numbers 21133965Sjdp * 21233965Sjdp * Line Numbers are segregated from the normal symbols because they 21333965Sjdp * are [1] smaller , [2] are of no interest to your 21433965Sjdp * average loader, and [3] are never needed in the middle of normal 21533965Sjdp * scanning and therefore slow things down. 21633965Sjdp * 21733965Sjdp * By definition, the first LINER for any given procedure will have 21833965Sjdp * the first line of a procedure and represent the first address. 21933965Sjdp */ 22033965Sjdp 22133965Sjdptypedef long LINER, *pLINER; 22233965Sjdp#define lineNil ((pLINER)0) 22333965Sjdp#define cbLINER sizeof(LINER) 22433965Sjdp#define ilineNil -1 22533965Sjdp 22633965Sjdp 22733965Sjdp 22833965Sjdp/* 22933965Sjdp * The Symbol Structure (GFW, to those who Know!) 23033965Sjdp */ 23133965Sjdp 23233965Sjdptypedef struct { 23333965Sjdp long iss; /* index into String Space of name */ 23433965Sjdp bfd_vma value; /* value of symbol */ 23533965Sjdp unsigned st : 6; /* symbol type */ 23633965Sjdp unsigned sc : 5; /* storage class - text, data, etc */ 23733965Sjdp unsigned reserved : 1; /* reserved */ 23833965Sjdp unsigned index : 20; /* index into sym/aux table */ 23933965Sjdp } SYMR, *pSYMR; 24033965Sjdp#define symNil ((pSYMR)0) 24133965Sjdp#define cbSYMR sizeof(SYMR) 24233965Sjdp#define isymNil -1 24333965Sjdp#define indexNil 0xfffff 24433965Sjdp#define issNil -1 24533965Sjdp#define issNull 0 24633965Sjdp 24733965Sjdp 24833965Sjdp/* The following converts a memory resident string to an iss. 24933965Sjdp * This hack is recognized in SbFIss, in sym.c of the debugger. 25033965Sjdp */ 25133965Sjdp#define IssFSb(sb) (0x80000000 | ((unsigned long)(sb))) 25233965Sjdp 25333965Sjdp/* E X T E R N A L S Y M B O L R E C O R D 25433965Sjdp * 25533965Sjdp * Same as the SYMR except it contains file context to determine where 25633965Sjdp * the index is. 25733965Sjdp */ 25833965Sjdptypedef struct ecoff_extr { 25933965Sjdp unsigned jmptbl:1; /* symbol is a jump table entry for shlibs */ 26033965Sjdp unsigned cobol_main:1; /* symbol is a cobol main procedure */ 26133965Sjdp unsigned weakext:1; /* symbol is weak external */ 26233965Sjdp unsigned reserved:13; /* reserved for future use */ 26333965Sjdp int ifd; /* where the iss and index fields point into */ 26433965Sjdp SYMR asym; /* symbol for the external */ 26533965Sjdp } EXTR, *pEXTR; 26633965Sjdp#define extNil ((pEXTR)0) 26733965Sjdp#define cbEXTR sizeof(EXTR) 26833965Sjdp 26933965Sjdp 27033965Sjdp/* A U X I L L A R Y T Y P E I N F O R M A T I O N */ 27133965Sjdp 27233965Sjdp/* 27333965Sjdp * Type Information Record 27433965Sjdp */ 27533965Sjdptypedef struct { 27633965Sjdp unsigned fBitfield : 1; /* set if bit width is specified */ 27733965Sjdp unsigned continued : 1; /* indicates additional TQ info in next AUX */ 27833965Sjdp unsigned bt : 6; /* basic type */ 27933965Sjdp unsigned tq4 : 4; 28033965Sjdp unsigned tq5 : 4; 28133965Sjdp /* ---- 16 bit boundary ---- */ 28233965Sjdp unsigned tq0 : 4; 28333965Sjdp unsigned tq1 : 4; /* 6 type qualifiers - tqPtr, etc. */ 28433965Sjdp unsigned tq2 : 4; 28533965Sjdp unsigned tq3 : 4; 28633965Sjdp } TIR, *pTIR; 28733965Sjdp#define cbTIR sizeof(TIR) 28833965Sjdp#define tiNil ((pTIR)0) 28933965Sjdp#define itqMax 6 29033965Sjdp 29133965Sjdp/* 29233965Sjdp * Relative symbol record 29333965Sjdp * 29433965Sjdp * If the rfd field is 4095, the index field indexes into the global symbol 29533965Sjdp * table. 29633965Sjdp */ 29733965Sjdp 29833965Sjdptypedef struct { 29933965Sjdp unsigned rfd : 12; /* index into the file indirect table */ 30033965Sjdp unsigned index : 20; /* index int sym/aux/iss tables */ 30133965Sjdp } RNDXR, *pRNDXR; 30233965Sjdp#define cbRNDXR sizeof(RNDXR) 30333965Sjdp#define rndxNil ((pRNDXR)0) 30433965Sjdp 30533965Sjdp/* dense numbers or sometimes called block numbers are stored in this type, 30633965Sjdp * a rfd of 0xffffffff is an index into the global table. 30733965Sjdp */ 30833965Sjdptypedef struct { 30933965Sjdp unsigned long rfd; /* index into the file table */ 31033965Sjdp unsigned long index; /* index int sym/aux/iss tables */ 31133965Sjdp } DNR, *pDNR; 31233965Sjdp#define cbDNR sizeof(DNR) 31333965Sjdp#define dnNil ((pDNR)0) 31433965Sjdp 31533965Sjdp 31633965Sjdp 31733965Sjdp/* 31833965Sjdp * Auxillary information occurs only if needed. 31933965Sjdp * It ALWAYS occurs in this order when present. 32033965Sjdp 32133965Sjdp isymMac used by stProc only 32233965Sjdp TIR type info 32333965Sjdp TIR additional TQ info (if first TIR was not enough) 32433965Sjdp rndx if (bt == btStruct,btUnion,btEnum,btSet,btRange, 32533965Sjdp btTypedef): 32633965Sjdp rsym.index == iaux for btSet or btRange 32733965Sjdp else rsym.index == isym 32833965Sjdp dimLow btRange, btSet 32933965Sjdp dimMac btRange, btSet 33033965Sjdp rndx0 As many as there are tq arrays 33133965Sjdp dimLow0 33233965Sjdp dimHigh0 33333965Sjdp ... 33433965Sjdp rndxMax-1 33533965Sjdp dimLowMax-1 33633965Sjdp dimHighMax-1 33733965Sjdp width in bits if (bit field), width in bits. 33833965Sjdp */ 33933965Sjdp#define cAuxMax (6 + (idimMax*3)) 34033965Sjdp 34133965Sjdp/* a union of all possible info in the AUX universe */ 34233965Sjdptypedef union { 34333965Sjdp TIR ti; /* type information record */ 34433965Sjdp RNDXR rndx; /* relative index into symbol table */ 34533965Sjdp long dnLow; /* low dimension */ 34633965Sjdp long dnHigh; /* high dimension */ 34733965Sjdp long isym; /* symbol table index (end of proc) */ 34833965Sjdp long iss; /* index into string space (not used) */ 34933965Sjdp long width; /* width for non-default sized struc fields */ 35033965Sjdp long count; /* count of ranges for variant arm */ 35133965Sjdp } AUXU, *pAUXU; 35233965Sjdp#define cbAUXU sizeof(AUXU) 35333965Sjdp#define auxNil ((pAUXU)0) 35433965Sjdp#define iauxNil -1 35533965Sjdp 35633965Sjdp 35733965Sjdp/* 35833965Sjdp * Optimization symbols 35933965Sjdp * 36033965Sjdp * Optimization symbols contain some overlap information with the normal 36133965Sjdp * symbol table. In particular, the proc information 36233965Sjdp * is somewhat redundant but necessary to easily find the other information 36333965Sjdp * present. 36433965Sjdp * 36533965Sjdp * All of the offsets are relative to the beginning of the last otProc 36633965Sjdp */ 36733965Sjdp 36833965Sjdptypedef struct { 36933965Sjdp unsigned ot: 8; /* optimization type */ 37033965Sjdp unsigned value: 24; /* address where we are moving it to */ 37133965Sjdp RNDXR rndx; /* points to a symbol or opt entry */ 37233965Sjdp unsigned long offset; /* relative offset this occured */ 37333965Sjdp } OPTR, *pOPTR; 37433965Sjdp#define optNil ((pOPTR) 0) 37533965Sjdp#define cbOPTR sizeof(OPTR) 37633965Sjdp#define ioptNil -1 37733965Sjdp 37833965Sjdp/* 37933965Sjdp * File Indirect 38033965Sjdp * 38133965Sjdp * When a symbol is referenced across files the following procedure is used: 38233965Sjdp * 1) use the file index to get the File indirect entry. 38333965Sjdp * 2) use the file indirect entry to get the File descriptor. 38433965Sjdp * 3) add the sym index to the base of that file's sym table 38533965Sjdp * 38633965Sjdp */ 38733965Sjdp 38833965Sjdptypedef long RFDT, *pRFDT; 38933965Sjdp#define cbRFDT sizeof(RFDT) 39033965Sjdp#define rfdNil -1 39133965Sjdp 39233965Sjdp/* 39333965Sjdp * The file indirect table in the mips loader is known as an array of FITs. 39433965Sjdp * This is done to keep the code in the loader readable in the area where 39533965Sjdp * these tables are merged. Note this is only a name change. 39633965Sjdp */ 39733965Sjdptypedef long FIT, *pFIT; 39833965Sjdp#define cbFIT sizeof(FIT) 39933965Sjdp#define ifiNil -1 40033965Sjdp#define fiNil ((pFIT) 0) 40133965Sjdp 40233965Sjdp#ifdef _LANGUAGE_PASCAL 40333965Sjdp#define ifdNil -1 40433965Sjdp#define ilnNil -1 40533965Sjdp#define ipdNil -1 40633965Sjdp#define ilineNil -1 40733965Sjdp#define isymNil -1 40833965Sjdp#define indexNil 16#fffff 40933965Sjdp#define issNil -1 41033965Sjdp#define issNull 0 41133965Sjdp#define itqMax 6 41233965Sjdp#define iauxNil -1 41333965Sjdp#define ioptNil -1 41433965Sjdp#define rfdNil -1 41533965Sjdp#define ifiNil -1 41633965Sjdp#endif /* _LANGUAGE_PASCAL */ 41733965Sjdp 41833965Sjdp 41933965Sjdp/* Dense numbers 42033965Sjdp * 42133965Sjdp * Rather than use file index, symbol index pairs to represent symbols 42233965Sjdp * and globals, we use dense number so that they can be easily embeded 42333965Sjdp * in intermediate code and the programs that process them can 42433965Sjdp * use direct access tabls instead of hash table (which would be 42533965Sjdp * necesary otherwise because of the sparse name space caused by 42633965Sjdp * file index, symbol index pairs. Dense number are represented 42733965Sjdp * by RNDXRs. 42833965Sjdp */ 42933965Sjdp 43033965Sjdp/* 43133965Sjdp * The following table defines the meaning of each SYM field as 43233965Sjdp * a function of the "st". (scD/B == scData OR scBss) 43333965Sjdp * 43433965Sjdp * Note: the value "isymMac" is used by symbols that have the concept 43533965Sjdp * of enclosing a block of related information. This value is the 43633965Sjdp * isym of the first symbol AFTER the end associated with the primary 43733965Sjdp * symbol. For example if a procedure was at isym==90 and had an 43833965Sjdp * isymMac==155, the associated end would be at isym==154, and the 43933965Sjdp * symbol at 155 would probably (although not necessarily) be the 44033965Sjdp * symbol for the next procedure. This allows rapid skipping over 44133965Sjdp * internal information of various sorts. "stEnd"s ALWAYS have the 44233965Sjdp * isym of the primary symbol that started the block. 44333965Sjdp * 44433965Sjdp 44533965SjdpST SC VALUE INDEX 44633965Sjdp-------- ------ -------- ------ 44733965SjdpstFile scText address isymMac 44833965SjdpstLabel scText address --- 44933965SjdpstGlobal scD/B address iaux 45033965SjdpstStatic scD/B address iaux 45133965SjdpstParam scAbs offset iaux 45233965SjdpstLocal scAbs offset iaux 45333965SjdpstProc scText address iaux (isymMac is first AUX) 45433965SjdpstStaticProc scText address iaux (isymMac is first AUX) 45533965Sjdp 45633965SjdpstMember scNil ordinal --- (if member of enum) 45733965Sjdp (mipsread thinks the case below has a bit, not byte, offset.) 45833965SjdpstMember scNil byte offset iaux (if member of struct/union) 45933965SjdpstMember scBits bit offset iaux (bit field spec) 46033965Sjdp 46133965SjdpstBlock scText address isymMac (text block) 46233965Sjdp (the code seems to think that rather than scNil, we see scInfo for 46333965Sjdp the two cases below.) 46433965SjdpstBlock scNil cb isymMac (struct/union member define) 46533965SjdpstBlock scNil cMembers isymMac (enum member define) 46633965Sjdp 46733965Sjdp (New types added by SGI to simplify things:) 46833965SjdpstStruct scInfo cb isymMac (struct type define) 46933965SjdpstUnion scInfo cb isymMac (union type define) 47033965SjdpstEnum scInfo cMembers isymMac (enum type define) 47133965Sjdp 47233965SjdpstEnd scText address isymStart 47333965SjdpstEnd scNil ------- isymStart (struct/union/enum) 47433965Sjdp 47533965SjdpstTypedef scNil ------- iaux 47633965SjdpstRegReloc sc??? value old register number 47733965SjdpstForward sc??? new address isym to original symbol 47833965Sjdp 47933965SjdpstConstant scInfo value --- (scalar) 48033965SjdpstConstant scInfo iss --- (complex, e.g. string) 48133965Sjdp 48233965Sjdp * 48333965Sjdp */ 48433965Sjdp#endif 485