libmach
diff --git a/src/libmach/stabs.h b/src/libmach/stabs.h
new file mode 100644
index 0000000..ad67cfe
--- /dev/null
+++ b/src/libmach/stabs.h
@@ -0,0 +1,117 @@
+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*);
+