typedef struct StabSym StabSym;
typedef struct Stab Stab;	/* defined in mach.h */

struct StabSym
{
	char *name;
	uchar type;
	uchar other;
	u16int desc;
	u32int value;
};

enum
{
	EXT = 0x01,

	N_UNDEF = 0x00,
	N_ABS = 0x02,
	N_TEXT = 0x04,
	N_DATA = 0x06,
	N_BSS = 0x08,
	N_INDR = 0x0A,
	N_FN_SEQ = 0x0C,
	N_WEAKU = 0x0D,
	N_WEAKA = 0x0E,
	N_WEAKT = 0x0F,
	N_WEAKD = 0x10,
	N_WEAKB = 0x11,
	N_COMM = 0x12,
	N_SETA = 0x14,
	N_SETT = 0x16,

	N_GSYM = 0x20,
	N_FNAME = 0x22,
	N_FUN = 0x24,
	N_STSYM = 0x26,
	N_LCSYM = 0x28,
	N_MAIN = 0x2A,
	N_ROSYM = 0x2C,
	N_PC = 0x30,
	N_NSYMS = 0x32,
	N_NOMAP = 0x34,
	N_OBJ = 0x38,
	N_OPT = 0x3C,
	N_RSYM = 0x40,
	N_M2C = 0x42,
	N_SLINE = 0x44,
	N_DSLINE = 0x46,
	N_BSLINE = 0x48,
	N_BROWS = 0x48,
	N_DEFD = 0x4A,
	N_FLINE = 0x4C,
	N_EHDECL = 0x50,
	N_MOD2 = 0x50,
	N_CATCH = 0x54,
	N_SSYM = 0x60,
	N_ENDM = 0x62,
	N_SO = 0x64,
	N_ALIAS = 0x6C,
	N_LSYM = 0x80,
	N_BINCL = 0x82,
	N_SOL = 0x84,
	N_PSYM = 0xA0,
	N_EINCL = 0xA2,
	N_ENTRY = 0xA4,
	N_LBRAC = 0xC0,
	N_EXCL = 0xC2,
	N_SCOPE = 0xC4,
	N_RBRAC = 0xE0,
	N_BCOMM = 0xE2,
	N_ECOMM = 0xE4,
	N_ECOML = 0xE8,
	N_WITH = 0xEA,
	N_LENG = 0xFE
};

/*
 symbol descriptors

[(0-9\-]	variable on stack
:		C++ nested symbol
a		parameter by reference
b		based variable
c		constant
C		conformant array bound
		name of caught exception (N_CATCH)
d		fp register variable
D		fp parameter
f		file scope function
F		global function
G		global variable
i		register parameter?
I		nested procedure
J		nested function
L		label name
m		module
p		arg list parameter
pP
pF
P		register param (N_PSYM)
		proto of ref fun (N_FUN)
Q		static procedure
R		register param
r		register variable
S		file scope variable
s		local variable
t		type name
T		sue tag
v		param by reference
V		procedure scope static variable
x		conformant array
X		function return variable

*/

int stabsym(Stab*, int, StabSym*);

