diff options
| author | Rich Felker <dalias@aerifal.cx> | 2011-02-12 00:22:29 -0500 | 
|---|---|---|
| committer | Rich Felker <dalias@aerifal.cx> | 2011-02-12 00:22:29 -0500 | 
| commit | 0b44a0315b47dd8eced9f3b7f31580cf14bbfc01 (patch) | |
| tree | 6eaef0d8a720fa3da580de87b647fff796fe80b3 /include | |
| download | musl-0b44a0315b47dd8eced9f3b7f31580cf14bbfc01.tar.gz | |
initial check-in, version 0.5.0v0.5.0
Diffstat (limited to 'include')
154 files changed, 11485 insertions, 0 deletions
| diff --git a/include/alloca.h b/include/alloca.h new file mode 100644 index 00000000..ac78e460 --- /dev/null +++ b/include/alloca.h @@ -0,0 +1,9 @@ +#ifndef	_ALLOCA_H +#define	_ALLOCA_H + +#define	__NEED_size_t +#include <bits/alltypes.h> + +void *alloca(size_t); + +#endif diff --git a/include/arpa/inet.h b/include/arpa/inet.h new file mode 100644 index 00000000..93427130 --- /dev/null +++ b/include/arpa/inet.h @@ -0,0 +1,33 @@ +#ifndef _ARPA_INET_H +#define	_ARPA_INET_H + +#include <netinet/in.h> +#include <inttypes.h> + +#define __NEED_socklen_t +#define __NEED_in_addr_t +#define __NEED_in_port_t +#define __NEED_uint16_t +#define __NEED_uint32_t +#define __NEED_struct_in_addr + +#include <bits/alltypes.h> + +uint32_t htonl(uint32_t); +uint16_t htons(uint16_t); +uint32_t ntohl(uint32_t); +uint16_t ntohs(uint16_t); + +in_addr_t inet_addr (const char *); +char *inet_ntoa (struct in_addr); +int inet_pton (int, const char *, void *); +const char *inet_ntop (int, const void *, char *, socklen_t); + +int inet_aton (const char *, struct in_addr *); /* nonstandard but widely used */ + +#undef INET_ADDRSTRLEN +#undef INET6_ADDRSTRLEN +#define INET_ADDRSTRLEN  16 +#define INET6_ADDRSTRLEN 46 + +#endif diff --git a/include/arpa/nameser.h b/include/arpa/nameser.h new file mode 100644 index 00000000..0f854600 --- /dev/null +++ b/include/arpa/nameser.h @@ -0,0 +1,465 @@ +#ifndef _ARPA_NAMESER_H_ +#define _ARPA_NAMESER_H_ + +#define __NAMESER	19991006 +#define NS_PACKETSZ	512 +#define NS_MAXDNAME	1025 +#define NS_MAXMSG	65535 +#define NS_MAXCDNAME	255 +#define NS_MAXLABEL	63 +#define NS_HFIXEDSZ	12 +#define NS_QFIXEDSZ	4 +#define NS_RRFIXEDSZ	10 +#define NS_INT32SZ	4 +#define NS_INT16SZ	2 +#define NS_INT8SZ	1 +#define NS_INADDRSZ	4 +#define NS_IN6ADDRSZ	16 +#define NS_CMPRSFLGS	0xc0 +#define NS_DEFAULTPORT	53 + +typedef enum __ns_sect { +	ns_s_qd = 0, +	ns_s_zn = 0, +	ns_s_an = 1, +	ns_s_pr = 1, +	ns_s_ns = 2, +	ns_s_ud = 2, +	ns_s_ar = 3, +	ns_s_max = 4 +} ns_sect; + +typedef struct __ns_msg { +	const unsigned char *_msg, *_eom; +	uint16_t _id, _flags, _counts[ns_s_max]; +	const unsigned char *_sections[ns_s_max]; +	ns_sect _sect; +	int _rrnum; +	const unsigned char *_msg_ptr; +} ns_msg; + +struct _ns_flagdata {  int mask, shift;  }; +extern const struct _ns_flagdata _ns_flagdata[]; + +#define ns_msg_id(handle) ((handle)._id + 0) +#define ns_msg_base(handle) ((handle)._msg + 0) +#define ns_msg_end(handle) ((handle)._eom + 0) +#define ns_msg_size(handle) ((handle)._eom - (handle)._msg) +#define ns_msg_count(handle, section) ((handle)._counts[section] + 0) + +typedef	struct __ns_rr { +	char		name[NS_MAXDNAME]; +	uint16_t	type; +	uint16_t	rr_class; +	uint32_t	ttl; +	uint16_t	rdlength; +	const unsigned char *rdata; +} ns_rr; + +#define ns_rr_name(rr)	(((rr).name[0] != '\0') ? (rr).name : ".") +#define ns_rr_type(rr)	((ns_type)((rr).type + 0)) +#define ns_rr_class(rr)	((ns_class)((rr).rr_class + 0)) +#define ns_rr_ttl(rr)	((rr).ttl + 0) +#define ns_rr_rdlen(rr)	((rr).rdlength + 0) +#define ns_rr_rdata(rr)	((rr).rdata + 0) + +typedef enum __ns_flag { +	ns_f_qr, +	ns_f_opcode, +	ns_f_aa, +	ns_f_tc, +	ns_f_rd, +	ns_f_ra, +	ns_f_z, +	ns_f_ad, +	ns_f_cd, +	ns_f_rcode, +	ns_f_max +} ns_flag; + +typedef enum __ns_opcode { +	ns_o_query = 0, +	ns_o_iquery = 1, +	ns_o_status = 2, +	ns_o_notify = 4, +	ns_o_update = 5, +	ns_o_max = 6 +} ns_opcode; + +typedef	enum __ns_rcode { +	ns_r_noerror = 0, +	ns_r_formerr = 1, +	ns_r_servfail = 2, +	ns_r_nxdomain = 3, +	ns_r_notimpl = 4, +	ns_r_refused = 5, +	ns_r_yxdomain = 6, +	ns_r_yxrrset = 7, +	ns_r_nxrrset = 8, +	ns_r_notauth = 9, +	ns_r_notzone = 10, +	ns_r_max = 11, +	ns_r_badvers = 16, +	ns_r_badsig = 16, +	ns_r_badkey = 17, +	ns_r_badtime = 18 +} ns_rcode; + +typedef enum __ns_update_operation { +	ns_uop_delete = 0, +	ns_uop_add = 1, +	ns_uop_max = 2 +} ns_update_operation; + +struct ns_tsig_key { +        char name[NS_MAXDNAME], alg[NS_MAXDNAME]; +        unsigned char *data; +        int len; +}; +typedef struct ns_tsig_key ns_tsig_key; + +struct ns_tcp_tsig_state { +	int counter; +	struct dst_key *key; +	void *ctx; +	unsigned char sig[NS_PACKETSZ]; +	int siglen; +}; +typedef struct ns_tcp_tsig_state ns_tcp_tsig_state; + +#define NS_TSIG_FUDGE 300 +#define NS_TSIG_TCP_COUNT 100 +#define NS_TSIG_ALG_HMAC_MD5 "HMAC-MD5.SIG-ALG.REG.INT" + +#define NS_TSIG_ERROR_NO_TSIG -10 +#define NS_TSIG_ERROR_NO_SPACE -11 +#define NS_TSIG_ERROR_FORMERR -12 + +typedef enum __ns_type { +	ns_t_invalid = 0, +	ns_t_a = 1, +	ns_t_ns = 2, +	ns_t_md = 3, +	ns_t_mf = 4, +	ns_t_cname = 5, +	ns_t_soa = 6, +	ns_t_mb = 7, +	ns_t_mg = 8, +	ns_t_mr = 9, +	ns_t_null = 10, +	ns_t_wks = 11, +	ns_t_ptr = 12, +	ns_t_hinfo = 13, +	ns_t_minfo = 14, +	ns_t_mx = 15, +	ns_t_txt = 16, +	ns_t_rp = 17, +	ns_t_afsdb = 18, +	ns_t_x25 = 19, +	ns_t_isdn = 20, +	ns_t_rt = 21, +	ns_t_nsap = 22, +	ns_t_nsap_ptr = 23, +	ns_t_sig = 24, +	ns_t_key = 25, +	ns_t_px = 26, +	ns_t_gpos = 27, +	ns_t_aaaa = 28, +	ns_t_loc = 29, +	ns_t_nxt = 30, +	ns_t_eid = 31, +	ns_t_nimloc = 32, +	ns_t_srv = 33, +	ns_t_atma = 34, +	ns_t_naptr = 35, +	ns_t_kx = 36, +	ns_t_cert = 37, +	ns_t_a6 = 38, +	ns_t_dname = 39, +	ns_t_sink = 40, +	ns_t_opt = 41, +	ns_t_apl = 42, +	ns_t_tkey = 249, +	ns_t_tsig = 250, +	ns_t_ixfr = 251, +	ns_t_axfr = 252, +	ns_t_mailb = 253, +	ns_t_maila = 254, +	ns_t_any = 255, +	ns_t_zxfr = 256, +	ns_t_max = 65536 +} ns_type; + +#define	ns_t_qt_p(t) (ns_t_xfr_p(t) || (t) == ns_t_any || \ +		      (t) == ns_t_mailb || (t) == ns_t_maila) +#define	ns_t_mrr_p(t) ((t) == ns_t_tsig || (t) == ns_t_opt) +#define ns_t_rr_p(t) (!ns_t_qt_p(t) && !ns_t_mrr_p(t)) +#define ns_t_udp_p(t) ((t) != ns_t_axfr && (t) != ns_t_zxfr) +#define ns_t_xfr_p(t) ((t) == ns_t_axfr || (t) == ns_t_ixfr || \ +		       (t) == ns_t_zxfr) + +typedef enum __ns_class { +	ns_c_invalid = 0, +	ns_c_in = 1, +	ns_c_2 = 2, +	ns_c_chaos = 3, +	ns_c_hs = 4, +	ns_c_none = 254, +	ns_c_any = 255, +	ns_c_max = 65536 +} ns_class; + +typedef enum __ns_key_types { +	ns_kt_rsa = 1, +	ns_kt_dh  = 2, +	ns_kt_dsa = 3, +	ns_kt_private = 254 +} ns_key_types; + +typedef enum __ns_cert_types { +	cert_t_pkix = 1, +	cert_t_spki = 2, +	cert_t_pgp  = 3, +	cert_t_url  = 253, +	cert_t_oid  = 254 +} ns_cert_types; + +#define	NS_KEY_TYPEMASK		0xC000 +#define	NS_KEY_TYPE_AUTH_CONF	0x0000 +#define	NS_KEY_TYPE_CONF_ONLY	0x8000 +#define	NS_KEY_TYPE_AUTH_ONLY	0x4000 +#define	NS_KEY_TYPE_NO_KEY	0xC000 +#define	NS_KEY_NO_AUTH		0x8000 +#define	NS_KEY_NO_CONF		0x4000 +#define	NS_KEY_RESERVED2	0x2000 +#define	NS_KEY_EXTENDED_FLAGS	0x1000 +#define	NS_KEY_RESERVED4	0x0800 +#define	NS_KEY_RESERVED5	0x0400 +#define	NS_KEY_NAME_TYPE	0x0300 +#define	NS_KEY_NAME_USER	0x0000 +#define	NS_KEY_NAME_ENTITY	0x0200 +#define	NS_KEY_NAME_ZONE	0x0100 +#define	NS_KEY_NAME_RESERVED	0x0300 +#define	NS_KEY_RESERVED8	0x0080 +#define	NS_KEY_RESERVED9	0x0040 +#define	NS_KEY_RESERVED10	0x0020 +#define	NS_KEY_RESERVED11	0x0010 +#define	NS_KEY_SIGNATORYMASK	0x000F +#define	NS_KEY_RESERVED_BITMASK ( NS_KEY_RESERVED2 | \ +				  NS_KEY_RESERVED4 | \ +				  NS_KEY_RESERVED5 | \ +				  NS_KEY_RESERVED8 | \ +				  NS_KEY_RESERVED9 | \ +				  NS_KEY_RESERVED10 | \ +				  NS_KEY_RESERVED11 ) +#define NS_KEY_RESERVED_BITMASK2 0xFFFF +#define	NS_ALG_MD5RSA		1 +#define	NS_ALG_DH               2 +#define	NS_ALG_DSA              3 +#define	NS_ALG_DSS              NS_ALG_DSA +#define	NS_ALG_EXPIRE_ONLY	253 +#define	NS_ALG_PRIVATE_OID	254 + +#define NS_KEY_PROT_TLS         1 +#define NS_KEY_PROT_EMAIL       2 +#define NS_KEY_PROT_DNSSEC      3 +#define NS_KEY_PROT_IPSEC       4 +#define NS_KEY_PROT_ANY		255 + +#define	NS_MD5RSA_MIN_BITS	 512 +#define	NS_MD5RSA_MAX_BITS	4096 +#define	NS_MD5RSA_MAX_BYTES	((NS_MD5RSA_MAX_BITS+7/8)*2+3) +#define	NS_MD5RSA_MAX_BASE64	(((NS_MD5RSA_MAX_BYTES+2)/3)*4) +#define NS_MD5RSA_MIN_SIZE	((NS_MD5RSA_MIN_BITS+7)/8) +#define NS_MD5RSA_MAX_SIZE	((NS_MD5RSA_MAX_BITS+7)/8) + +#define NS_DSA_SIG_SIZE         41 +#define NS_DSA_MIN_SIZE         213 +#define NS_DSA_MAX_BYTES        405 + +#define	NS_SIG_TYPE	0 +#define	NS_SIG_ALG	2 +#define	NS_SIG_LABELS	3 +#define	NS_SIG_OTTL	4 +#define	NS_SIG_EXPIR	8 +#define	NS_SIG_SIGNED	12 +#define	NS_SIG_FOOT	16 +#define	NS_SIG_SIGNER	18 +#define	NS_NXT_BITS 8 +#define	NS_NXT_BIT_SET(  n,p) (p[(n)/NS_NXT_BITS] |=  (0x80>>((n)%NS_NXT_BITS))) +#define	NS_NXT_BIT_CLEAR(n,p) (p[(n)/NS_NXT_BITS] &= ~(0x80>>((n)%NS_NXT_BITS))) +#define	NS_NXT_BIT_ISSET(n,p) (p[(n)/NS_NXT_BITS] &   (0x80>>((n)%NS_NXT_BITS))) +#define NS_NXT_MAX 127 + +#define NS_OPT_DNSSEC_OK        0x8000U +#define NS_OPT_NSID		3 + +#define NS_GET16(s, cp) do { \ +	register const unsigned char *t_cp = (const unsigned char *)(cp); \ +	(s) = ((uint16_t)t_cp[0] << 8) \ +	    | ((uint16_t)t_cp[1]) \ +	    ; \ +	(cp) += NS_INT16SZ; \ +} while (0) + +#define NS_GET32(l, cp) do { \ +	register const unsigned char *t_cp = (const unsigned char *)(cp); \ +	(l) = ((uint32_t)t_cp[0] << 24) \ +	    | ((uint32_t)t_cp[1] << 16) \ +	    | ((uint32_t)t_cp[2] << 8) \ +	    | ((uint32_t)t_cp[3]) \ +	    ; \ +	(cp) += NS_INT32SZ; \ +} while (0) + +#define NS_PUT16(s, cp) do { \ +	register uint16_t t_s = (uint16_t)(s); \ +	register unsigned char *t_cp = (unsigned char *)(cp); \ +	*t_cp++ = t_s >> 8; \ +	*t_cp   = t_s; \ +	(cp) += NS_INT16SZ; \ +} while (0) + +#define NS_PUT32(l, cp) do { \ +	register uint32_t t_l = (uint32_t)(l); \ +	register unsigned char *t_cp = (unsigned char *)(cp); \ +	*t_cp++ = t_l >> 24; \ +	*t_cp++ = t_l >> 16; \ +	*t_cp++ = t_l >> 8; \ +	*t_cp   = t_l; \ +	(cp) += NS_INT32SZ; \ +} while (0) + + + + +#define	__BIND		19950621 + +typedef struct { +	unsigned	id :16; +#if __BYTE_ORDER == __BIG_ENDIAN +	unsigned	qr: 1; +	unsigned	opcode: 4; +	unsigned	aa: 1; +	unsigned	tc: 1; +	unsigned	rd: 1; +	unsigned	ra: 1; +	unsigned	unused :1; +	unsigned	ad: 1; +	unsigned	cd: 1; +	unsigned	rcode :4; +#else +	unsigned	rd :1; +	unsigned	tc :1; +	unsigned	aa :1; +	unsigned	opcode :4; +	unsigned	qr :1; +	unsigned	rcode :4; +	unsigned	cd: 1; +	unsigned	ad: 1; +	unsigned	unused :1; +	unsigned	ra :1; +#endif +	unsigned	qdcount :16; +	unsigned	ancount :16; +	unsigned	nscount :16; +	unsigned	arcount :16; +} HEADER; + +#define PACKETSZ	NS_PACKETSZ +#define MAXDNAME	NS_MAXDNAME +#define MAXCDNAME	NS_MAXCDNAME +#define MAXLABEL	NS_MAXLABEL +#define	HFIXEDSZ	NS_HFIXEDSZ +#define QFIXEDSZ	NS_QFIXEDSZ +#define RRFIXEDSZ	NS_RRFIXEDSZ +#define	INT32SZ		NS_INT32SZ +#define	INT16SZ		NS_INT16SZ +#define INT8SZ		NS_INT8SZ +#define	INADDRSZ	NS_INADDRSZ +#define	IN6ADDRSZ	NS_IN6ADDRSZ +#define	INDIR_MASK	NS_CMPRSFLGS +#define NAMESERVER_PORT	NS_DEFAULTPORT + +#define S_ZONE		ns_s_zn +#define S_PREREQ	ns_s_pr +#define S_UPDATE	ns_s_ud +#define S_ADDT		ns_s_ar + +#define QUERY		ns_o_query +#define IQUERY		ns_o_iquery +#define STATUS		ns_o_status +#define	NS_NOTIFY_OP	ns_o_notify +#define	NS_UPDATE_OP	ns_o_update + +#define NOERROR		ns_r_noerror +#define FORMERR		ns_r_formerr +#define SERVFAIL	ns_r_servfail +#define NXDOMAIN	ns_r_nxdomain +#define NOTIMP		ns_r_notimpl +#define REFUSED		ns_r_refused +#define YXDOMAIN	ns_r_yxdomain +#define YXRRSET		ns_r_yxrrset +#define NXRRSET		ns_r_nxrrset +#define NOTAUTH		ns_r_notauth +#define NOTZONE		ns_r_notzone + +#define DELETE		ns_uop_delete +#define ADD		ns_uop_add + +#define T_A		ns_t_a +#define T_NS		ns_t_ns +#define T_MD		ns_t_md +#define T_MF		ns_t_mf +#define T_CNAME		ns_t_cname +#define T_SOA		ns_t_soa +#define T_MB		ns_t_mb +#define T_MG		ns_t_mg +#define T_MR		ns_t_mr +#define T_NULL		ns_t_null +#define T_WKS		ns_t_wks +#define T_PTR		ns_t_ptr +#define T_HINFO		ns_t_hinfo +#define T_MINFO		ns_t_minfo +#define T_MX		ns_t_mx +#define T_TXT		ns_t_txt +#define	T_RP		ns_t_rp +#define T_AFSDB		ns_t_afsdb +#define T_X25		ns_t_x25 +#define T_ISDN		ns_t_isdn +#define T_RT		ns_t_rt +#define T_NSAP		ns_t_nsap +#define T_NSAP_PTR	ns_t_nsap_ptr +#define	T_SIG		ns_t_sig +#define	T_KEY		ns_t_key +#define	T_PX		ns_t_px +#define	T_GPOS		ns_t_gpos +#define	T_AAAA		ns_t_aaaa +#define	T_LOC		ns_t_loc +#define	T_NXT		ns_t_nxt +#define	T_EID		ns_t_eid +#define	T_NIMLOC	ns_t_nimloc +#define	T_SRV		ns_t_srv +#define T_ATMA		ns_t_atma +#define T_NAPTR		ns_t_naptr +#define T_A6		ns_t_a6 +#define T_DNAME		ns_t_dname +#define	T_TSIG		ns_t_tsig +#define	T_IXFR		ns_t_ixfr +#define T_AXFR		ns_t_axfr +#define T_MAILB		ns_t_mailb +#define T_MAILA		ns_t_maila +#define T_ANY		ns_t_any + +#define C_IN		ns_c_in +#define C_CHAOS		ns_c_chaos +#define C_HS		ns_c_hs +#define C_NONE		ns_c_none +#define C_ANY		ns_c_any + +#define	GETSHORT		NS_GET16 +#define	GETLONG			NS_GET32 +#define	PUTSHORT		NS_PUT16 +#define	PUTLONG			NS_PUT32 + +#endif diff --git a/include/arpa/telnet.h b/include/arpa/telnet.h new file mode 100644 index 00000000..e2ad9742 --- /dev/null +++ b/include/arpa/telnet.h @@ -0,0 +1,251 @@ +#ifndef _ARPA_TELNET_H +#define	_ARPA_TELNET_H + +#define	IAC	255 +#define	DONT	254 +#define	DO	253 +#define	WONT	252 +#define	WILL	251 +#define	SB	250 +#define	GA	249 +#define	EL	248 +#define	EC	247 +#define	AYT	246 +#define	AO	245 +#define	IP	244 +#define	BREAK	243 +#define	DM	242 +#define	NOP	241 +#define	SE	240 +#define EOR     239 +#define	ABORT	238 +#define	SUSP	237 +#define	xEOF	236 + +#define SYNCH	242 + +#define telcmds ((char [][6]){ "EOF", "SUSP", "ABORT", "EOR", "SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC", "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", 0 }) + +#define	TELCMD_FIRST	xEOF +#define	TELCMD_LAST	IAC +#define	TELCMD_OK(x)	((unsigned int)(x) <= TELCMD_LAST && \ +			 (unsigned int)(x) >= TELCMD_FIRST) +#define	TELCMD(x)	telcmds[(x)-TELCMD_FIRST] + +#define TELOPT_BINARY	0 +#define TELOPT_ECHO	1 +#define	TELOPT_RCP	2 +#define	TELOPT_SGA	3 +#define	TELOPT_NAMS	4 +#define	TELOPT_STATUS	5 +#define	TELOPT_TM	6 +#define	TELOPT_RCTE	7 +#define TELOPT_NAOL 	8 +#define TELOPT_NAOP 	9 +#define TELOPT_NAOCRD	10 +#define TELOPT_NAOHTS	11 +#define TELOPT_NAOHTD	12 +#define TELOPT_NAOFFD	13 +#define TELOPT_NAOVTS	14 +#define TELOPT_NAOVTD	15 +#define TELOPT_NAOLFD	16 +#define TELOPT_XASCII	17 +#define	TELOPT_LOGOUT	18 +#define	TELOPT_BM	19 +#define	TELOPT_DET	20 +#define	TELOPT_SUPDUP	21 +#define	TELOPT_SUPDUPOUTPUT 22 +#define	TELOPT_SNDLOC	23 +#define	TELOPT_TTYPE	24 +#define	TELOPT_EOR	25 +#define	TELOPT_TUID	26 +#define	TELOPT_OUTMRK	27 +#define	TELOPT_TTYLOC	28 +#define	TELOPT_3270REGIME 29 +#define	TELOPT_X3PAD	30 +#define	TELOPT_NAWS	31 +#define	TELOPT_TSPEED	32 +#define	TELOPT_LFLOW	33 +#define TELOPT_LINEMODE	34 +#define TELOPT_XDISPLOC	35 +#define TELOPT_OLD_ENVIRON 36 +#define	TELOPT_AUTHENTICATION 37/* Authenticate */ +#define	TELOPT_ENCRYPT	38 +#define TELOPT_NEW_ENVIRON 39 +#define	TELOPT_EXOPL	255 + + +#define	NTELOPTS	(1+TELOPT_NEW_ENVIRON) +#ifdef TELOPTS +char *telopts[NTELOPTS+1] = { +	"BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME", +	"STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP", +	"NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS", +	"NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO", +	"DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT", +	"SEND LOCATION", "TERMINAL TYPE", "END OF RECORD", +	"TACACS UID", "OUTPUT MARKING", "TTYLOC", +	"3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW", +	"LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION", +	"ENCRYPT", "NEW-ENVIRON", +	0, +}; +#define	TELOPT_FIRST	TELOPT_BINARY +#define	TELOPT_LAST	TELOPT_NEW_ENVIRON +#define	TELOPT_OK(x)	((unsigned int)(x) <= TELOPT_LAST) +#define	TELOPT(x)	telopts[(x)-TELOPT_FIRST] +#endif + +#define	TELQUAL_IS	0 +#define	TELQUAL_SEND	1 +#define	TELQUAL_INFO	2 +#define	TELQUAL_REPLY	2 +#define	TELQUAL_NAME	3 + +#define	LFLOW_OFF		0 +#define	LFLOW_ON		1 +#define	LFLOW_RESTART_ANY	2 +#define	LFLOW_RESTART_XON	3 + + +#define	LM_MODE		1 +#define	LM_FORWARDMASK	2 +#define	LM_SLC		3 + +#define	MODE_EDIT	0x01 +#define	MODE_TRAPSIG	0x02 +#define	MODE_ACK	0x04 +#define MODE_SOFT_TAB	0x08 +#define MODE_LIT_ECHO	0x10 + +#define	MODE_MASK	0x1f + +#define MODE_FLOW		0x0100 +#define MODE_ECHO		0x0200 +#define MODE_INBIN		0x0400 +#define MODE_OUTBIN		0x0800 +#define MODE_FORCE		0x1000 + +#define	SLC_SYNCH	1 +#define	SLC_BRK		2 +#define	SLC_IP		3 +#define	SLC_AO		4 +#define	SLC_AYT		5 +#define	SLC_EOR		6 +#define	SLC_ABORT	7 +#define	SLC_EOF		8 +#define	SLC_SUSP	9 +#define	SLC_EC		10 +#define	SLC_EL		11 +#define	SLC_EW		12 +#define	SLC_RP		13 +#define	SLC_LNEXT	14 +#define	SLC_XON		15 +#define	SLC_XOFF	16 +#define	SLC_FORW1	17 +#define	SLC_FORW2	18 + +#define	NSLC		18 + +#define	SLC_NAMELIST	"0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \ +			"ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \ +			"LNEXT", "XON", "XOFF", "FORW1", "FORW2", 0, +#ifdef	SLC_NAMES +char *slc_names[] = { +	SLC_NAMELIST +}; +#else +extern char *slc_names[]; +#define	SLC_NAMES SLC_NAMELIST +#endif + +#define	SLC_NAME_OK(x)	((unsigned int)(x) <= NSLC) +#define SLC_NAME(x)	slc_names[x] + +#define	SLC_NOSUPPORT	0 +#define	SLC_CANTCHANGE	1 +#define	SLC_VARIABLE	2 +#define	SLC_DEFAULT	3 +#define	SLC_LEVELBITS	0x03 + +#define	SLC_FUNC	0 +#define	SLC_FLAGS	1 +#define	SLC_VALUE	2 + +#define	SLC_ACK		0x80 +#define	SLC_FLUSHIN	0x40 +#define	SLC_FLUSHOUT	0x20 + +#define	OLD_ENV_VAR	1 +#define	OLD_ENV_VALUE	0 +#define	NEW_ENV_VAR	0 +#define	NEW_ENV_VALUE	1 +#define	ENV_ESC		2 +#define ENV_USERVAR	3 + +#define	AUTH_WHO_CLIENT		0 +#define	AUTH_WHO_SERVER		1 +#define	AUTH_WHO_MASK		1 + +#define	AUTH_HOW_ONE_WAY	0 +#define	AUTH_HOW_MUTUAL		2 +#define	AUTH_HOW_MASK		2 + +#define	AUTHTYPE_NULL		0 +#define	AUTHTYPE_KERBEROS_V4	1 +#define	AUTHTYPE_KERBEROS_V5	2 +#define	AUTHTYPE_SPX		3 +#define	AUTHTYPE_MINK		4 +#define	AUTHTYPE_CNT		5 + +#define	AUTHTYPE_TEST		99 + +#ifdef	AUTH_NAMES +char *authtype_names[] = { +	"NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", 0, +}; +#else +extern char *authtype_names[]; +#endif + +#define	AUTHTYPE_NAME_OK(x)	((unsigned int)(x) < AUTHTYPE_CNT) +#define	AUTHTYPE_NAME(x)	authtype_names[x] + +#define	ENCRYPT_IS		0 +#define	ENCRYPT_SUPPORT		1 +#define	ENCRYPT_REPLY		2 +#define	ENCRYPT_START		3 +#define	ENCRYPT_END		4 +#define	ENCRYPT_REQSTART	5 +#define	ENCRYPT_REQEND		6 +#define	ENCRYPT_ENC_KEYID	7 +#define	ENCRYPT_DEC_KEYID	8 +#define	ENCRYPT_CNT		9 + +#define	ENCTYPE_ANY		0 +#define	ENCTYPE_DES_CFB64	1 +#define	ENCTYPE_DES_OFB64	2 +#define	ENCTYPE_CNT		3 + +#ifdef	ENCRYPT_NAMES +char *encrypt_names[] = { +	"IS", "SUPPORT", "REPLY", "START", "END", +	"REQUEST-START", "REQUEST-END", "ENC-KEYID", "DEC-KEYID", +	0, +}; +char *enctype_names[] = { +	"ANY", "DES_CFB64",  "DES_OFB64",  0, +}; +#else +extern char *encrypt_names[]; +extern char *enctype_names[]; +#endif + + +#define	ENCRYPT_NAME_OK(x)	((unsigned int)(x) < ENCRYPT_CNT) +#define	ENCRYPT_NAME(x)		encrypt_names[x] + +#define	ENCTYPE_NAME_OK(x)	((unsigned int)(x) < ENCTYPE_CNT) +#define	ENCTYPE_NAME(x)		enctype_names[x] + +#endif diff --git a/include/assert.h b/include/assert.h new file mode 100644 index 00000000..bad2ccd0 --- /dev/null +++ b/include/assert.h @@ -0,0 +1,17 @@ +#undef assert + +#ifdef NDEBUG +#define	assert(x) (void)0 +#else +#define assert(x) ((x) || (__assert_fail(#x, __FILE__, __LINE__, __func__),0)) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +void __assert_fail (const char *, const char *, int, const char *); + +#ifdef __cplusplus +} +#endif diff --git a/include/bits/alltypes.h.sh b/include/bits/alltypes.h.sh new file mode 100755 index 00000000..595bf13e --- /dev/null +++ b/include/bits/alltypes.h.sh @@ -0,0 +1,115 @@ +#!/bin/sh +sed -e << EOF \ +'/^TYPEDEF/s/TYPEDEF \(.*\) \([^ ]*\);$/#if defined(__NEED_\2) \&\& !defined(__DEFINED_\2)\ +typedef \1 \2;\ +#define __DEFINED_\2\ +#endif\ +/ +/^STRUCT/s/STRUCT * \([^ ]*\) \(.*\);$/#if defined(__NEED_struct_\1) \&\& !defined(__DEFINED_struct_\1)\ +struct \1 \2;\ +#define __DEFINED_struct_\1\ +#endif\ +/ +/^UNION/s/UNION * \([^ ]*\) \(.*\);$/#if defined(__NEED_union_\1) \&\& !defined(__DEFINED_union_\1)\ +union \1 \2;\ +#define __DEFINED_union_\1\ +#endif\ +/' + +TYPEDEF unsigned size_t; +TYPEDEF int ssize_t; +TYPEDEF long ptrdiff_t; +TYPEDEF struct __va_list * va_list; + +TYPEDEF long wchar_t; +TYPEDEF long wint_t; +TYPEDEF long wctrans_t; +TYPEDEF long wctype_t; + +TYPEDEF char      int8_t; +TYPEDEF short     int16_t; +TYPEDEF int       int32_t; +TYPEDEF long long int64_t; + +TYPEDEF unsigned char      uint8_t; +TYPEDEF unsigned short     uint16_t; +TYPEDEF unsigned int       uint32_t; +TYPEDEF unsigned long long uint64_t; + +TYPEDEF unsigned char      __uint8_t; +TYPEDEF unsigned short     __uint16_t; +TYPEDEF unsigned int       __uint32_t; +TYPEDEF unsigned long long __uint64_t; + +TYPEDEF int8_t  int_least8_t; +TYPEDEF int16_t int_least16_t; +TYPEDEF int32_t int_least32_t; +TYPEDEF int64_t int_least64_t; + +TYPEDEF uint8_t  uint_least8_t; +TYPEDEF uint16_t uint_least16_t; +TYPEDEF uint32_t uint_least32_t; +TYPEDEF uint64_t uint_least64_t; + +TYPEDEF int8_t    int_fast8_t; +TYPEDEF int       int_fast16_t; +TYPEDEF int       int_fast32_t; +TYPEDEF int64_t   int_fast64_t; + +TYPEDEF unsigned char      uint_fast8_t; +TYPEDEF unsigned int       uint_fast16_t; +TYPEDEF unsigned int       uint_fast32_t; +TYPEDEF uint64_t           uint_fast64_t; + +TYPEDEF long          intptr_t; +TYPEDEF unsigned long uintptr_t; + +TYPEDEF long long          intmax_t; +TYPEDEF unsigned long long uintmax_t; + +TYPEDEF long time_t; +TYPEDEF unsigned int useconds_t; +TYPEDEF int suseconds_t; +STRUCT timeval { time_t tv_sec; long tv_usec; }; +STRUCT timespec { time_t tv_sec; long tv_nsec; }; + +TYPEDEF int pid_t; +TYPEDEF int id_t; +TYPEDEF int uid_t; +TYPEDEF int gid_t; +TYPEDEF int key_t; +TYPEDEF struct __pthread * pthread_t; + +TYPEDEF long long off_t; + +TYPEDEF unsigned int mode_t; + +TYPEDEF unsigned int nlink_t; +TYPEDEF unsigned long long ino_t; +TYPEDEF long long dev_t; +TYPEDEF long blksize_t; +TYPEDEF long long blkcnt_t; +TYPEDEF unsigned long long fsblkcnt_t; +TYPEDEF unsigned long long fsfilcnt_t; + +TYPEDEF int timer_t; +TYPEDEF int clockid_t; +TYPEDEF unsigned long clock_t; + +TYPEDEF struct { unsigned long __bits[1024/sizeof(long)]; } sigset_t; +TYPEDEF struct __siginfo siginfo_t; + +TYPEDEF unsigned int socklen_t; +TYPEDEF unsigned short sa_family_t; +TYPEDEF unsigned short in_port_t; +TYPEDEF unsigned int in_addr_t; +STRUCT in_addr { in_addr_t s_addr; }; + +TYPEDEF struct __FILE_s FILE; + +TYPEDEF int nl_item; + +TYPEDEF struct __locale * locale_t; + + +EOF diff --git a/include/bits/endian.h b/include/bits/endian.h new file mode 100644 index 00000000..172c338f --- /dev/null +++ b/include/bits/endian.h @@ -0,0 +1 @@ +#define __BYTE_ORDER __LITTLE_ENDIAN diff --git a/include/bits/errno.h b/include/bits/errno.h new file mode 100644 index 00000000..fddea5ef --- /dev/null +++ b/include/bits/errno.h @@ -0,0 +1,125 @@ +#define EPERM            1 +#define ENOENT           2 +#define ESRCH            3 +#define EINTR            4 +#define EIO              5 +#define ENXIO            6 +#define E2BIG            7 +#define ENOEXEC          8 +#define EBADF            9 +#define ECHILD          10 +#define EAGAIN          11 +#define ENOMEM          12 +#define EACCES          13 +#define EFAULT          14 +#define ENOTBLK         15 +#define EBUSY           16 +#define EEXIST          17 +#define EXDEV           18 +#define ENODEV          19 +#define ENOTDIR         20 +#define EISDIR          21 +#define EINVAL          22 +#define ENFILE          23 +#define EMFILE          24 +#define ENOTTY          25 +#define ETXTBSY         26 +#define EFBIG           27 +#define ENOSPC          28 +#define ESPIPE          29 +#define EROFS           30 +#define EMLINK          31 +#define EPIPE           32 +#define EDOM            33 +#define ERANGE          34 +#define EDEADLK         35 +#define ENAMETOOLONG    36 +#define ENOLCK          37 +#define ENOSYS          38 +#define ENOTEMPTY       39 +#define ELOOP           40 +#define EWOULDBLOCK     EAGAIN +#define ENOMSG          42 +#define EIDRM           43 +#define ECHRNG          44 +#define EL2NSYNC        45 +#define EL3HLT          46 +#define EL3RST          47 +#define ELNRNG          48 +#define EUNATCH         49 +#define ENOCSI          50 +#define EL2HLT          51 +#define EBADE           52 +#define EBADR           53 +#define EXFULL          54 +#define ENOANO          55 +#define EBADRQC         56 +#define EBADSLT         57 +#define EDEADLOCK       EDEADLK +#define EBFONT          59 +#define ENOSTR          60 +#define ENODATA         61 +#define ETIME           62 +#define ENOSR           63 +#define ENONET          64 +#define ENOPKG          65 +#define EREMOTE         66 +#define ENOLINK         67 +#define EADV            68 +#define ESRMNT          69 +#define ECOMM           70 +#define EPROTO          71 +#define EMULTIHOP       72 +#define EDOTDOT         73 +#define EBADMSG         74 +#define EOVERFLOW       75 +#define ENOTUNIQ        76 +#define EBADFD          77 +#define EREMCHG         78 +#define ELIBACC         79 +#define ELIBBAD         80 +#define ELIBSCN         81 +#define ELIBMAX         82 +#define ELIBEXEC        83 +#define EILSEQ          84 +#define ERESTART        85 +#define ESTRPIPE        86 +#define EUSERS          87 +#define ENOTSOCK        88 +#define EDESTADDRREQ    89 +#define EMSGSIZE        90 +#define EPROTOTYPE      91 +#define ENOPROTOOPT     92 +#define EPROTONOSUPPORT 93 +#define ESOCKTNOSUPPORT 94 +#define EOPNOTSUPP      95 +#define EPFNOSUPPORT    96 +#define EAFNOSUPPORT    97 +#define EADDRINUSE      98 +#define EADDRNOTAVAIL   99 +#define ENETDOWN        100 +#define ENETUNREACH     101 +#define ENETRESET       102 +#define ECONNABORTED    103 +#define ECONNRESET      104 +#define ENOBUFS         105 +#define EISCONN         106 +#define ENOTCONN        107 +#define ESHUTDOWN       108 +#define ETOOMANYREFS    109 +#define ETIMEDOUT       110 +#define ECONNREFUSED    111 +#define EHOSTDOWN       112 +#define EHOSTUNREACH    113 +#define EALREADY        114 +#define EINPROGRESS     115 +#define ESTALE          116 +#define EUCLEAN         117 +#define ENOTNAM         118 +#define ENAVAIL         119 +#define EISNAM          120 +#define EREMOTEIO       121 +#define EDQUOT          122 +#define ENOMEDIUM       123 +#define EMEDIUMTYPE     124 +#define ECANCELED       125 diff --git a/include/bits/fcntl.h b/include/bits/fcntl.h new file mode 100644 index 00000000..550152fd --- /dev/null +++ b/include/bits/fcntl.h @@ -0,0 +1,59 @@ +#define O_ACCMODE 03 +#define O_RDONLY  00 +#define O_WRONLY  01 +#define O_RDWR    02 + +#define O_CREAT        0100 +#define O_EXCL         0200 +#define O_NOCTTY       0400 +#define O_TRUNC       01000 +#define O_APPEND      02000 +#define O_NONBLOCK    04000 +#define O_SYNC       010000 +#define O_DIRECTORY 0200000 +#define O_NOFOLLOW  0400000 +#define O_CLOEXEC  02000000 + +#ifdef _GNU_SOURCE +#define O_ASYNC      020000 +#define O_DIRECT     040000 +#define O_NOATIME  01000000 +#define F_DUPFD_CLOEXEC 1030 +#define FAPPENT O_APPEND +#define FFSYNC O_FSYNC +#define FASYNC O_ASYNC +#define FNONBLOCK O_NONBLOCK +#define FNDELAY O_NDELAY +#endif + +#define F_DUPFD  0 +#define F_GETFD  1 +#define F_SETFD  2 +#define F_GETFL  3 +#define F_SETFL  4 + +#define F_SETOWN 8 +#define F_GETOWN 9 + +#define F_GETLK 12 +#define F_SETLK 13 +#define F_SETLKW 14 + +#define FD_CLOEXEC 1 + +#define F_RDLCK 0 +#define F_WRLCK 1 +#define F_UNLCK 2 + +#define AT_FDCWD (-100) +#define AT_SYMLINK_NOFOLLOW 0x100 +#define AT_REMOVEDIR 0x200 +#define AT_SYMLINK_FOLLOW 0x400 +#define AT_EACCESS 0x200 + +#define POSIX_FADV_NORMAL     0 +#define POSIX_FADV_RANDOM     1 +#define POSIX_FADV_SEQUENTIAL 2 +#define POSIX_FADV_WILLNEED   3 +#define POSIX_FADV_DONTNEED   4 +#define POSIX_FADV_NOREUSE    5 diff --git a/include/bits/fenv.h b/include/bits/fenv.h new file mode 100644 index 00000000..24df0417 --- /dev/null +++ b/include/bits/fenv.h @@ -0,0 +1,34 @@ +#define FE_INVALID    1 +#define __FE_DENORM   2 +#define FE_DIVBYZERO  4 +#define FE_OVERFLOW   8 +#define FE_UNDERFLOW  16 +#define FE_INEXACT    32 + +#define FE_ALL_EXCEPT 63 + +#define FE_TONEAREST  0 +#define FE_DOWNWARD   0x400 +#define FE_UPWARD     0x800 +#define FE_TOWARDZERO 0xc00 + +typedef unsigned short fexcept_t; + +typedef struct { +	unsigned short __control_word; +	unsigned short __unused1; +	unsigned short __status_word; +	unsigned short __unused2; +	unsigned short __tags; +	unsigned short __unused3; +	unsigned int __eip; +	unsigned short __cs_selector; +	unsigned int __opcode:11; +	unsigned int __unused4:5; +	unsigned int __data_offset; +	unsigned short __data_selector; +	unsigned short __unused5; +	unsigned int __mxcsr; +} fenv_t; + +#define FE_DFL_ENV      ((const fenv_t *) -1) diff --git a/include/bits/float.h b/include/bits/float.h new file mode 100644 index 00000000..162b3e46 --- /dev/null +++ b/include/bits/float.h @@ -0,0 +1,11 @@ +#define LDBL_MIN     3.3621031431120935063e-4932L +#define LDBL_MAX     1.1897314953572317650e+4932L +#define LDBL_EPSILON 1.0842021724855044340e-19L + +#define LDBL_MANT_DIG 64 +#define LDBL_MIN_EXP (-16381) +#define LDBL_MAX_EXP 16384 + +#define LDBL_DIG 18 +#define LDBL_MIN_10_EXP (-4931) +#define LDBL_MAX_10_EXP 4932 diff --git a/include/bits/in.h b/include/bits/in.h new file mode 100644 index 00000000..53ca31ca --- /dev/null +++ b/include/bits/in.h @@ -0,0 +1,89 @@ +#define IP_TOS             1 +#define IP_TTL             2 +#define IP_HDRINCL         3 +#define IP_OPTIONS         4 +#define IP_ROUTER_ALERT    5 +#define IP_RECVOPTS        6 +#define IP_RETOPTS         7 +//#define IP_PKTINFO         8 +#define IP_PKTOPTIONS      9 +#define IP_PMTUDISC        10 +#define IP_MTU_DISCOVER    10 +#define IP_RECVERR         11 +#define IP_RECVTTL         12 +#define IP_RECVTOS         13 +#define IP_MULTICAST_IF    32 +#define IP_MULTICAST_TTL   33 +#define IP_MULTICAST_LOOP  34 +#define IP_ADD_MEMBERSHIP  35 +#define IP_DROP_MEMBERSHIP 36 + +#define IP_RECVRETOPTS IP_RETOPTS + +#define IP_PMTUDISC_DONT   0 +#define IP_PMTUDISC_WANT   1 +#define IP_PMTUDISC_DO     2 + +#define SOL_IP 0 + +#define IP_DEFAULT_MULTICAST_TTL        1 +#define IP_DEFAULT_MULTICAST_LOOP       1 +#define IP_MAX_MEMBERSHIPS              20 + +struct ip_opts +{ +	struct in_addr ip_dst; +	char ip_opts[40]; +}; + +struct ip_mreq +{ +	struct in_addr imr_multiaddr; +	struct in_addr imr_interface; +}; + +struct ip_mreqn +{ +	struct in_addr imr_multiaddr; +	struct in_addr imr_address; +	int imr_ifindex; +}; + +struct in_pktinfo +{ +	int ipi_ifindex; +	struct in_addr ipi_spec_dst; +	struct in_addr ipi_addr; +}; + +#define IPV6_ADDRFORM           1 +#define IPV6_PKTINFO            2 +#define IPV6_HOPOPTS            3 +#define IPV6_DSTOPTS            4 +#define IPV6_RXSRCRT            5 +#define IPV6_PKTOPTIONS         6 +#define IPV6_CHECKSUM           7 +#define IPV6_HOPLIMIT           8 +#define IPV6_NEXTHOP            9 +#define IPV6_AUTHHDR            10 +#define IPV6_UNICAST_HOPS       16 +#define IPV6_MULTICAST_IF       17 +#define IPV6_MULTICAST_HOPS     18 +#define IPV6_MULTICAST_LOOP     19 +#define IPV6_ADD_MEMBERSHIP     20 +#define IPV6_DROP_MEMBERSHIP    21 +#define IPV6_ROUTER_ALERT       22 + +#define SCM_SRCRT               IPV6_RXSRCRT + +#define IPV6_RXHOPOPTS          IPV6_HOPOPTS +#define IPV6_RXDSTOPTS          IPV6_DSTOPTS + + +#define IPV6_PMTUDISC_DONT      0 +#define IPV6_PMTUDISC_WANT      1 +#define IPV6_PMTUDISC_DO        2 + + +#define SOL_IPV6        41 +#define SOL_ICMPV6      58 diff --git a/include/bits/ioctl.h b/include/bits/ioctl.h new file mode 100644 index 00000000..bb63ffb4 --- /dev/null +++ b/include/bits/ioctl.h @@ -0,0 +1,182 @@ +#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) ) +#define _IOC_NONE  0U +#define _IOC_WRITE 1U +#define _IOC_READ  2U + +#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) +#define _IOW(a,b,c) _IOC(1,(a),(b),sizeof(c)) +#define _IOR(a,b,c) _IOC(2,(a),(b),sizeof(c)) +#define _IOWR(a,b,c) _IOC(3,(a),(b),sizeof(c)) + +#define TCGETS		0x5401 +#define TCSETS		0x5402 +#define TCSETSW		0x5403 +#define TCSETSF		0x5404 +#define TCGETA		0x5405 +#define TCSETA		0x5406 +#define TCSETAW		0x5407 +#define TCSETAF		0x5408 +#define TCSBRK		0x5409 +#define TCXONC		0x540A +#define TCFLSH		0x540B +#define TIOCEXCL	0x540C +#define TIOCNXCL	0x540D +#define TIOCSCTTY	0x540E +#define TIOCGPGRP	0x540F +#define TIOCSPGRP	0x5410 +#define TIOCOUTQ	0x5411 +#define TIOCSTI		0x5412 +#define TIOCGWINSZ	0x5413 +#define TIOCSWINSZ	0x5414 +#define TIOCMGET	0x5415 +#define TIOCMBIS	0x5416 +#define TIOCMBIC	0x5417 +#define TIOCMSET	0x5418 +#define TIOCGSOFTCAR	0x5419 +#define TIOCSSOFTCAR	0x541A +#define FIONREAD	0x541B +#define TIOCINQ		FIONREAD +#define TIOCLINUX	0x541C +#define TIOCCONS	0x541D +#define TIOCGSERIAL	0x541E +#define TIOCSSERIAL	0x541F +#define TIOCPKT		0x5420 +#define FIONBIO		0x5421 +#define TIOCNOTTY	0x5422 +#define TIOCSETD	0x5423 +#define TIOCGETD	0x5424 +#define TCSBRKP		0x5425 +#define TIOCTTYGSTRUCT	0x5426 +#define TIOCSBRK	0x5427 +#define TIOCCBRK	0x5428 +#define TIOCGSID	0x5429 +#define TIOCGPTN	0x80045430 +#define TIOCSPTLCK	0x40045431 + +#define FIONCLEX	0x5450 +#define FIOCLEX		0x5451 +#define FIOASYNC	0x5452 +#define TIOCSERCONFIG	0x5453 +#define TIOCSERGWILD	0x5454 +#define TIOCSERSWILD	0x5455 +#define TIOCGLCKTRMIOS	0x5456 +#define TIOCSLCKTRMIOS	0x5457 +#define TIOCSERGSTRUCT	0x5458 +#define TIOCSERGETLSR   0x5459 +#define TIOCSERGETMULTI 0x545A +#define TIOCSERSETMULTI 0x545B + +#define TIOCMIWAIT	0x545C +#define TIOCGICOUNT	0x545D +#define TIOCGHAYESESP   0x545E +#define TIOCSHAYESESP   0x545F +#define FIOQSIZE	0x5460 + +#define TIOCPKT_DATA		 0 +#define TIOCPKT_FLUSHREAD	 1 +#define TIOCPKT_FLUSHWRITE	 2 +#define TIOCPKT_STOP		 4 +#define TIOCPKT_START		 8 +#define TIOCPKT_NOSTOP		16 +#define TIOCPKT_DOSTOP		32 + +#define TIOCSER_TEMT    0x01 + +struct winsize { +	unsigned short ws_row; +	unsigned short ws_col; +	unsigned short ws_xpixel; +	unsigned short ws_ypixel; +}; + +#define TIOCM_LE        0x001 +#define TIOCM_DTR       0x002 +#define TIOCM_RTS       0x004 +#define TIOCM_ST        0x008 +#define TIOCM_SR        0x010 +#define TIOCM_CTS       0x020 +#define TIOCM_CAR       0x040 +#define TIOCM_RNG       0x080 +#define TIOCM_DSR       0x100 +#define TIOCM_CD        TIOCM_CAR +#define TIOCM_RI        TIOCM_RNG +#define TIOCM_OUT1      0x2000 +#define TIOCM_OUT2      0x4000 +#define TIOCM_LOOP      0x8000 +#define TIOCM_MODEM_BITS TIOCM_OUT2 + +#define N_TTY           0 +#define N_SLIP          1 +#define N_MOUSE         2 +#define N_PPP           3 +#define N_STRIP         4 +#define N_AX25          5 +#define N_X25           6 +#define N_6PACK         7 +#define N_MASC          8 +#define N_R3964         9 +#define N_PROFIBUS_FDL  10 +#define N_IRDA          11 +#define N_SMSBLOCK      12 +#define N_HDLC          13 +#define N_SYNC_PPP      14 +#define N_HCI           15 + +#define SIOCADDRT       0x890B +#define SIOCDELRT       0x890C +#define SIOCRTMSG       0x890D + +#define SIOCGIFNAME     0x8910 +#define SIOCSIFLINK     0x8911 +#define SIOCGIFCONF     0x8912 +#define SIOCGIFFLAGS    0x8913 +#define SIOCSIFFLAGS    0x8914 +#define SIOCGIFADDR     0x8915 +#define SIOCSIFADDR     0x8916 +#define SIOCGIFDSTADDR  0x8917 +#define SIOCSIFDSTADDR  0x8918 +#define SIOCGIFBRDADDR  0x8919 +#define SIOCSIFBRDADDR  0x891a +#define SIOCGIFNETMASK  0x891b +#define SIOCSIFNETMASK  0x891c +#define SIOCGIFMETRIC   0x891d +#define SIOCSIFMETRIC   0x891e +#define SIOCGIFMEM      0x891f +#define SIOCSIFMEM      0x8920 +#define SIOCGIFMTU      0x8921 +#define SIOCSIFMTU      0x8922 +#define SIOCSIFHWADDR   0x8924 +#define SIOCGIFENCAP    0x8925 +#define SIOCSIFENCAP    0x8926 +#define SIOCGIFHWADDR   0x8927 +#define SIOCGIFSLAVE    0x8929 +#define SIOCSIFSLAVE    0x8930 +#define SIOCADDMULTI    0x8931 +#define SIOCDELMULTI    0x8932 +#define SIOCGIFINDEX    0x8933 +#define SIOGIFINDEX     SIOCGIFINDEX +#define SIOCSIFPFLAGS   0x8934 +#define SIOCGIFPFLAGS   0x8935 +#define SIOCDIFADDR     0x8936 +#define SIOCSIFHWBROADCAST 0x8937 +#define SIOCGIFCOUNT    0x8938 + +#define SIOCGIFBR       0x8940 +#define SIOCSIFBR       0x8941 + +#define SIOCGIFTXQLEN   0x8942 +#define SIOCSIFTXQLEN   0x8943 + +#define SIOCDARP        0x8953 +#define SIOCGARP        0x8954 +#define SIOCSARP        0x8955 + +#define SIOCDRARP       0x8960 +#define SIOCGRARP       0x8961 +#define SIOCSRARP       0x8962 + +#define SIOCGIFMAP      0x8970 +#define SIOCSIFMAP      0x8971 + +#define SIOCADDDLCI     0x8980 +#define SIOCDELDLCI     0x8981 diff --git a/include/bits/ipc.h b/include/bits/ipc.h new file mode 100644 index 00000000..8e3ef9b9 --- /dev/null +++ b/include/bits/ipc.h @@ -0,0 +1,22 @@ +#define IPC_CREAT  01000 +#define IPC_EXCL   02000 +#define IPC_NOWAIT 04000 + +#define IPC_RMID 0 +#define IPC_SET  1 +#define IPC_STAT 2 + +#define IPC_PRIVATE ((key_t) 0) + +struct ipc_perm +{ +	key_t key; +	uid_t uid; +	gid_t gid; +	uid_t cuid; +	gid_t cgid; +	mode_t mode; +	int seq; +	long __pad1; +	long __pad2; +}; diff --git a/include/bits/limits.h b/include/bits/limits.h new file mode 100644 index 00000000..48fdd7a1 --- /dev/null +++ b/include/bits/limits.h @@ -0,0 +1,32 @@ +#define PIPE_BUF 4096 +#define PAGESIZE 4096 +#define PAGE_SIZE PAGESIZE +#define FILESIZEBITS 64 +#define NAME_MAX 255 +#define SYMLINK_MAX 255 +#define PATH_MAX 4096 +#define NZERO 20 +#define NGROUPS_MAX 32 +#define ARG_MAX 131072 +#define IOV_MAX 1024 +#define SYMLOOP_MAX 40 + +#define WORD_BIT 32 +#define LONG_BIT 32 + +#define SHRT_MIN  (-1-0x7fff) +#define SHRT_MAX  0x7fff +#define USHRT_MAX 0xffff + +#define INT_MIN  (-1-0x7fffffff) +#define INT_MAX  0x7fffffff +#define UINT_MAX 0xffffffff + +#define LONG_MIN  (-1-0x7fffffffL) +#define LONG_MAX  0x7fffffffL +#define ULONG_MAX 0xffffffffL + +#define LLONG_MIN  (-1-0x7fffffffffffffffLL) +#define LLONG_MAX  0x7fffffffffffffffLL +#define ULLONG_MAX 0xffffffffffffffffULL + diff --git a/include/bits/mman.h b/include/bits/mman.h new file mode 100644 index 00000000..e02d488c --- /dev/null +++ b/include/bits/mman.h @@ -0,0 +1,39 @@ +#define MAP_FAILED ((void *) -1) + +#define	PROT_NONE      0 +#define	PROT_READ      1 +#define	PROT_WRITE     2 +#define	PROT_EXEC      4 + +#define	MAP_SHARED     0x01 +#define	MAP_PRIVATE    0x02 +#define	MAP_FIXED      0x10 + +/* linux extensions */ +#define MAP_TYPE       0x0f +#define MAP_FILE       0x00 +#define MAP_ANON       0x20 +#define MAP_ANONYMOUS  MAP_ANON + +#define MADV_NORMAL     0 +#define MADV_RANDOM     1 +#define MADV_SEQUENTIAL 2 +#define MADV_WILLNEED   3 +#define MADV_DONTNEED   4 + +#define POSIX_MADV_NORMAL       0 +#define POSIX_MADV_RANDOM       1 +#define POSIX_MADV_SEQUENTIAL   2 +#define POSIX_MADV_WILLNEED     3 +#define POSIX_MADV_DONTNEED     0 + +#define MS_ASYNC        1 +#define MS_INVALIDATE   2 +#define MS_SYNC         4 + +#define MCL_CURRENT     1 +#define MCL_FUTURE      2 + +/* linux extensions */ +#define MREMAP_MAYMOVE  1 +#define MREMAP_FIXED    2 diff --git a/include/bits/posix.h b/include/bits/posix.h new file mode 100644 index 00000000..30a38714 --- /dev/null +++ b/include/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_ILP32_OFFBIG  1 +#define _POSIX_V7_ILP32_OFFBIG  1 diff --git a/include/bits/pthread.h b/include/bits/pthread.h new file mode 100644 index 00000000..7d19065d --- /dev/null +++ b/include/bits/pthread.h @@ -0,0 +1,6 @@ +struct __ptcb { +	long __jb[7]; +	int __dummy; +	struct __ptcb *__next; +	void *__ptrs[3]; +}; diff --git a/include/bits/reg.h b/include/bits/reg.h new file mode 100644 index 00000000..8bc2582d --- /dev/null +++ b/include/bits/reg.h @@ -0,0 +1,19 @@ +#undef __WORDSIZE +#define __WORDSIZE 32 +#define EBX 0 +#define ECX 1 +#define EDX 2 +#define ESI 3 +#define EDI 4 +#define EBP 5 +#define EAX 6 +#define DS 7 +#define ES 8 +#define FS 9 +#define GS 10 +#define ORIG_EAX 11 +#define EIP 12 +#define CS 13 +#define EFL 14 +#define UESP 15 +#define SS 16 diff --git a/include/bits/setjmp.h b/include/bits/setjmp.h new file mode 100644 index 00000000..b6595bd2 --- /dev/null +++ b/include/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long jmp_buf [7]; diff --git a/include/bits/shm.h b/include/bits/shm.h new file mode 100644 index 00000000..46774237 --- /dev/null +++ b/include/bits/shm.h @@ -0,0 +1,18 @@ +#define SHMLBA 4096 + +#define SHM_RDONLY 010000 +#define SHM_RND    020000 + +struct shmid_ds +{ +	struct ipc_perm shm_perm; +	size_t shm_segsz; +	time_t shm_atime; +	time_t shm_dtime; +	time_t shm_ctime; +	pid_t shm_cpid; +	pid_t shm_lpid; +	unsigned long shm_nattch; +	unsigned long __pad1; +	unsigned long __pad2; +}; diff --git a/include/bits/signal.h b/include/bits/signal.h new file mode 100644 index 00000000..2427f37a --- /dev/null +++ b/include/bits/signal.h @@ -0,0 +1,98 @@ +struct __siginfo +{ +	int si_signo; +	int si_errno; +	int si_code; +	union +	{ +		char __pad[128 - 3*sizeof(int)]; +		struct { +			pid_t si_pid; +			uid_t si_uid; +			union sigval si_sigval; +		} __rt; +		struct { +			unsigned int si_timer1; +			unsigned int si_timer2; +		} __timer; +		struct { +			pid_t si_pid; +			uid_t si_uid; +			int si_status; +			clock_t si_utime; +			clock_t si_stime; +		} __sigchld; +		struct { +			void *si_addr; +		} __sigfault; +		struct { +			long int si_band; +			int si_fd; +		} __sigpoll; +	} __si_fields; +}; + +#define si_pid     __si_fields.__sigchld.si_pid +#define si_uid     __si_fields.__sigchld.si_uid +#define si_status  __si_fields.__sigchld.si_status +#define si_utime   __si_fields.__sigchld.si_utime +#define si_stime   __si_fields.__sigchld.si_stime +#define si_value   __si_fields.__rt.si_sigval +#define si_addr    __si_fields.__sigfault.si_addr +#define si_band    __si_fields.__sigpoll.si_band + +#define SA_NOCLDSTOP  1 +#define SA_NOCLDWAIT  2 +#define SA_SIGINFO    4 +#define SA_ONSTACK    0x08000000 +#define SA_RESTART    0x10000000 +#define SA_NODEFER    0x40000000 +#define SA_RESETHAND  0x80000000 + +#define SS_ONSTACK    1 +#define SS_DISABLE    2 + +#define SIG_BLOCK     0 +#define SIG_UNBLOCK   1 +#define SIG_SETMASK   2 + +#define SIG_ERR  ((void (*)(int))-1) +#define SIG_DFL  ((void (*)(int)) 0) +#define SIG_IGN  ((void (*)(int)) 1) +#define SIG_HOLD ((void (*)(int)) 2) + +#define NSIG      64 + +#define SIGHUP    1 +#define SIGINT    2 +#define SIGQUIT   3 +#define SIGILL    4 +#define SIGTRAP   5 +#define SIGABRT   6 +#define SIGBUS    7 +#define SIGFPE    8 +#define SIGKILL   9 +#define SIGUSR1   10 +#define SIGSEGV   11 +#define SIGUSR2   12 +#define SIGPIPE   13 +#define SIGALRM   14 +#define SIGTERM   15 +#define SIGSTKFLT 16 +#define SIGCHLD   17 +#define SIGCONT   18 +#define SIGSTOP   19 +#define SIGTSTP   20 +#define SIGTTIN   21 +#define SIGTTOU   22 +#define SIGURG    23 +#define SIGXCPU   24 +#define SIGXFSZ   25 +#define SIGVTALRM 26 +#define SIGPROF   27 +#define SIGWINCH  28 +#define SIGIO     29 +#define SIGPOLL   29 +#define SIGPWR    30 +#define SIGSYS    31 +#define SIGUNUSED SIGSYS diff --git a/include/bits/socket.h b/include/bits/socket.h new file mode 100644 index 00000000..7a51f792 --- /dev/null +++ b/include/bits/socket.h @@ -0,0 +1,189 @@ +struct iovec; + +struct msghdr +{ +	void *msg_name; +	socklen_t msg_namelen; +	struct iovec *msg_iov; +	int msg_iovlen; +	void *msg_control; +	socklen_t msg_controllen; +	int msg_flags; +}; + +struct cmsghdr +{ +	socklen_t cmsg_len; +	int cmsg_level; +	int cmsg_type; +}; + +struct ucred +{ +	pid_t pid; +	uid_t uid; +	gid_t gid; +}; + +struct linger +{ +	int l_onoff; +	int l_linger; +}; + +#define SHUT_RD 0 +#define SHUT_WD 1 +#define SHUT_RDWR 2 + +#define SOCK_STREAM    1 +#define SOCK_DGRAM     2 +#define SOCK_RAW       3 +#define SOCK_RDM       4 +#define SOCK_SEQPACKET 5 +#define SOCK_PACKET    10 + +#define AF_UNSPEC       0 +#define AF_LOCAL        1 +#define AF_UNIX         AF_LOCAL +#define AF_FILE         AF_LOCAL +#define AF_INET         2 +#define AF_AX25         3 +#define AF_IPX          4 +#define AF_APPLETALK    5 +#define AF_NETROM       6 +#define AF_BRIDGE       7 +#define AF_ATMPVC       8 +#define AF_X25          9 +#define AF_INET6        10 +#define AF_ROSE         11 +#define AF_DECnet       12 +#define AF_NETBEUI      13 +#define AF_SECURITY     14 +#define AF_KEY          15 +#define AF_NETLINK      16 +#define AF_ROUTE        AF_NETLINK +#define AF_PACKET       17 +#define AF_ASH          18 +#define AF_ECONET       19 +#define AF_ATMSVC       20 +#define AF_SNA          22 +#define AF_IRDA         23 +#define AF_PPPOX        24 +#define AF_WANPIPE      25 +#define AF_BLUETOOTH    31 + +#define PF_UNSPEC       0 +#define PF_LOCAL        1 +#define PF_UNIX         PF_LOCAL +#define PF_FILE         PF_LOCAL +#define PF_INET         2 +#define PF_AX25         3 +#define PF_IPX          4 +#define PF_APPLETALK    5 +#define PF_NETROM       6 +#define PF_BRIDGE       7 +#define PF_ATMPVC       8 +#define PF_X25          9 +#define PF_INET6        10 +#define PF_ROSE         11 +#define PF_DECnet       12 +#define PF_NETBEUI      13 +#define PF_SECURITY     14 +#define PF_KEY          15 +#define PF_NETLINK      16 +#define PF_ROUTE        PF_NETLINK +#define PF_PACKET       17 +#define PF_ASH          18 +#define PF_ECONET       19 +#define PF_ATMSVC       20 +#define PF_SNA          22 +#define PF_IRDA         23 +#define PF_PPPOX        24 +#define PF_WANPIPE      25 +#define PF_BLUETOOTH    31 + +#define SO_DEBUG        1 +#define SO_REUSEADDR    2 +#define SO_TYPE         3 +#define SO_ERROR        4 +#define SO_DONTROUTE    5 +#define SO_BROADCAST    6 +#define SO_SNDBUF       7 +#define SO_RCVBUF       8 +#define SO_KEEPALIVE    9 +#define SO_OOBINLINE    10 +#define SO_NO_CHECK     11 +#define SO_PRIORITY     12 +#define SO_LINGER       13 +#define SO_BSDCOMPAT    14 +#define SO_REUSEPORT    15 +#define SO_PASSCRED     16 +#define SO_PEERCRED     17 +#define SO_RCVLOWAT     18 +#define SO_SNDLOWAT     19 +#define SO_RCVTIMEO     20 +#define SO_SNDTIMEO     21 + +#define SO_SECURITY_AUTHENTICATION              22 +#define SO_SECURITY_ENCRYPTION_TRANSPORT        23 +#define SO_SECURITY_ENCRYPTION_NETWORK          24 + +#define SO_BINDTODEVICE 25 + +#define SO_ATTACH_FILTER        26 +#define SO_DETACH_FILTER        27 + +#define SO_PEERNAME             28 +#define SO_TIMESTAMP            29 +#define SCM_TIMESTAMP           SO_TIMESTAMP + +#define SO_ACCEPTCONN           30 + +#define SOL_SOCKET      1 + +/* ??? */ +#define SOL_RAW         255 +#define SOL_DECNET      261 +#define SOL_X25         262 +#define SOL_PACKET      263 +#define SOL_ATM         264 +#define SOL_AAL         265 +#define SOL_IRDA        266 + +#define SOMAXCONN       128 + +#define MSG_OOB       0x0001 +#define MSG_PEEK      0x0002 +#define MSG_DONTROUTE 0x0004 +#define MSG_CTRUNC    0x0008 +#define MSG_PROXY     0x0010 +#define MSG_TRUNC     0x0020 +#define MSG_DONTWAIT  0x0040 +#define MSG_EOR       0x0080 +#define MSG_WAITALL   0x0100 +#define MSG_FIN       0x0200 +#define MSD_SYN       0x0400 +#define MSG_CONFIRM   0x0800 +#define MSG_RST       0x1000 +#define MSG_ERRQUEUE  0x2000 +#define MSG_NOSIGNAL  0x4000 +#define MSG_MORE      0x8000 + +/* Internal use only!! to make CMSG_NXTHDR definition readable by mortals */ +#define __CMSG_LEN(cmsg) (((cmsg)->cmsg_len + sizeof(long) - 1) & ~(long)(sizeof(long) - 1)) +#define __CMSG_NEXT(cmsg) ((unsigned char *)(cmsg) + __CMSG_LEN(cmsg)) +#define __MHDR_END(mhdr) ((unsigned char *)(mhdr)->msg_control + (mhdr)->msg_controllen) + +#define CMSG_DATA(cmsg) ((unsigned char *) (((struct cmsghdr *)(cmsg)) + 1)) +#define CMSG_NXTHDR(mhdr, cmsg) ((cmsg)->cmsg_len < sizeof (struct cmsghdr) ? (struct cmsghdr *)0 : \ +        (__CMSG_NEXT(cmsg) + sizeof (struct cmsghdr) >= __MHDR_END(mhdr) ? (struct cmsghdr *)0 : \ +        ((struct cmsghdr *)__CMSG_NEXT(cmsg)))) +#define CMSG_FIRSTHDR(mhdr) ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0) + +/* Are these valid? */ +#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1)) +#define CMSG_SPACE(len) (CMSG_ALIGN (len) + CMSG_ALIGN (sizeof (struct cmsghdr))) +#define CMSG_LEN(len)   (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len)) + +#define SCM_RIGHTS      0x01 +#define SCM_CREDENTIALS 0x02 diff --git a/include/bits/stat.h b/include/bits/stat.h new file mode 100644 index 00000000..1ef34698 --- /dev/null +++ b/include/bits/stat.h @@ -0,0 +1,25 @@ +/* copied from kernel definition, but with padding replaced + * by the corresponding correctly-sized userspace types. */ + +struct stat +{ +	dev_t st_dev; +	int __st_dev_padding; +	long __st_ino_truncated; +	mode_t st_mode; +	nlink_t st_nlink; +	uid_t st_uid; +	gid_t st_gid; +	dev_t st_rdev; +	int __st_rdev_padding; +	off_t st_size; +	blksize_t st_blksize; +	blkcnt_t st_blocks; +	time_t st_atime; +	unsigned long __st_atime_nsec; +	time_t st_mtime; +	unsigned long __st_mtime_nsec; +	time_t st_ctime; +	unsigned long __st_ctime_nsec; +	ino_t st_ino; +}; diff --git a/include/bits/statfs.h b/include/bits/statfs.h new file mode 100644 index 00000000..9dda4400 --- /dev/null +++ b/include/bits/statfs.h @@ -0,0 +1,16 @@ +struct statvfs { +	unsigned long f_type; +	unsigned long f_bsize; +	fsblkcnt_t f_blocks; +	fsblkcnt_t f_bfree; +	fsblkcnt_t f_bavail; +	fsfilcnt_t f_files; +	fsfilcnt_t f_ffree; +	unsigned long f_fsid; +	unsigned long __unused; +	unsigned long f_namemax; +	unsigned long f_frsize; +	fsfilcnt_t f_favail; +	unsigned long f_flag; +	unsigned long __reserved[2]; +}; diff --git a/include/bits/stdint.h b/include/bits/stdint.h new file mode 100644 index 00000000..8e21a8cb --- /dev/null +++ b/include/bits/stdint.h @@ -0,0 +1,23 @@ +#define INT_FAST8_MIN   INT8_MIN +#define INT_FAST16_MIN  INT32_MIN +#define INT_FAST32_MIN  INT32_MIN +#define INT_FAST64_MIN  INT64_MIN + +#define INT_FAST8_MAX   INT8_MAX +#define INT_FAST16_MAX  INT32_MAX +#define INT_FAST32_MAX  INT32_MAX +#define INT_FAST64_MAX  INT64_MAX + +#define UINT_FAST8_MAX  UINT8_MAX +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX +#define UINT_FAST64_MAX UINT64_MAX + +#define INTPTR_MIN      INT32_MIN +#define INTPTR_MAX      INT32_MAX +#define UINTPTR_MAX     UINT32_MAX +#define PTRDIFF_MIN     INT32_MIN +#define PTRDIFF_MAX     INT32_MAX +#define SIG_ATOMIC_MIN  INT32_MIN +#define SIG_ATOMIC_MAX  INT32_MAX +#define SIZE_MAX        UINT32_MAX diff --git a/include/bits/stdio.h b/include/bits/stdio.h new file mode 100644 index 00000000..0afd8b40 --- /dev/null +++ b/include/bits/stdio.h @@ -0,0 +1,10 @@ +#define BUFSIZ 1024 + +#define FILENAME_MAX 4095 +#define FOPEN_MAX 1000 +#define TMP_MAX 10000 + +#define L_cuserid 20 +#define L_ctermid 20 +#define L_tmpnam 20 +#define P_tmpdir "/tmp" diff --git a/include/bits/sysmacros.h b/include/bits/sysmacros.h new file mode 100644 index 00000000..da29022d --- /dev/null +++ b/include/bits/sysmacros.h @@ -0,0 +1,7 @@ +#define major(x) (((x) >> 8) & 0xff) +#define minor(x) ((x) & 0xff) +#define makedev(x,y) (((x)<<8)|((y)&0xff)) + +//#define makedev(x,y) \ +//	((x)*0x100000001ULL)&(0xfffffffffff0) +//	((y)*0x1001 & 0xffff0ff) diff --git a/include/bits/tcp.h b/include/bits/tcp.h new file mode 100644 index 00000000..923231b2 --- /dev/null +++ b/include/bits/tcp.h @@ -0,0 +1 @@ +#define TCP_NODELAY 1 diff --git a/include/bits/termios.h b/include/bits/termios.h new file mode 100644 index 00000000..316baeb2 --- /dev/null +++ b/include/bits/termios.h @@ -0,0 +1,158 @@ +struct termios +{ +	tcflag_t c_iflag; +	tcflag_t c_oflag; +	tcflag_t c_cflag; +	tcflag_t c_lflag; +	cc_t c_line; +	cc_t c_cc[NCCS]; +	speed_t __c_ispeed; +	speed_t __c_ospeed; +}; + +#define VINTR     0 +#define VQUIT     1 +#define VERASE    2 +#define VKILL     3 +#define VEOF      4 +#define VTIME     5 +#define VMIN      6 +#define VSWTC     7 +#define VSTART    8 +#define VSTOP     9 +#define VSUSP    10 +#define VEOL     11 +#define VREPRINT 12 +#define VDISCARD 13 +#define VWERASE  14 +#define VLNEXT   15 +#define VEOL2    16 + +#define IGNBRK  0000001 +#define BRKINT  0000002 +#define IGNPAR  0000004 +#define PARMRK  0000010 +#define INPCK   0000020 +#define ISTRIP  0000040 +#define INLCR   0000100 +#define IGNCR   0000200 +#define ICRNL   0000400 +#define IUCLC   0001000 +#define IXON    0002000 +#define IXANY   0004000 +#define IXOFF   0010000 +#define IMAXBEL 0020000 + +#define OPOST  0000001 +#define OLCUC  0000002 +#define ONLCR  0000004 +#define OCRNL  0000010 +#define ONOCR  0000020 +#define ONLRET 0000040 +#define OFILL  0000100 +#define OFDEL  0000200 +#define NLDLY  0000400 +#define NL0    0000000 +#define NL1    0000400 +#define CRDLY  0003000 +#define CR0    0000000 +#define CR1    0001000 +#define CR2    0002000 +#define CR3    0003000 +#define TABDLY 0014000 +#define TAB0   0000000 +#define TAB1   0004000 +#define TAB2   0010000 +#define TAB3   0014000 +#define BSDLY  0020000 +#define BS0    0000000 +#define BS1    0020000 +#define FFDLY  0100000 +#define FF0    0000000 +#define FF1    0100000 + +#define VTDLY  0040000 +#define VT0    0000000 +#define VT1    0040000 + +/* ?? */ +#define XTABS  0014000 + +#define B0       0000000 +#define B50      0000001 +#define B75      0000002 +#define B110     0000003 +#define B134     0000004 +#define B150     0000005 +#define B200     0000006 +#define B300     0000007 +#define B600     0000010 +#define B1200    0000011 +#define B1800    0000012 +#define B2400    0000013 +#define B4800    0000014 +#define B9600    0000015 +#define B19200   0000016 +#define B38400   0000017 + +#define B57600   0010001 +#define B115200  0010002 +#define B230400  0010003 +#define B460800  0010004 +#define B500000  0010005 +#define B576000  0010006 +#define B921600  0010007 +#define B1000000 0010010 +#define B1152000 0010011 +#define B1500000 0010012 +#define B2000000 0010013 +#define B2500000 0010014 +#define B3000000 0010015 +#define B3500000 0010016 +#define B4000000 0010017 + +#define CBAUD    0010017 + +#define CSIZE  0000060 +#define CS5    0000000 +#define CS6    0000020 +#define CS7    0000040 +#define CS8    0000060 +#define CSTOPB 0000100 +#define CREAD  0000200 +#define PARENB 0000400 +#define PARODD 0001000 +#define HUPCL  0002000 +#define CLOCAL 0004000 + +#define CRTSCTS  020000000000 + +#define ISIG   0000001 +#define ICANON 0000002 +#define ECHO   0000010 +#define ECHOE  0000020 +#define ECHOK  0000040 +#define ECHONL 0000100 +#define NOFLSH 0000200 +#define TOSTOP 0000400 +#define IEXTEN 0100000 + +/* Extensions? */ +#define ECHOCTL 0001000 +#define ECHOPRT 0002000 +#define ECHOKE 0004000 +#define FLUSHO 0010000 +#define PENDIN 0040000 + +#define TCOOFF 0 +#define TCOON  1 +#define TCIOFF 2 +#define TCION  3 + +#define TCIFLUSH  0 +#define TCOFLUSH  1 +#define TCIOFLUSH 2 + +#define TCSANOW   0 +#define TCSADRAIN 1 +#define TCSAFLUSH 2 diff --git a/include/bits/uio.h b/include/bits/uio.h new file mode 100644 index 00000000..43252653 --- /dev/null +++ b/include/bits/uio.h @@ -0,0 +1,4 @@ +struct iovec { +	void *iov_base; +	size_t iov_len; +}; diff --git a/include/bits/user.h b/include/bits/user.h new file mode 100644 index 00000000..13ff027b --- /dev/null +++ b/include/bits/user.h @@ -0,0 +1,77 @@ +#undef __WORDSIZE +#define __WORDSIZE 32 + +struct user_fpregs_struct +{ +	long int cwd; +	long int swd; +	long int twd; +	long int fip; +	long int fcs; +	long int foo; +	long int fos; +	long int st_space[20]; +}; + +struct user_fpxregs_struct +{ +	unsigned short int cwd; +	unsigned short int swd; +	unsigned short int twd; +	unsigned short int fop; +	long int fip; +	long int fcs; +	long int foo; +	long int fos; +	long int mxcsr; +	long int reserved; +	long int st_space[32]; +	long int xmm_space[32]; +	long int padding[56]; +}; + +struct user_regs_struct +{ +	long int ebx; +	long int ecx; +	long int edx; +	long int esi; +	long int edi; +	long int ebp; +	long int eax; +	long int xds; +	long int xes; +	long int xfs; +	long int xgs; +	long int orig_eax; +	long int eip; +	long int xcs; +	long int eflags; +	long int esp; +	long int xss; +}; + +struct user +{ +	struct user_regs_struct		regs; +	int				u_fpvalid; +	struct user_fpregs_struct	i387; +	unsigned long int		u_tsize; +	unsigned long int		u_dsize; +	unsigned long int		u_ssize; +	unsigned long			start_code; +	unsigned long			start_stack; +	long int			signal; +	int				reserved; +	struct user_regs_struct		*u_ar0; +	struct user_fpregs_struct	*u_fpstate; +	unsigned long int		magic; +	char				u_comm[32]; +	int				u_debugreg[8]; +}; + +#define PAGE_MASK		(~(PAGE_SIZE-1)) +#define NBPG			PAGE_SIZE +#define UPAGES			1 +#define HOST_TEXT_START_ADDR	(u.start_code) +#define HOST_STACK_END_ADDR	(u.start_stack + u.u_ssize * NBPG) diff --git a/include/bits/wait.h b/include/bits/wait.h new file mode 100644 index 00000000..ca9b57e0 --- /dev/null +++ b/include/bits/wait.h @@ -0,0 +1,11 @@ +#define WNOHANG    1 +#define WUNTRACED  2 + +#define WSTOPPED   2 +#define WEXITED    4 +#define WCONTINUED 8 +#define WNOWAIT    0x1000000 + +#define P_ALL  0 +#define P_PID  1 +#define P_PGID 2 diff --git a/include/bits/wexitstatus.h b/include/bits/wexitstatus.h new file mode 100644 index 00000000..34a80238 --- /dev/null +++ b/include/bits/wexitstatus.h @@ -0,0 +1,9 @@ +#ifndef WEXITSTATUS +#define WEXITSTATUS(s) (((s) & 0xff00) >> 8) +#define WTERMSIG(s) ((s) & 0x7f) +#define WSTOPSIG(s) WEXITSTATUS(s) +#define WCOREDUMP(s) ((s) & 0x80) +#define WIFEXITED(s) (!WTERMSIG(s)) +#define WIFSTOPPED(s) (((s) & 0xff) == 0x7f) +#define WIFSIGNALED(s) (!WIFSTOPPED(s) && !WIFEXITED(s)) +#endif diff --git a/include/byteswap.h b/include/byteswap.h new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/include/byteswap.h diff --git a/include/cpio.h b/include/cpio.h new file mode 100644 index 00000000..39a1f8bb --- /dev/null +++ b/include/cpio.h @@ -0,0 +1,29 @@ +#ifndef _CPIO_H +#define _CPIO_H + +#define MAGIC "070707" + +#define C_IRUSR  000400 +#define C_IWUSR  000200 +#define C_IXUSR  000100 +#define C_IRGRP  000040 +#define C_IWGRP  000020 +#define C_IXGRP  000010 +#define C_IROTH  000004 +#define C_IWOTH  000002 +#define C_IXOTH  000001 + +#define C_ISUID  004000 +#define C_ISGID  002000 +#define C_ISVTX  001000 + +#define C_ISBLK  060000 +#define C_ISCHR  020000 +#define C_ISDIR  040000 +#define C_ISFIFO 010000 +#define C_ISSOCK 0140000 +#define C_ISLNK  0120000 +#define C_ISCTG  0110000 +#define C_ISREG  0100000 + +#endif diff --git a/include/ctype.h b/include/ctype.h new file mode 100644 index 00000000..02f81fa7 --- /dev/null +++ b/include/ctype.h @@ -0,0 +1,53 @@ +#ifndef	_CTYPE_H +#define	_CTYPE_H + +int   isalnum(int); +int   isalpha(int); +int   isblank(int); +int   iscntrl(int); +int   isdigit(int); +int   isgraph(int); +int   islower(int); +int   isprint(int); +int   ispunct(int); +int   isspace(int); +int   isupper(int); +int   isxdigit(int); +int   tolower(int); +int   toupper(int); + +int   isascii(int); +int   toascii(int); + +#define _tolower(a) ((a)|0x20) +#define _toupper(a) ((a)&0x5f) + +#define isalpha(a) ((unsigned)(((a)|32)-'a') < 26) +#define isdigit(a) ((unsigned)((a)-'0') < 10) +#define islower(a) ((unsigned)((a)-'a') < 26) +#define isupper(a) ((unsigned)((a)-'A') < 26) +#define isprint(a) ((unsigned)((a)-0x20) < 0x5f) +#define isgraph(a) ((unsigned)((a)-0x21) < 0x5e) + +#if 1 + +#define __NEED_locale_t +#include <bits/alltypes.h> + +int   isalnum_l(int, locale_t); +int   isalpha_l(int, locale_t); +int   isblank_l(int, locale_t); +int   iscntrl_l(int, locale_t); +int   isdigit_l(int, locale_t); +int   isgraph_l(int, locale_t); +int   islower_l(int, locale_t); +int   isprint_l(int, locale_t); +int   ispunct_l(int, locale_t); +int   isspace_l(int, locale_t); +int   isupper_l(int, locale_t); +int   isxdigit_l(int, locale_t); +int   tolower_l(int, locale_t); +int   toupper_l(int, locale_t); +#endif + +#endif diff --git a/include/dirent.h b/include/dirent.h new file mode 100644 index 00000000..a9170936 --- /dev/null +++ b/include/dirent.h @@ -0,0 +1,41 @@ +#ifndef	_DIRENT_H +#define	_DIRENT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_ino_t +#define __NEED_off_t + +#include <bits/alltypes.h> + +typedef struct __DIR_s DIR; + +struct dirent +{ +	ino_t d_ino; +	off_t d_off; +	unsigned short d_reclen; +	unsigned char d_type; +	char d_name[1]; +}; + +int            closedir(DIR *); +DIR           *fdopendir(int); +DIR           *opendir(const char *); +struct dirent *readdir(DIR *); +int            readdir_r(DIR *, struct dirent *, struct dirent **); +void           rewinddir(DIR *); +void           seekdir(DIR *, long); +long           telldir(DIR *); +int            dirfd(DIR *); + +int alphasort(const struct dirent **, const struct dirent **); +int scandir(const char *, struct dirent ***, int (*)(const struct dirent *), int (*)(const struct dirent **, const struct dirent **)); + +#ifdef __cplusplus +extern } +#endif + +#endif diff --git a/include/dlfcn.h b/include/dlfcn.h new file mode 100644 index 00000000..81b829c8 --- /dev/null +++ b/include/dlfcn.h @@ -0,0 +1,19 @@ +#ifndef	_DLFCN_H +#define	_DLFCN_H + +#define RTLD_LAZY   0x10000 +#define RTLD_NOW    0x20000 +#define RTLD_GLOBAL 0x40000 +#define RTLD_LOCAL  0x80000 + +#if 1 +#define RTLD_NEXT    ((void *) -1l) +#define RTLD_DEFAULT ((void *) 0) +#endif + +int    dlclose(void *); +char  *dlerror(void); +void  *dlopen(const char *, int); +void  *dlsym(void *, const char *); + +#endif diff --git a/include/elf.h b/include/elf.h new file mode 100644 index 00000000..b011e784 --- /dev/null +++ b/include/elf.h @@ -0,0 +1,2524 @@ +#ifndef _ELF_H +#define	_ELF_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> + +typedef uint16_t Elf32_Half; +typedef uint16_t Elf64_Half; + +typedef uint32_t Elf32_Word; +typedef	int32_t  Elf32_Sword; +typedef uint32_t Elf64_Word; +typedef	int32_t  Elf64_Sword; + +typedef uint64_t Elf32_Xword; +typedef	int64_t  Elf32_Sxword; +typedef uint64_t Elf64_Xword; +typedef	int64_t  Elf64_Sxword; + +typedef uint32_t Elf32_Addr; +typedef uint64_t Elf64_Addr; + +typedef uint32_t Elf32_Off; +typedef uint64_t Elf64_Off; + +typedef uint16_t Elf32_Section; +typedef uint16_t Elf64_Section; + +typedef Elf32_Half Elf32_Versym; +typedef Elf64_Half Elf64_Versym; + +#define EI_NIDENT (16) + +typedef struct { +  unsigned char	e_ident[EI_NIDENT]; +  Elf32_Half	e_type; +  Elf32_Half	e_machine; +  Elf32_Word	e_version; +  Elf32_Addr	e_entry; +  Elf32_Off	e_phoff; +  Elf32_Off	e_shoff; +  Elf32_Word	e_flags; +  Elf32_Half	e_ehsize; +  Elf32_Half	e_phentsize; +  Elf32_Half	e_phnum; +  Elf32_Half	e_shentsize; +  Elf32_Half	e_shnum; +  Elf32_Half	e_shstrndx; +} Elf32_Ehdr; + +typedef struct { +  unsigned char	e_ident[EI_NIDENT]; +  Elf64_Half	e_type; +  Elf64_Half	e_machine; +  Elf64_Word	e_version; +  Elf64_Addr	e_entry; +  Elf64_Off	e_phoff; +  Elf64_Off	e_shoff; +  Elf64_Word	e_flags; +  Elf64_Half	e_ehsize; +  Elf64_Half	e_phentsize; +  Elf64_Half	e_phnum; +  Elf64_Half	e_shentsize; +  Elf64_Half	e_shnum; +  Elf64_Half	e_shstrndx; +} Elf64_Ehdr; + +#define EI_MAG0		0 +#define ELFMAG0		0x7f + +#define EI_MAG1		1 +#define ELFMAG1		'E' + +#define EI_MAG2		2 +#define ELFMAG2		'L' + +#define EI_MAG3		3 +#define ELFMAG3		'F' + + +#define	ELFMAG		"\177ELF" +#define	SELFMAG		4 + +#define EI_CLASS	4 +#define ELFCLASSNONE	0 +#define ELFCLASS32	1 +#define ELFCLASS64	2 +#define ELFCLASSNUM	3 + +#define EI_DATA		5 +#define ELFDATANONE	0 +#define ELFDATA2LSB	1 +#define ELFDATA2MSB	2 +#define ELFDATANUM	3 + +#define EI_VERSION	6 + + +#define EI_OSABI	7 +#define ELFOSABI_NONE		0 +#define ELFOSABI_SYSV		0 +#define ELFOSABI_HPUX		1 +#define ELFOSABI_NETBSD		2 +#define ELFOSABI_LINUX		3 +#define ELFOSABI_SOLARIS	6 +#define ELFOSABI_AIX		7 +#define ELFOSABI_IRIX		8 +#define ELFOSABI_FREEBSD	9 +#define ELFOSABI_TRU64		10 +#define ELFOSABI_MODESTO	11 +#define ELFOSABI_OPENBSD	12 +#define ELFOSABI_ARM		97 +#define ELFOSABI_STANDALONE	255 + +#define EI_ABIVERSION	8 + +#define EI_PAD		9 + + + +#define ET_NONE		0 +#define ET_REL		1 +#define ET_EXEC		2 +#define ET_DYN		3 +#define ET_CORE		4 +#define	ET_NUM		5 +#define ET_LOOS		0xfe00 +#define ET_HIOS		0xfeff +#define ET_LOPROC	0xff00 +#define ET_HIPROC	0xffff + + + +#define EM_NONE		 0 +#define EM_M32		 1 +#define EM_SPARC	 2 +#define EM_386		 3 +#define EM_68K		 4 +#define EM_88K		 5 +#define EM_860		 7 +#define EM_MIPS		 8 +#define EM_S370		 9 +#define EM_MIPS_RS3_LE	10 + +#define EM_PARISC	15 +#define EM_VPP500	17 +#define EM_SPARC32PLUS	18 +#define EM_960		19 +#define EM_PPC		20 +#define EM_PPC64	21 +#define EM_S390		22 + +#define EM_V800		36 +#define EM_FR20		37 +#define EM_RH32		38 +#define EM_RCE		39 +#define EM_ARM		40 +#define EM_FAKE_ALPHA	41 +#define EM_SH		42 +#define EM_SPARCV9	43 +#define EM_TRICORE	44 +#define EM_ARC		45 +#define EM_H8_300	46 +#define EM_H8_300H	47 +#define EM_H8S		48 +#define EM_H8_500	49 +#define EM_IA_64	50 +#define EM_MIPS_X	51 +#define EM_COLDFIRE	52 +#define EM_68HC12	53 +#define EM_MMA		54 +#define EM_PCP		55 +#define EM_NCPU		56 +#define EM_NDR1		57 +#define EM_STARCORE	58 +#define EM_ME16		59 +#define EM_ST100	60 +#define EM_TINYJ	61 +#define EM_X86_64	62 +#define EM_PDSP		63 + +#define EM_FX66		66 +#define EM_ST9PLUS	67 +#define EM_ST7		68 +#define EM_68HC16	69 +#define EM_68HC11	70 +#define EM_68HC08	71 +#define EM_68HC05	72 +#define EM_SVX		73 +#define EM_ST19		74 +#define EM_VAX		75 +#define EM_CRIS		76 +#define EM_JAVELIN	77 +#define EM_FIREPATH	78 +#define EM_ZSP		79 +#define EM_MMIX		80 +#define EM_HUANY	81 +#define EM_PRISM	82 +#define EM_AVR		83 +#define EM_FR30		84 +#define EM_D10V		85 +#define EM_D30V		86 +#define EM_V850		87 +#define EM_M32R		88 +#define EM_MN10300	89 +#define EM_MN10200	90 +#define EM_PJ		91 +#define EM_OPENRISC	92 +#define EM_ARC_A5	93 +#define EM_XTENSA	94 +#define EM_NUM		95 +#define EM_ALPHA	0x9026 + +#define EV_NONE		0 +#define EV_CURRENT	1 +#define EV_NUM		2 + +typedef struct { +  Elf32_Word	sh_name; +  Elf32_Word	sh_type; +  Elf32_Word	sh_flags; +  Elf32_Addr	sh_addr; +  Elf32_Off	sh_offset; +  Elf32_Word	sh_size; +  Elf32_Word	sh_link; +  Elf32_Word	sh_info; +  Elf32_Word	sh_addralign; +  Elf32_Word	sh_entsize; +} Elf32_Shdr; + +typedef struct { +  Elf64_Word	sh_name; +  Elf64_Word	sh_type; +  Elf64_Xword	sh_flags; +  Elf64_Addr	sh_addr; +  Elf64_Off	sh_offset; +  Elf64_Xword	sh_size; +  Elf64_Word	sh_link; +  Elf64_Word	sh_info; +  Elf64_Xword	sh_addralign; +  Elf64_Xword	sh_entsize; +} Elf64_Shdr; + + + +#define SHN_UNDEF	0 +#define SHN_LORESERVE	0xff00 +#define SHN_LOPROC	0xff00 +#define SHN_BEFORE	0xff00 + +#define SHN_AFTER	0xff01 + +#define SHN_HIPROC	0xff1f +#define SHN_LOOS	0xff20 +#define SHN_HIOS	0xff3f +#define SHN_ABS		0xfff1 +#define SHN_COMMON	0xfff2 +#define SHN_XINDEX	0xffff +#define SHN_HIRESERVE	0xffff + + + +#define SHT_NULL	  0 +#define SHT_PROGBITS	  1 +#define SHT_SYMTAB	  2 +#define SHT_STRTAB	  3 +#define SHT_RELA	  4 +#define SHT_HASH	  5 +#define SHT_DYNAMIC	  6 +#define SHT_NOTE	  7 +#define SHT_NOBITS	  8 +#define SHT_REL		  9 +#define SHT_SHLIB	  10 +#define SHT_DYNSYM	  11 +#define SHT_INIT_ARRAY	  14 +#define SHT_FINI_ARRAY	  15 +#define SHT_PREINIT_ARRAY 16 +#define SHT_GROUP	  17 +#define SHT_SYMTAB_SHNDX  18 +#define	SHT_NUM		  19 +#define SHT_LOOS	  0x60000000 +#define SHT_GNU_ATTRIBUTES 0x6ffffff5 +#define SHT_GNU_HASH	  0x6ffffff6 +#define SHT_GNU_LIBLIST	  0x6ffffff7 +#define SHT_CHECKSUM	  0x6ffffff8 +#define SHT_LOSUNW	  0x6ffffffa +#define SHT_SUNW_move	  0x6ffffffa +#define SHT_SUNW_COMDAT   0x6ffffffb +#define SHT_SUNW_syminfo  0x6ffffffc +#define SHT_GNU_verdef	  0x6ffffffd +#define SHT_GNU_verneed	  0x6ffffffe +#define SHT_GNU_versym	  0x6fffffff +#define SHT_HISUNW	  0x6fffffff +#define SHT_HIOS	  0x6fffffff +#define SHT_LOPROC	  0x70000000 +#define SHT_HIPROC	  0x7fffffff +#define SHT_LOUSER	  0x80000000 +#define SHT_HIUSER	  0x8fffffff + +#define SHF_WRITE	     (1 << 0) +#define SHF_ALLOC	     (1 << 1) +#define SHF_EXECINSTR	     (1 << 2) +#define SHF_MERGE	     (1 << 4) +#define SHF_STRINGS	     (1 << 5) +#define SHF_INFO_LINK	     (1 << 6) +#define SHF_LINK_ORDER	     (1 << 7) +#define SHF_OS_NONCONFORMING (1 << 8) + +#define SHF_GROUP	     (1 << 9) +#define SHF_TLS		     (1 << 10) +#define SHF_MASKOS	     0x0ff00000 +#define SHF_MASKPROC	     0xf0000000 +#define SHF_ORDERED	     (1 << 30) +#define SHF_EXCLUDE	     (1 << 31) + +#define GRP_COMDAT	0x1 + +typedef struct { +  Elf32_Word	st_name; +  Elf32_Addr	st_value; +  Elf32_Word	st_size; +  unsigned char	st_info; +  unsigned char	st_other; +  Elf32_Section	st_shndx; +} Elf32_Sym; + +typedef struct { +  Elf64_Word	st_name; +  unsigned char	st_info; +  unsigned char st_other; +  Elf64_Section	st_shndx; +  Elf64_Addr	st_value; +  Elf64_Xword	st_size; +} Elf64_Sym; + +typedef struct { +  Elf32_Half si_boundto; +  Elf32_Half si_flags; +} Elf32_Syminfo; + +typedef struct { +  Elf64_Half si_boundto; +  Elf64_Half si_flags; +} Elf64_Syminfo; + +#define SYMINFO_BT_SELF		0xffff +#define SYMINFO_BT_PARENT	0xfffe +#define SYMINFO_BT_LOWRESERVE	0xff00 + +#define SYMINFO_FLG_DIRECT	0x0001 +#define SYMINFO_FLG_PASSTHRU	0x0002 +#define SYMINFO_FLG_COPY	0x0004 +#define SYMINFO_FLG_LAZYLOAD	0x0008 + +#define SYMINFO_NONE		0 +#define SYMINFO_CURRENT		1 +#define SYMINFO_NUM		2 + +#define ELF32_ST_BIND(val)		(((unsigned char) (val)) >> 4) +#define ELF32_ST_TYPE(val)		((val) & 0xf) +#define ELF32_ST_INFO(bind, type)	(((bind) << 4) + ((type) & 0xf)) + +#define ELF64_ST_BIND(val)		ELF32_ST_BIND (val) +#define ELF64_ST_TYPE(val)		ELF32_ST_TYPE (val) +#define ELF64_ST_INFO(bind, type)	ELF32_ST_INFO ((bind), (type)) + +#define STB_LOCAL	0 +#define STB_GLOBAL	1 +#define STB_WEAK	2 +#define	STB_NUM		3 +#define STB_LOOS	10 +#define STB_GNU_UNIQUE	10 +#define STB_HIOS	12 +#define STB_LOPROC	13 +#define STB_HIPROC	15 + +#define STT_NOTYPE	0 +#define STT_OBJECT	1 +#define STT_FUNC	2 +#define STT_SECTION	3 +#define STT_FILE	4 +#define STT_COMMON	5 +#define STT_TLS		6 +#define	STT_NUM		7 +#define STT_LOOS	10 +#define STT_GNU_IFUNC	10 +#define STT_HIOS	12 +#define STT_LOPROC	13 +#define STT_HIPROC	15 + +#define STN_UNDEF	0 + +#define ELF32_ST_VISIBILITY(o)	((o) & 0x03) +#define ELF64_ST_VISIBILITY(o)	ELF32_ST_VISIBILITY (o) + +#define STV_DEFAULT	0 +#define STV_INTERNAL	1 +#define STV_HIDDEN	2 +#define STV_PROTECTED	3 + + + + +typedef struct +{ +  Elf32_Addr	r_offset; +  Elf32_Word	r_info; +} Elf32_Rel; + +typedef struct { +  Elf64_Addr	r_offset; +  Elf64_Xword	r_info; +} Elf64_Rel; + + + +typedef struct { +  Elf32_Addr	r_offset; +  Elf32_Word	r_info; +  Elf32_Sword	r_addend; +} Elf32_Rela; + +typedef struct { +  Elf64_Addr	r_offset; +  Elf64_Xword	r_info; +  Elf64_Sxword	r_addend; +} Elf64_Rela; + + + +#define ELF32_R_SYM(val)		((val) >> 8) +#define ELF32_R_TYPE(val)		((val) & 0xff) +#define ELF32_R_INFO(sym, type)		(((sym) << 8) + ((type) & 0xff)) + +#define ELF64_R_SYM(i)			((i) >> 32) +#define ELF64_R_TYPE(i)			((i) & 0xffffffff) +#define ELF64_R_INFO(sym,type)		((((Elf64_Xword) (sym)) << 32) + (type)) + + + +typedef struct { +  Elf32_Word	p_type; +  Elf32_Off	p_offset; +  Elf32_Addr	p_vaddr; +  Elf32_Addr	p_paddr; +  Elf32_Word	p_filesz; +  Elf32_Word	p_memsz; +  Elf32_Word	p_flags; +  Elf32_Word	p_align; +} Elf32_Phdr; + +typedef struct { +  Elf64_Word	p_type; +  Elf64_Word	p_flags; +  Elf64_Off	p_offset; +  Elf64_Addr	p_vaddr; +  Elf64_Addr	p_paddr; +  Elf64_Xword	p_filesz; +  Elf64_Xword	p_memsz; +  Elf64_Xword	p_align; +} Elf64_Phdr; + + + +#define	PT_NULL		0 +#define PT_LOAD		1 +#define PT_DYNAMIC	2 +#define PT_INTERP	3 +#define PT_NOTE		4 +#define PT_SHLIB	5 +#define PT_PHDR		6 +#define PT_TLS		7 +#define	PT_NUM		8 +#define PT_LOOS		0x60000000 +#define PT_GNU_EH_FRAME	0x6474e550 +#define PT_GNU_STACK	0x6474e551 +#define PT_GNU_RELRO	0x6474e552 +#define PT_LOSUNW	0x6ffffffa +#define PT_SUNWBSS	0x6ffffffa +#define PT_SUNWSTACK	0x6ffffffb +#define PT_HISUNW	0x6fffffff +#define PT_HIOS		0x6fffffff +#define PT_LOPROC	0x70000000 +#define PT_HIPROC	0x7fffffff + + + +#define PF_X		(1 << 0) +#define PF_W		(1 << 1) +#define PF_R		(1 << 2) +#define PF_MASKOS	0x0ff00000 +#define PF_MASKPROC	0xf0000000 + + + +#define NT_PRSTATUS	1 +#define NT_FPREGSET	2 +#define NT_PRPSINFO	3 +#define NT_PRXREG	4 +#define NT_TASKSTRUCT	4 +#define NT_PLATFORM	5 +#define NT_AUXV		6 +#define NT_GWINDOWS	7 +#define NT_ASRS		8 +#define NT_PSTATUS	10 +#define NT_PSINFO	13 +#define NT_PRCRED	14 +#define NT_UTSNAME	15 +#define NT_LWPSTATUS	16 +#define NT_LWPSINFO	17 +#define NT_PRFPXREG	20 +#define NT_PRXFPREG	0x46e62b7f +#define NT_PPC_VMX	0x100 +#define NT_PPC_SPE	0x101 +#define NT_PPC_VSX	0x102 +#define NT_386_TLS	0x200 +#define NT_386_IOPERM	0x201 +#define NT_VERSION	1 + + + + +typedef struct { +  Elf32_Sword d_tag; +  union { +      Elf32_Word d_val; +      Elf32_Addr d_ptr; +  } d_un; +} Elf32_Dyn; + +typedef struct { +  Elf64_Sxword d_tag; +  union { +      Elf64_Xword d_val; +      Elf64_Addr d_ptr; +  } d_un; +} Elf64_Dyn; + + + +#define DT_NULL		0 +#define DT_NEEDED	1 +#define DT_PLTRELSZ	2 +#define DT_PLTGOT	3 +#define DT_HASH		4 +#define DT_STRTAB	5 +#define DT_SYMTAB	6 +#define DT_RELA		7 +#define DT_RELASZ	8 +#define DT_RELAENT	9 +#define DT_STRSZ	10 +#define DT_SYMENT	11 +#define DT_INIT		12 +#define DT_FINI		13 +#define DT_SONAME	14 +#define DT_RPATH	15 +#define DT_SYMBOLIC	16 +#define DT_REL		17 +#define DT_RELSZ	18 +#define DT_RELENT	19 +#define DT_PLTREL	20 +#define DT_DEBUG	21 +#define DT_TEXTREL	22 +#define DT_JMPREL	23 +#define	DT_BIND_NOW	24 +#define	DT_INIT_ARRAY	25 +#define	DT_FINI_ARRAY	26 +#define	DT_INIT_ARRAYSZ	27 +#define	DT_FINI_ARRAYSZ	28 +#define DT_RUNPATH	29 +#define DT_FLAGS	30 +#define DT_ENCODING	32 +#define DT_PREINIT_ARRAY 32 +#define DT_PREINIT_ARRAYSZ 33 +#define	DT_NUM		34 +#define DT_LOOS		0x6000000d +#define DT_HIOS		0x6ffff000 +#define DT_LOPROC	0x70000000 +#define DT_HIPROC	0x7fffffff +#define	DT_PROCNUM	DT_MIPS_NUM + +#define DT_VALRNGLO	0x6ffffd00 +#define DT_GNU_PRELINKED 0x6ffffdf5 +#define DT_GNU_CONFLICTSZ 0x6ffffdf6 +#define DT_GNU_LIBLISTSZ 0x6ffffdf7 +#define DT_CHECKSUM	0x6ffffdf8 +#define DT_PLTPADSZ	0x6ffffdf9 +#define DT_MOVEENT	0x6ffffdfa +#define DT_MOVESZ	0x6ffffdfb +#define DT_FEATURE_1	0x6ffffdfc +#define DT_POSFLAG_1	0x6ffffdfd + +#define DT_SYMINSZ	0x6ffffdfe +#define DT_SYMINENT	0x6ffffdff +#define DT_VALRNGHI	0x6ffffdff +#define DT_VALTAGIDX(tag)	(DT_VALRNGHI - (tag)) +#define DT_VALNUM 12 + +#define DT_ADDRRNGLO	0x6ffffe00 +#define DT_GNU_HASH	0x6ffffef5 +#define DT_TLSDESC_PLT	0x6ffffef6 +#define DT_TLSDESC_GOT	0x6ffffef7 +#define DT_GNU_CONFLICT	0x6ffffef8 +#define DT_GNU_LIBLIST	0x6ffffef9 +#define DT_CONFIG	0x6ffffefa +#define DT_DEPAUDIT	0x6ffffefb +#define DT_AUDIT	0x6ffffefc +#define	DT_PLTPAD	0x6ffffefd +#define	DT_MOVETAB	0x6ffffefe +#define DT_SYMINFO	0x6ffffeff +#define DT_ADDRRNGHI	0x6ffffeff +#define DT_ADDRTAGIDX(tag)	(DT_ADDRRNGHI - (tag)) +#define DT_ADDRNUM 11 + + + +#define DT_VERSYM	0x6ffffff0 + +#define DT_RELACOUNT	0x6ffffff9 +#define DT_RELCOUNT	0x6ffffffa + + +#define DT_FLAGS_1	0x6ffffffb +#define	DT_VERDEF	0x6ffffffc + +#define	DT_VERDEFNUM	0x6ffffffd +#define	DT_VERNEED	0x6ffffffe + +#define	DT_VERNEEDNUM	0x6fffffff +#define DT_VERSIONTAGIDX(tag)	(DT_VERNEEDNUM - (tag)) +#define DT_VERSIONTAGNUM 16 + + + +#define DT_AUXILIARY    0x7ffffffd +#define DT_FILTER       0x7fffffff +#define DT_EXTRATAGIDX(tag)	((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) +#define DT_EXTRANUM	3 + + +#define DF_ORIGIN	0x00000001 +#define DF_SYMBOLIC	0x00000002 +#define DF_TEXTREL	0x00000004 +#define DF_BIND_NOW	0x00000008 +#define DF_STATIC_TLS	0x00000010 + + + +#define DF_1_NOW	0x00000001 +#define DF_1_GLOBAL	0x00000002 +#define DF_1_GROUP	0x00000004 +#define DF_1_NODELETE	0x00000008 +#define DF_1_LOADFLTR	0x00000010 +#define DF_1_INITFIRST	0x00000020 +#define DF_1_NOOPEN	0x00000040 +#define DF_1_ORIGIN	0x00000080 +#define DF_1_DIRECT	0x00000100 +#define DF_1_TRANS	0x00000200 +#define DF_1_INTERPOSE	0x00000400 +#define DF_1_NODEFLIB	0x00000800 +#define DF_1_NODUMP	0x00001000 +#define DF_1_CONFALT	0x00002000 +#define DF_1_ENDFILTEE	0x00004000 +#define	DF_1_DISPRELDNE	0x00008000 +#define	DF_1_DISPRELPND	0x00010000 + + +#define DTF_1_PARINIT	0x00000001 +#define DTF_1_CONFEXP	0x00000002 + + +#define DF_P1_LAZYLOAD	0x00000001 +#define DF_P1_GROUPPERM	0x00000002 + + + + +typedef struct { +  Elf32_Half	vd_version; +  Elf32_Half	vd_flags; +  Elf32_Half	vd_ndx; +  Elf32_Half	vd_cnt; +  Elf32_Word	vd_hash; +  Elf32_Word	vd_aux; +  Elf32_Word	vd_next; +} Elf32_Verdef; + +typedef struct { +  Elf64_Half	vd_version; +  Elf64_Half	vd_flags; +  Elf64_Half	vd_ndx; +  Elf64_Half	vd_cnt; +  Elf64_Word	vd_hash; +  Elf64_Word	vd_aux; +  Elf64_Word	vd_next; +} Elf64_Verdef; + + + +#define VER_DEF_NONE	0 +#define VER_DEF_CURRENT	1 +#define VER_DEF_NUM	2 + + +#define VER_FLG_BASE	0x1 +#define VER_FLG_WEAK	0x2 + + +#define	VER_NDX_LOCAL		0 +#define	VER_NDX_GLOBAL		1 +#define	VER_NDX_LORESERVE	0xff00 +#define	VER_NDX_ELIMINATE	0xff01 + + + +typedef struct { +  Elf32_Word	vda_name; +  Elf32_Word	vda_next; +} Elf32_Verdaux; + +typedef struct { +  Elf64_Word	vda_name; +  Elf64_Word	vda_next; +} Elf64_Verdaux; + + + + +typedef struct { +  Elf32_Half	vn_version; +  Elf32_Half	vn_cnt; +  Elf32_Word	vn_file; +  Elf32_Word	vn_aux; +  Elf32_Word	vn_next; +} Elf32_Verneed; + +typedef struct { +  Elf64_Half	vn_version; +  Elf64_Half	vn_cnt; +  Elf64_Word	vn_file; +  Elf64_Word	vn_aux; +  Elf64_Word	vn_next; +} Elf64_Verneed; + + + +#define VER_NEED_NONE	 0 +#define VER_NEED_CURRENT 1 +#define VER_NEED_NUM	 2 + + + +typedef struct { +  Elf32_Word	vna_hash; +  Elf32_Half	vna_flags; +  Elf32_Half	vna_other; +  Elf32_Word	vna_name; +  Elf32_Word	vna_next; +} Elf32_Vernaux; + +typedef struct { +  Elf64_Word	vna_hash; +  Elf64_Half	vna_flags; +  Elf64_Half	vna_other; +  Elf64_Word	vna_name; +  Elf64_Word	vna_next; +} Elf64_Vernaux; + + + +#define VER_FLG_WEAK	0x2 + + + +typedef struct { +  uint32_t a_type; +  union { +      uint32_t a_val; +  } a_un; +} Elf32_auxv_t; + +typedef struct { +  uint64_t a_type; +  union { +      uint64_t a_val; +  } a_un; +} Elf64_auxv_t; + + + +#define AT_NULL		0 +#define AT_IGNORE	1 +#define AT_EXECFD	2 +#define AT_PHDR		3 +#define AT_PHENT	4 +#define AT_PHNUM	5 +#define AT_PAGESZ	6 +#define AT_BASE		7 +#define AT_FLAGS	8 +#define AT_ENTRY	9 +#define AT_NOTELF	10 +#define AT_UID		11 +#define AT_EUID		12 +#define AT_GID		13 +#define AT_EGID		14 +#define AT_CLKTCK	17 + + +#define AT_PLATFORM	15 +#define AT_HWCAP	16 + + + + +#define AT_FPUCW	18 + + +#define AT_DCACHEBSIZE	19 +#define AT_ICACHEBSIZE	20 +#define AT_UCACHEBSIZE	21 + + + +#define AT_IGNOREPPC	22 + +#define	AT_SECURE	23 + +#define AT_BASE_PLATFORM 24 + +#define AT_RANDOM	25 + +#define AT_EXECFN	31 + + + +#define AT_SYSINFO	32 +#define AT_SYSINFO_EHDR	33 + + + +#define AT_L1I_CACHESHAPE	34 +#define AT_L1D_CACHESHAPE	35 +#define AT_L2_CACHESHAPE	36 +#define AT_L3_CACHESHAPE	37 + + + + +typedef struct { +  Elf32_Word n_namesz; +  Elf32_Word n_descsz; +  Elf32_Word n_type; +} Elf32_Nhdr; + +typedef struct { +  Elf64_Word n_namesz; +  Elf64_Word n_descsz; +  Elf64_Word n_type; +} Elf64_Nhdr; + + + + +#define ELF_NOTE_SOLARIS	"SUNW Solaris" + + +#define ELF_NOTE_GNU		"GNU" + + + + + +#define ELF_NOTE_PAGESIZE_HINT	1 + + +#define NT_GNU_ABI_TAG	1 +#define ELF_NOTE_ABI	NT_GNU_ABI_TAG + + + +#define ELF_NOTE_OS_LINUX	0 +#define ELF_NOTE_OS_GNU		1 +#define ELF_NOTE_OS_SOLARIS2	2 +#define ELF_NOTE_OS_FREEBSD	3 + +#define NT_GNU_BUILD_ID	3 +#define NT_GNU_GOLD_VERSION	4 + + + +typedef struct { +  Elf32_Xword m_value; +  Elf32_Word m_info; +  Elf32_Word m_poffset; +  Elf32_Half m_repeat; +  Elf32_Half m_stride; +} Elf32_Move; + +typedef struct { +  Elf64_Xword m_value; +  Elf64_Xword m_info; +  Elf64_Xword m_poffset; +  Elf64_Half m_repeat; +  Elf64_Half m_stride; +} Elf64_Move; + + +#define ELF32_M_SYM(info)	((info) >> 8) +#define ELF32_M_SIZE(info)	((unsigned char) (info)) +#define ELF32_M_INFO(sym, size)	(((sym) << 8) + (unsigned char) (size)) + +#define ELF64_M_SYM(info)	ELF32_M_SYM (info) +#define ELF64_M_SIZE(info)	ELF32_M_SIZE (info) +#define ELF64_M_INFO(sym, size)	ELF32_M_INFO (sym, size) + +#define EF_CPU32	0x00810000 + +#define R_68K_NONE	0 +#define R_68K_32	1 +#define R_68K_16	2 +#define R_68K_8		3 +#define R_68K_PC32	4 +#define R_68K_PC16	5 +#define R_68K_PC8	6 +#define R_68K_GOT32	7 +#define R_68K_GOT16	8 +#define R_68K_GOT8	9 +#define R_68K_GOT32O	10 +#define R_68K_GOT16O	11 +#define R_68K_GOT8O	12 +#define R_68K_PLT32	13 +#define R_68K_PLT16	14 +#define R_68K_PLT8	15 +#define R_68K_PLT32O	16 +#define R_68K_PLT16O	17 +#define R_68K_PLT8O	18 +#define R_68K_COPY	19 +#define R_68K_GLOB_DAT	20 +#define R_68K_JMP_SLOT	21 +#define R_68K_RELATIVE	22 +#define R_68K_NUM	23 + +#define R_386_NONE	   0 +#define R_386_32	   1 +#define R_386_PC32	   2 +#define R_386_GOT32	   3 +#define R_386_PLT32	   4 +#define R_386_COPY	   5 +#define R_386_GLOB_DAT	   6 +#define R_386_JMP_SLOT	   7 +#define R_386_RELATIVE	   8 +#define R_386_GOTOFF	   9 +#define R_386_GOTPC	   10 +#define R_386_32PLT	   11 +#define R_386_TLS_TPOFF	   14 +#define R_386_TLS_IE	   15 +#define R_386_TLS_GOTIE	   16 +#define R_386_TLS_LE	   17 +#define R_386_TLS_GD	   18 +#define R_386_TLS_LDM	   19 +#define R_386_16	   20 +#define R_386_PC16	   21 +#define R_386_8		   22 +#define R_386_PC8	   23 +#define R_386_TLS_GD_32	   24 +#define R_386_TLS_GD_PUSH  25 +#define R_386_TLS_GD_CALL  26 +#define R_386_TLS_GD_POP   27 +#define R_386_TLS_LDM_32   28 +#define R_386_TLS_LDM_PUSH 29 +#define R_386_TLS_LDM_CALL 30 +#define R_386_TLS_LDM_POP  31 +#define R_386_TLS_LDO_32   32 +#define R_386_TLS_IE_32	   33 +#define R_386_TLS_LE_32	   34 +#define R_386_TLS_DTPMOD32 35 +#define R_386_TLS_DTPOFF32 36 +#define R_386_TLS_TPOFF32  37 +#define R_386_TLS_GOTDESC  39 +#define R_386_TLS_DESC_CALL 40 +#define R_386_TLS_DESC     41 +#define R_386_IRELATIVE	   42 +#define R_386_NUM	   43 + + + + + +#define STT_SPARC_REGISTER	13 + + + +#define EF_SPARCV9_MM		3 +#define EF_SPARCV9_TSO		0 +#define EF_SPARCV9_PSO		1 +#define EF_SPARCV9_RMO		2 +#define EF_SPARC_LEDATA		0x800000 +#define EF_SPARC_EXT_MASK	0xFFFF00 +#define EF_SPARC_32PLUS		0x000100 +#define EF_SPARC_SUN_US1	0x000200 +#define EF_SPARC_HAL_R1		0x000400 +#define EF_SPARC_SUN_US3	0x000800 + + + +#define R_SPARC_NONE		0 +#define R_SPARC_8		1 +#define R_SPARC_16		2 +#define R_SPARC_32		3 +#define R_SPARC_DISP8		4 +#define R_SPARC_DISP16		5 +#define R_SPARC_DISP32		6 +#define R_SPARC_WDISP30		7 +#define R_SPARC_WDISP22		8 +#define R_SPARC_HI22		9 +#define R_SPARC_22		10 +#define R_SPARC_13		11 +#define R_SPARC_LO10		12 +#define R_SPARC_GOT10		13 +#define R_SPARC_GOT13		14 +#define R_SPARC_GOT22		15 +#define R_SPARC_PC10		16 +#define R_SPARC_PC22		17 +#define R_SPARC_WPLT30		18 +#define R_SPARC_COPY		19 +#define R_SPARC_GLOB_DAT	20 +#define R_SPARC_JMP_SLOT	21 +#define R_SPARC_RELATIVE	22 +#define R_SPARC_UA32		23 + + + +#define R_SPARC_PLT32		24 +#define R_SPARC_HIPLT22		25 +#define R_SPARC_LOPLT10		26 +#define R_SPARC_PCPLT32		27 +#define R_SPARC_PCPLT22		28 +#define R_SPARC_PCPLT10		29 +#define R_SPARC_10		30 +#define R_SPARC_11		31 +#define R_SPARC_64		32 +#define R_SPARC_OLO10		33 +#define R_SPARC_HH22		34 +#define R_SPARC_HM10		35 +#define R_SPARC_LM22		36 +#define R_SPARC_PC_HH22		37 +#define R_SPARC_PC_HM10		38 +#define R_SPARC_PC_LM22		39 +#define R_SPARC_WDISP16		40 +#define R_SPARC_WDISP19		41 +#define R_SPARC_GLOB_JMP	42 +#define R_SPARC_7		43 +#define R_SPARC_5		44 +#define R_SPARC_6		45 +#define R_SPARC_DISP64		46 +#define R_SPARC_PLT64		47 +#define R_SPARC_HIX22		48 +#define R_SPARC_LOX10		49 +#define R_SPARC_H44		50 +#define R_SPARC_M44		51 +#define R_SPARC_L44		52 +#define R_SPARC_REGISTER	53 +#define R_SPARC_UA64		54 +#define R_SPARC_UA16		55 +#define R_SPARC_TLS_GD_HI22	56 +#define R_SPARC_TLS_GD_LO10	57 +#define R_SPARC_TLS_GD_ADD	58 +#define R_SPARC_TLS_GD_CALL	59 +#define R_SPARC_TLS_LDM_HI22	60 +#define R_SPARC_TLS_LDM_LO10	61 +#define R_SPARC_TLS_LDM_ADD	62 +#define R_SPARC_TLS_LDM_CALL	63 +#define R_SPARC_TLS_LDO_HIX22	64 +#define R_SPARC_TLS_LDO_LOX10	65 +#define R_SPARC_TLS_LDO_ADD	66 +#define R_SPARC_TLS_IE_HI22	67 +#define R_SPARC_TLS_IE_LO10	68 +#define R_SPARC_TLS_IE_LD	69 +#define R_SPARC_TLS_IE_LDX	70 +#define R_SPARC_TLS_IE_ADD	71 +#define R_SPARC_TLS_LE_HIX22	72 +#define R_SPARC_TLS_LE_LOX10	73 +#define R_SPARC_TLS_DTPMOD32	74 +#define R_SPARC_TLS_DTPMOD64	75 +#define R_SPARC_TLS_DTPOFF32	76 +#define R_SPARC_TLS_DTPOFF64	77 +#define R_SPARC_TLS_TPOFF32	78 +#define R_SPARC_TLS_TPOFF64	79 +#define R_SPARC_GOTDATA_HIX22	80 +#define R_SPARC_GOTDATA_LOX10	81 +#define R_SPARC_GOTDATA_OP_HIX22	82 +#define R_SPARC_GOTDATA_OP_LOX10	83 +#define R_SPARC_GOTDATA_OP	84 +#define R_SPARC_H34		85 +#define R_SPARC_SIZE32		86 +#define R_SPARC_SIZE64		87 +#define R_SPARC_GNU_VTINHERIT	250 +#define R_SPARC_GNU_VTENTRY	251 +#define R_SPARC_REV32		252 + +#define R_SPARC_NUM		253 + + + +#define DT_SPARC_REGISTER 0x70000001 +#define DT_SPARC_NUM	2 + + + +#define HWCAP_SPARC_FLUSH	1 +#define HWCAP_SPARC_STBAR	2 +#define HWCAP_SPARC_SWAP	4 +#define HWCAP_SPARC_MULDIV	8 +#define HWCAP_SPARC_V9		16 +#define HWCAP_SPARC_ULTRA3	32 +#define HWCAP_SPARC_BLKINIT	64 +#define HWCAP_SPARC_N2		128 + + + + + +#define EF_MIPS_NOREORDER   1 +#define EF_MIPS_PIC	    2 +#define EF_MIPS_CPIC	    4 +#define EF_MIPS_XGOT	    8 +#define EF_MIPS_64BIT_WHIRL 16 +#define EF_MIPS_ABI2	    32 +#define EF_MIPS_ABI_ON32    64 +#define EF_MIPS_ARCH	    0xf0000000 + + + +#define EF_MIPS_ARCH_1	    0x00000000 +#define EF_MIPS_ARCH_2	    0x10000000 +#define EF_MIPS_ARCH_3	    0x20000000 +#define EF_MIPS_ARCH_4	    0x30000000 +#define EF_MIPS_ARCH_5	    0x40000000 +#define EF_MIPS_ARCH_32	    0x60000000 +#define EF_MIPS_ARCH_64	    0x70000000 + + + +#define E_MIPS_ARCH_1	  0x00000000 +#define E_MIPS_ARCH_2	  0x10000000 +#define E_MIPS_ARCH_3	  0x20000000 +#define E_MIPS_ARCH_4	  0x30000000 +#define E_MIPS_ARCH_5	  0x40000000 +#define E_MIPS_ARCH_32	  0x60000000 +#define E_MIPS_ARCH_64	  0x70000000 + + + +#define SHN_MIPS_ACOMMON    0xff00 +#define SHN_MIPS_TEXT	    0xff01 +#define SHN_MIPS_DATA	    0xff02 +#define SHN_MIPS_SCOMMON    0xff03 +#define SHN_MIPS_SUNDEFINED 0xff04 + + + +#define SHT_MIPS_LIBLIST       0x70000000 +#define SHT_MIPS_MSYM	       0x70000001 +#define SHT_MIPS_CONFLICT      0x70000002 +#define SHT_MIPS_GPTAB	       0x70000003 +#define SHT_MIPS_UCODE	       0x70000004 +#define SHT_MIPS_DEBUG	       0x70000005 +#define SHT_MIPS_REGINFO       0x70000006 +#define SHT_MIPS_PACKAGE       0x70000007 +#define SHT_MIPS_PACKSYM       0x70000008 +#define SHT_MIPS_RELD	       0x70000009 +#define SHT_MIPS_IFACE         0x7000000b +#define SHT_MIPS_CONTENT       0x7000000c +#define SHT_MIPS_OPTIONS       0x7000000d +#define SHT_MIPS_SHDR	       0x70000010 +#define SHT_MIPS_FDESC	       0x70000011 +#define SHT_MIPS_EXTSYM	       0x70000012 +#define SHT_MIPS_DENSE	       0x70000013 +#define SHT_MIPS_PDESC	       0x70000014 +#define SHT_MIPS_LOCSYM	       0x70000015 +#define SHT_MIPS_AUXSYM	       0x70000016 +#define SHT_MIPS_OPTSYM	       0x70000017 +#define SHT_MIPS_LOCSTR	       0x70000018 +#define SHT_MIPS_LINE	       0x70000019 +#define SHT_MIPS_RFDESC	       0x7000001a +#define SHT_MIPS_DELTASYM      0x7000001b +#define SHT_MIPS_DELTAINST     0x7000001c +#define SHT_MIPS_DELTACLASS    0x7000001d +#define SHT_MIPS_DWARF         0x7000001e +#define SHT_MIPS_DELTADECL     0x7000001f +#define SHT_MIPS_SYMBOL_LIB    0x70000020 +#define SHT_MIPS_EVENTS	       0x70000021 +#define SHT_MIPS_TRANSLATE     0x70000022 +#define SHT_MIPS_PIXIE	       0x70000023 +#define SHT_MIPS_XLATE	       0x70000024 +#define SHT_MIPS_XLATE_DEBUG   0x70000025 +#define SHT_MIPS_WHIRL	       0x70000026 +#define SHT_MIPS_EH_REGION     0x70000027 +#define SHT_MIPS_XLATE_OLD     0x70000028 +#define SHT_MIPS_PDR_EXCEPTION 0x70000029 + + + +#define SHF_MIPS_GPREL	 0x10000000 +#define SHF_MIPS_MERGE	 0x20000000 +#define SHF_MIPS_ADDR	 0x40000000 +#define SHF_MIPS_STRINGS 0x80000000 +#define SHF_MIPS_NOSTRIP 0x08000000 +#define SHF_MIPS_LOCAL	 0x04000000 +#define SHF_MIPS_NAMES	 0x02000000 +#define SHF_MIPS_NODUPE	 0x01000000 + + + + + +#define STO_MIPS_DEFAULT		0x0 +#define STO_MIPS_INTERNAL		0x1 +#define STO_MIPS_HIDDEN			0x2 +#define STO_MIPS_PROTECTED		0x3 +#define STO_MIPS_PLT			0x8 +#define STO_MIPS_SC_ALIGN_UNUSED	0xff + + +#define STB_MIPS_SPLIT_COMMON		13 + + + +typedef union { +  struct { +      Elf32_Word gt_current_g_value; +      Elf32_Word gt_unused; +  } gt_header; +  struct { +      Elf32_Word gt_g_value; +      Elf32_Word gt_bytes; +  } gt_entry; +} Elf32_gptab; + + + +typedef struct { +  Elf32_Word	ri_gprmask; +  Elf32_Word	ri_cprmask[4]; +  Elf32_Sword	ri_gp_value; +} Elf32_RegInfo; + + + +typedef struct { +  unsigned char kind; + +  unsigned char size; +  Elf32_Section section; + +  Elf32_Word info; +} Elf_Options; + + + +#define ODK_NULL	0 +#define ODK_REGINFO	1 +#define ODK_EXCEPTIONS	2 +#define ODK_PAD		3 +#define ODK_HWPATCH	4 +#define ODK_FILL	5 +#define ODK_TAGS	6 +#define ODK_HWAND	7 +#define ODK_HWOR	8 + + + +#define OEX_FPU_MIN	0x1f +#define OEX_FPU_MAX	0x1f00 +#define OEX_PAGE0	0x10000 +#define OEX_SMM		0x20000 +#define OEX_FPDBUG	0x40000 +#define OEX_PRECISEFP	OEX_FPDBUG +#define OEX_DISMISS	0x80000 + +#define OEX_FPU_INVAL	0x10 +#define OEX_FPU_DIV0	0x08 +#define OEX_FPU_OFLO	0x04 +#define OEX_FPU_UFLO	0x02 +#define OEX_FPU_INEX	0x01 + + + +#define OHW_R4KEOP	0x1 +#define OHW_R8KPFETCH	0x2 +#define OHW_R5KEOP	0x4 +#define OHW_R5KCVTL	0x8 + +#define OPAD_PREFIX	0x1 +#define OPAD_POSTFIX	0x2 +#define OPAD_SYMBOL	0x4 + + + +typedef struct { +  Elf32_Word hwp_flags1; +  Elf32_Word hwp_flags2; +} Elf_Options_Hw; + + + +#define OHWA0_R4KEOP_CHECKED	0x00000001 +#define OHWA1_R4KEOP_CLEAN	0x00000002 + + + +#define R_MIPS_NONE		0 +#define R_MIPS_16		1 +#define R_MIPS_32		2 +#define R_MIPS_REL32		3 +#define R_MIPS_26		4 +#define R_MIPS_HI16		5 +#define R_MIPS_LO16		6 +#define R_MIPS_GPREL16		7 +#define R_MIPS_LITERAL		8 +#define R_MIPS_GOT16		9 +#define R_MIPS_PC16		10 +#define R_MIPS_CALL16		11 +#define R_MIPS_GPREL32		12 + +#define R_MIPS_SHIFT5		16 +#define R_MIPS_SHIFT6		17 +#define R_MIPS_64		18 +#define R_MIPS_GOT_DISP		19 +#define R_MIPS_GOT_PAGE		20 +#define R_MIPS_GOT_OFST		21 +#define R_MIPS_GOT_HI16		22 +#define R_MIPS_GOT_LO16		23 +#define R_MIPS_SUB		24 +#define R_MIPS_INSERT_A		25 +#define R_MIPS_INSERT_B		26 +#define R_MIPS_DELETE		27 +#define R_MIPS_HIGHER		28 +#define R_MIPS_HIGHEST		29 +#define R_MIPS_CALL_HI16	30 +#define R_MIPS_CALL_LO16	31 +#define R_MIPS_SCN_DISP		32 +#define R_MIPS_REL16		33 +#define R_MIPS_ADD_IMMEDIATE	34 +#define R_MIPS_PJUMP		35 +#define R_MIPS_RELGOT		36 +#define R_MIPS_JALR		37 +#define R_MIPS_TLS_DTPMOD32	38 +#define R_MIPS_TLS_DTPREL32	39 +#define R_MIPS_TLS_DTPMOD64	40 +#define R_MIPS_TLS_DTPREL64	41 +#define R_MIPS_TLS_GD		42 +#define R_MIPS_TLS_LDM		43 +#define R_MIPS_TLS_DTPREL_HI16	44 +#define R_MIPS_TLS_DTPREL_LO16	45 +#define R_MIPS_TLS_GOTTPREL	46 +#define R_MIPS_TLS_TPREL32	47 +#define R_MIPS_TLS_TPREL64	48 +#define R_MIPS_TLS_TPREL_HI16	49 +#define R_MIPS_TLS_TPREL_LO16	50 +#define R_MIPS_GLOB_DAT		51 +#define R_MIPS_COPY		126 +#define R_MIPS_JUMP_SLOT        127 + +#define R_MIPS_NUM		128 + + + +#define PT_MIPS_REGINFO	0x70000000 +#define PT_MIPS_RTPROC  0x70000001 +#define PT_MIPS_OPTIONS 0x70000002 + + + +#define PF_MIPS_LOCAL	0x10000000 + + + +#define DT_MIPS_RLD_VERSION  0x70000001 +#define DT_MIPS_TIME_STAMP   0x70000002 +#define DT_MIPS_ICHECKSUM    0x70000003 +#define DT_MIPS_IVERSION     0x70000004 +#define DT_MIPS_FLAGS	     0x70000005 +#define DT_MIPS_BASE_ADDRESS 0x70000006 +#define DT_MIPS_MSYM	     0x70000007 +#define DT_MIPS_CONFLICT     0x70000008 +#define DT_MIPS_LIBLIST	     0x70000009 +#define DT_MIPS_LOCAL_GOTNO  0x7000000a +#define DT_MIPS_CONFLICTNO   0x7000000b +#define DT_MIPS_LIBLISTNO    0x70000010 +#define DT_MIPS_SYMTABNO     0x70000011 +#define DT_MIPS_UNREFEXTNO   0x70000012 +#define DT_MIPS_GOTSYM	     0x70000013 +#define DT_MIPS_HIPAGENO     0x70000014 +#define DT_MIPS_RLD_MAP	     0x70000016 +#define DT_MIPS_DELTA_CLASS  0x70000017 +#define DT_MIPS_DELTA_CLASS_NO    0x70000018 + +#define DT_MIPS_DELTA_INSTANCE    0x70000019 +#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a + +#define DT_MIPS_DELTA_RELOC  0x7000001b +#define DT_MIPS_DELTA_RELOC_NO 0x7000001c + +#define DT_MIPS_DELTA_SYM    0x7000001d + +#define DT_MIPS_DELTA_SYM_NO 0x7000001e + +#define DT_MIPS_DELTA_CLASSSYM 0x70000020 + +#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 + +#define DT_MIPS_CXX_FLAGS    0x70000022 +#define DT_MIPS_PIXIE_INIT   0x70000023 +#define DT_MIPS_SYMBOL_LIB   0x70000024 +#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 +#define DT_MIPS_LOCAL_GOTIDX 0x70000026 +#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 +#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 +#define DT_MIPS_OPTIONS	     0x70000029 +#define DT_MIPS_INTERFACE    0x7000002a +#define DT_MIPS_DYNSTR_ALIGN 0x7000002b +#define DT_MIPS_INTERFACE_SIZE 0x7000002c +#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d + +#define DT_MIPS_PERF_SUFFIX  0x7000002e + +#define DT_MIPS_COMPACT_SIZE 0x7000002f +#define DT_MIPS_GP_VALUE     0x70000030 +#define DT_MIPS_AUX_DYNAMIC  0x70000031 + +#define DT_MIPS_PLTGOT	     0x70000032 + +#define DT_MIPS_RWPLT        0x70000034 +#define DT_MIPS_NUM	     0x35 + + + +#define RHF_NONE		   0 +#define RHF_QUICKSTART		   (1 << 0) +#define RHF_NOTPOT		   (1 << 1) +#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2) +#define RHF_NO_MOVE		   (1 << 3) +#define RHF_SGI_ONLY		   (1 << 4) +#define RHF_GUARANTEE_INIT	   (1 << 5) +#define RHF_DELTA_C_PLUS_PLUS	   (1 << 6) +#define RHF_GUARANTEE_START_INIT   (1 << 7) +#define RHF_PIXIE		   (1 << 8) +#define RHF_DEFAULT_DELAY_LOAD	   (1 << 9) +#define RHF_REQUICKSTART	   (1 << 10) +#define RHF_REQUICKSTARTED	   (1 << 11) +#define RHF_CORD		   (1 << 12) +#define RHF_NO_UNRES_UNDEF	   (1 << 13) +#define RHF_RLD_ORDER_SAFE	   (1 << 14) + + + +typedef struct +{ +  Elf32_Word l_name; +  Elf32_Word l_time_stamp; +  Elf32_Word l_checksum; +  Elf32_Word l_version; +  Elf32_Word l_flags; +} Elf32_Lib; + +typedef struct +{ +  Elf64_Word l_name; +  Elf64_Word l_time_stamp; +  Elf64_Word l_checksum; +  Elf64_Word l_version; +  Elf64_Word l_flags; +} Elf64_Lib; + + + + +#define LL_NONE		  0 +#define LL_EXACT_MATCH	  (1 << 0) +#define LL_IGNORE_INT_VER (1 << 1) +#define LL_REQUIRE_MINOR  (1 << 2) +#define LL_EXPORTS	  (1 << 3) +#define LL_DELAY_LOAD	  (1 << 4) +#define LL_DELTA	  (1 << 5) + + + +typedef Elf32_Addr Elf32_Conflict; + + + + + + +#define EF_PARISC_TRAPNIL	0x00010000 +#define EF_PARISC_EXT		0x00020000 +#define EF_PARISC_LSB		0x00040000 +#define EF_PARISC_WIDE		0x00080000 +#define EF_PARISC_NO_KABP	0x00100000 + +#define EF_PARISC_LAZYSWAP	0x00400000 +#define EF_PARISC_ARCH		0x0000ffff + + + +#define EFA_PARISC_1_0		    0x020b +#define EFA_PARISC_1_1		    0x0210 +#define EFA_PARISC_2_0		    0x0214 + + + +#define SHN_PARISC_ANSI_COMMON	0xff00 + +#define SHN_PARISC_HUGE_COMMON	0xff01 + + + +#define SHT_PARISC_EXT		0x70000000 +#define SHT_PARISC_UNWIND	0x70000001 +#define SHT_PARISC_DOC		0x70000002 + + + +#define SHF_PARISC_SHORT	0x20000000 +#define SHF_PARISC_HUGE		0x40000000 +#define SHF_PARISC_SBP		0x80000000 + + + +#define STT_PARISC_MILLICODE	13 + +#define STT_HP_OPAQUE		(STT_LOOS + 0x1) +#define STT_HP_STUB		(STT_LOOS + 0x2) + + + +#define R_PARISC_NONE		0 +#define R_PARISC_DIR32		1 +#define R_PARISC_DIR21L		2 +#define R_PARISC_DIR17R		3 +#define R_PARISC_DIR17F		4 +#define R_PARISC_DIR14R		6 +#define R_PARISC_PCREL32	9 +#define R_PARISC_PCREL21L	10 +#define R_PARISC_PCREL17R	11 +#define R_PARISC_PCREL17F	12 +#define R_PARISC_PCREL14R	14 +#define R_PARISC_DPREL21L	18 +#define R_PARISC_DPREL14R	22 +#define R_PARISC_GPREL21L	26 +#define R_PARISC_GPREL14R	30 +#define R_PARISC_LTOFF21L	34 +#define R_PARISC_LTOFF14R	38 +#define R_PARISC_SECREL32	41 +#define R_PARISC_SEGBASE	48 +#define R_PARISC_SEGREL32	49 +#define R_PARISC_PLTOFF21L	50 +#define R_PARISC_PLTOFF14R	54 +#define R_PARISC_LTOFF_FPTR32	57 +#define R_PARISC_LTOFF_FPTR21L	58 +#define R_PARISC_LTOFF_FPTR14R	62 +#define R_PARISC_FPTR64		64 +#define R_PARISC_PLABEL32	65 +#define R_PARISC_PLABEL21L	66 +#define R_PARISC_PLABEL14R	70 +#define R_PARISC_PCREL64	72 +#define R_PARISC_PCREL22F	74 +#define R_PARISC_PCREL14WR	75 +#define R_PARISC_PCREL14DR	76 +#define R_PARISC_PCREL16F	77 +#define R_PARISC_PCREL16WF	78 +#define R_PARISC_PCREL16DF	79 +#define R_PARISC_DIR64		80 +#define R_PARISC_DIR14WR	83 +#define R_PARISC_DIR14DR	84 +#define R_PARISC_DIR16F		85 +#define R_PARISC_DIR16WF	86 +#define R_PARISC_DIR16DF	87 +#define R_PARISC_GPREL64	88 +#define R_PARISC_GPREL14WR	91 +#define R_PARISC_GPREL14DR	92 +#define R_PARISC_GPREL16F	93 +#define R_PARISC_GPREL16WF	94 +#define R_PARISC_GPREL16DF	95 +#define R_PARISC_LTOFF64	96 +#define R_PARISC_LTOFF14WR	99 +#define R_PARISC_LTOFF14DR	100 +#define R_PARISC_LTOFF16F	101 +#define R_PARISC_LTOFF16WF	102 +#define R_PARISC_LTOFF16DF	103 +#define R_PARISC_SECREL64	104 +#define R_PARISC_SEGREL64	112 +#define R_PARISC_PLTOFF14WR	115 +#define R_PARISC_PLTOFF14DR	116 +#define R_PARISC_PLTOFF16F	117 +#define R_PARISC_PLTOFF16WF	118 +#define R_PARISC_PLTOFF16DF	119 +#define R_PARISC_LTOFF_FPTR64	120 +#define R_PARISC_LTOFF_FPTR14WR	123 +#define R_PARISC_LTOFF_FPTR14DR	124 +#define R_PARISC_LTOFF_FPTR16F	125 +#define R_PARISC_LTOFF_FPTR16WF	126 +#define R_PARISC_LTOFF_FPTR16DF	127 +#define R_PARISC_LORESERVE	128 +#define R_PARISC_COPY		128 +#define R_PARISC_IPLT		129 +#define R_PARISC_EPLT		130 +#define R_PARISC_TPREL32	153 +#define R_PARISC_TPREL21L	154 +#define R_PARISC_TPREL14R	158 +#define R_PARISC_LTOFF_TP21L	162 +#define R_PARISC_LTOFF_TP14R	166 +#define R_PARISC_LTOFF_TP14F	167 +#define R_PARISC_TPREL64	216 +#define R_PARISC_TPREL14WR	219 +#define R_PARISC_TPREL14DR	220 +#define R_PARISC_TPREL16F	221 +#define R_PARISC_TPREL16WF	222 +#define R_PARISC_TPREL16DF	223 +#define R_PARISC_LTOFF_TP64	224 +#define R_PARISC_LTOFF_TP14WR	227 +#define R_PARISC_LTOFF_TP14DR	228 +#define R_PARISC_LTOFF_TP16F	229 +#define R_PARISC_LTOFF_TP16WF	230 +#define R_PARISC_LTOFF_TP16DF	231 +#define R_PARISC_GNU_VTENTRY	232 +#define R_PARISC_GNU_VTINHERIT	233 +#define R_PARISC_TLS_GD21L	234 +#define R_PARISC_TLS_GD14R	235 +#define R_PARISC_TLS_GDCALL	236 +#define R_PARISC_TLS_LDM21L	237 +#define R_PARISC_TLS_LDM14R	238 +#define R_PARISC_TLS_LDMCALL	239 +#define R_PARISC_TLS_LDO21L	240 +#define R_PARISC_TLS_LDO14R	241 +#define R_PARISC_TLS_DTPMOD32	242 +#define R_PARISC_TLS_DTPMOD64	243 +#define R_PARISC_TLS_DTPOFF32	244 +#define R_PARISC_TLS_DTPOFF64	245 +#define R_PARISC_TLS_LE21L	R_PARISC_TPREL21L +#define R_PARISC_TLS_LE14R	R_PARISC_TPREL14R +#define R_PARISC_TLS_IE21L	R_PARISC_LTOFF_TP21L +#define R_PARISC_TLS_IE14R	R_PARISC_LTOFF_TP14R +#define R_PARISC_TLS_TPREL32	R_PARISC_TPREL32 +#define R_PARISC_TLS_TPREL64	R_PARISC_TPREL64 +#define R_PARISC_HIRESERVE	255 + + + +#define PT_HP_TLS		(PT_LOOS + 0x0) +#define PT_HP_CORE_NONE		(PT_LOOS + 0x1) +#define PT_HP_CORE_VERSION	(PT_LOOS + 0x2) +#define PT_HP_CORE_KERNEL	(PT_LOOS + 0x3) +#define PT_HP_CORE_COMM		(PT_LOOS + 0x4) +#define PT_HP_CORE_PROC		(PT_LOOS + 0x5) +#define PT_HP_CORE_LOADABLE	(PT_LOOS + 0x6) +#define PT_HP_CORE_STACK	(PT_LOOS + 0x7) +#define PT_HP_CORE_SHM		(PT_LOOS + 0x8) +#define PT_HP_CORE_MMF		(PT_LOOS + 0x9) +#define PT_HP_PARALLEL		(PT_LOOS + 0x10) +#define PT_HP_FASTBIND		(PT_LOOS + 0x11) +#define PT_HP_OPT_ANNOT		(PT_LOOS + 0x12) +#define PT_HP_HSL_ANNOT		(PT_LOOS + 0x13) +#define PT_HP_STACK		(PT_LOOS + 0x14) + +#define PT_PARISC_ARCHEXT	0x70000000 +#define PT_PARISC_UNWIND	0x70000001 + + + +#define PF_PARISC_SBP		0x08000000 + +#define PF_HP_PAGE_SIZE		0x00100000 +#define PF_HP_FAR_SHARED	0x00200000 +#define PF_HP_NEAR_SHARED	0x00400000 +#define PF_HP_CODE		0x01000000 +#define PF_HP_MODIFY		0x02000000 +#define PF_HP_LAZYSWAP		0x04000000 +#define PF_HP_SBP		0x08000000 + + + + + + +#define EF_ALPHA_32BIT		1 +#define EF_ALPHA_CANRELAX	2 + + + + +#define SHT_ALPHA_DEBUG		0x70000001 +#define SHT_ALPHA_REGINFO	0x70000002 + + + +#define SHF_ALPHA_GPREL		0x10000000 + + +#define STO_ALPHA_NOPV		0x80 +#define STO_ALPHA_STD_GPLOAD	0x88 + + + +#define R_ALPHA_NONE		0 +#define R_ALPHA_REFLONG		1 +#define R_ALPHA_REFQUAD		2 +#define R_ALPHA_GPREL32		3 +#define R_ALPHA_LITERAL		4 +#define R_ALPHA_LITUSE		5 +#define R_ALPHA_GPDISP		6 +#define R_ALPHA_BRADDR		7 +#define R_ALPHA_HINT		8 +#define R_ALPHA_SREL16		9 +#define R_ALPHA_SREL32		10 +#define R_ALPHA_SREL64		11 +#define R_ALPHA_GPRELHIGH	17 +#define R_ALPHA_GPRELLOW	18 +#define R_ALPHA_GPREL16		19 +#define R_ALPHA_COPY		24 +#define R_ALPHA_GLOB_DAT	25 +#define R_ALPHA_JMP_SLOT	26 +#define R_ALPHA_RELATIVE	27 +#define R_ALPHA_TLS_GD_HI	28 +#define R_ALPHA_TLSGD		29 +#define R_ALPHA_TLS_LDM		30 +#define R_ALPHA_DTPMOD64	31 +#define R_ALPHA_GOTDTPREL	32 +#define R_ALPHA_DTPREL64	33 +#define R_ALPHA_DTPRELHI	34 +#define R_ALPHA_DTPRELLO	35 +#define R_ALPHA_DTPREL16	36 +#define R_ALPHA_GOTTPREL	37 +#define R_ALPHA_TPREL64		38 +#define R_ALPHA_TPRELHI		39 +#define R_ALPHA_TPRELLO		40 +#define R_ALPHA_TPREL16		41 + +#define R_ALPHA_NUM		46 + + +#define LITUSE_ALPHA_ADDR	0 +#define LITUSE_ALPHA_BASE	1 +#define LITUSE_ALPHA_BYTOFF	2 +#define LITUSE_ALPHA_JSR	3 +#define LITUSE_ALPHA_TLS_GD	4 +#define LITUSE_ALPHA_TLS_LDM	5 + + +#define DT_ALPHA_PLTRO		(DT_LOPROC + 0) +#define DT_ALPHA_NUM		1 + + + + +#define EF_PPC_EMB		0x80000000 + + +#define EF_PPC_RELOCATABLE	0x00010000 +#define EF_PPC_RELOCATABLE_LIB	0x00008000 + + + +#define R_PPC_NONE		0 +#define R_PPC_ADDR32		1 +#define R_PPC_ADDR24		2 +#define R_PPC_ADDR16		3 +#define R_PPC_ADDR16_LO		4 +#define R_PPC_ADDR16_HI		5 +#define R_PPC_ADDR16_HA		6 +#define R_PPC_ADDR14		7 +#define R_PPC_ADDR14_BRTAKEN	8 +#define R_PPC_ADDR14_BRNTAKEN	9 +#define R_PPC_REL24		10 +#define R_PPC_REL14		11 +#define R_PPC_REL14_BRTAKEN	12 +#define R_PPC_REL14_BRNTAKEN	13 +#define R_PPC_GOT16		14 +#define R_PPC_GOT16_LO		15 +#define R_PPC_GOT16_HI		16 +#define R_PPC_GOT16_HA		17 +#define R_PPC_PLTREL24		18 +#define R_PPC_COPY		19 +#define R_PPC_GLOB_DAT		20 +#define R_PPC_JMP_SLOT		21 +#define R_PPC_RELATIVE		22 +#define R_PPC_LOCAL24PC		23 +#define R_PPC_UADDR32		24 +#define R_PPC_UADDR16		25 +#define R_PPC_REL32		26 +#define R_PPC_PLT32		27 +#define R_PPC_PLTREL32		28 +#define R_PPC_PLT16_LO		29 +#define R_PPC_PLT16_HI		30 +#define R_PPC_PLT16_HA		31 +#define R_PPC_SDAREL16		32 +#define R_PPC_SECTOFF		33 +#define R_PPC_SECTOFF_LO	34 +#define R_PPC_SECTOFF_HI	35 +#define R_PPC_SECTOFF_HA	36 + + +#define R_PPC_TLS		67 +#define R_PPC_DTPMOD32		68 +#define R_PPC_TPREL16		69 +#define R_PPC_TPREL16_LO	70 +#define R_PPC_TPREL16_HI	71 +#define R_PPC_TPREL16_HA	72 +#define R_PPC_TPREL32		73 +#define R_PPC_DTPREL16		74 +#define R_PPC_DTPREL16_LO	75 +#define R_PPC_DTPREL16_HI	76 +#define R_PPC_DTPREL16_HA	77 +#define R_PPC_DTPREL32		78 +#define R_PPC_GOT_TLSGD16	79 +#define R_PPC_GOT_TLSGD16_LO	80 +#define R_PPC_GOT_TLSGD16_HI	81 +#define R_PPC_GOT_TLSGD16_HA	82 +#define R_PPC_GOT_TLSLD16	83 +#define R_PPC_GOT_TLSLD16_LO	84 +#define R_PPC_GOT_TLSLD16_HI	85 +#define R_PPC_GOT_TLSLD16_HA	86 +#define R_PPC_GOT_TPREL16	87 +#define R_PPC_GOT_TPREL16_LO	88 +#define R_PPC_GOT_TPREL16_HI	89 +#define R_PPC_GOT_TPREL16_HA	90 +#define R_PPC_GOT_DTPREL16	91 +#define R_PPC_GOT_DTPREL16_LO	92 +#define R_PPC_GOT_DTPREL16_HI	93 +#define R_PPC_GOT_DTPREL16_HA	94 + + + +#define R_PPC_EMB_NADDR32	101 +#define R_PPC_EMB_NADDR16	102 +#define R_PPC_EMB_NADDR16_LO	103 +#define R_PPC_EMB_NADDR16_HI	104 +#define R_PPC_EMB_NADDR16_HA	105 +#define R_PPC_EMB_SDAI16	106 +#define R_PPC_EMB_SDA2I16	107 +#define R_PPC_EMB_SDA2REL	108 +#define R_PPC_EMB_SDA21		109 +#define R_PPC_EMB_MRKREF	110 +#define R_PPC_EMB_RELSEC16	111 +#define R_PPC_EMB_RELST_LO	112 +#define R_PPC_EMB_RELST_HI	113 +#define R_PPC_EMB_RELST_HA	114 +#define R_PPC_EMB_BIT_FLD	115 +#define R_PPC_EMB_RELSDA	116 + + +#define R_PPC_DIAB_SDA21_LO	180 +#define R_PPC_DIAB_SDA21_HI	181 +#define R_PPC_DIAB_SDA21_HA	182 +#define R_PPC_DIAB_RELSDA_LO	183 +#define R_PPC_DIAB_RELSDA_HI	184 +#define R_PPC_DIAB_RELSDA_HA	185 + + +#define R_PPC_IRELATIVE		248 + + +#define R_PPC_REL16		249 +#define R_PPC_REL16_LO		250 +#define R_PPC_REL16_HI		251 +#define R_PPC_REL16_HA		252 + + + +#define R_PPC_TOC16		255 + + +#define DT_PPC_GOT		(DT_LOPROC + 0) +#define DT_PPC_NUM		1 + + +#define R_PPC64_NONE		R_PPC_NONE +#define R_PPC64_ADDR32		R_PPC_ADDR32 +#define R_PPC64_ADDR24		R_PPC_ADDR24 +#define R_PPC64_ADDR16		R_PPC_ADDR16 +#define R_PPC64_ADDR16_LO	R_PPC_ADDR16_LO +#define R_PPC64_ADDR16_HI	R_PPC_ADDR16_HI +#define R_PPC64_ADDR16_HA	R_PPC_ADDR16_HA +#define R_PPC64_ADDR14		R_PPC_ADDR14 +#define R_PPC64_ADDR14_BRTAKEN	R_PPC_ADDR14_BRTAKEN +#define R_PPC64_ADDR14_BRNTAKEN	R_PPC_ADDR14_BRNTAKEN +#define R_PPC64_REL24		R_PPC_REL24 +#define R_PPC64_REL14		R_PPC_REL14 +#define R_PPC64_REL14_BRTAKEN	R_PPC_REL14_BRTAKEN +#define R_PPC64_REL14_BRNTAKEN	R_PPC_REL14_BRNTAKEN +#define R_PPC64_GOT16		R_PPC_GOT16 +#define R_PPC64_GOT16_LO	R_PPC_GOT16_LO +#define R_PPC64_GOT16_HI	R_PPC_GOT16_HI +#define R_PPC64_GOT16_HA	R_PPC_GOT16_HA + +#define R_PPC64_COPY		R_PPC_COPY +#define R_PPC64_GLOB_DAT	R_PPC_GLOB_DAT +#define R_PPC64_JMP_SLOT	R_PPC_JMP_SLOT +#define R_PPC64_RELATIVE	R_PPC_RELATIVE + +#define R_PPC64_UADDR32		R_PPC_UADDR32 +#define R_PPC64_UADDR16		R_PPC_UADDR16 +#define R_PPC64_REL32		R_PPC_REL32 +#define R_PPC64_PLT32		R_PPC_PLT32 +#define R_PPC64_PLTREL32	R_PPC_PLTREL32 +#define R_PPC64_PLT16_LO	R_PPC_PLT16_LO +#define R_PPC64_PLT16_HI	R_PPC_PLT16_HI +#define R_PPC64_PLT16_HA	R_PPC_PLT16_HA + +#define R_PPC64_SECTOFF		R_PPC_SECTOFF +#define R_PPC64_SECTOFF_LO	R_PPC_SECTOFF_LO +#define R_PPC64_SECTOFF_HI	R_PPC_SECTOFF_HI +#define R_PPC64_SECTOFF_HA	R_PPC_SECTOFF_HA +#define R_PPC64_ADDR30		37 +#define R_PPC64_ADDR64		38 +#define R_PPC64_ADDR16_HIGHER	39 +#define R_PPC64_ADDR16_HIGHERA	40 +#define R_PPC64_ADDR16_HIGHEST	41 +#define R_PPC64_ADDR16_HIGHESTA	42 +#define R_PPC64_UADDR64		43 +#define R_PPC64_REL64		44 +#define R_PPC64_PLT64		45 +#define R_PPC64_PLTREL64	46 +#define R_PPC64_TOC16		47 +#define R_PPC64_TOC16_LO	48 +#define R_PPC64_TOC16_HI	49 +#define R_PPC64_TOC16_HA	50 +#define R_PPC64_TOC		51 +#define R_PPC64_PLTGOT16	52 +#define R_PPC64_PLTGOT16_LO	53 +#define R_PPC64_PLTGOT16_HI	54 +#define R_PPC64_PLTGOT16_HA	55 + +#define R_PPC64_ADDR16_DS	56 +#define R_PPC64_ADDR16_LO_DS	57 +#define R_PPC64_GOT16_DS	58 +#define R_PPC64_GOT16_LO_DS	59 +#define R_PPC64_PLT16_LO_DS	60 +#define R_PPC64_SECTOFF_DS	61 +#define R_PPC64_SECTOFF_LO_DS	62 +#define R_PPC64_TOC16_DS	63 +#define R_PPC64_TOC16_LO_DS	64 +#define R_PPC64_PLTGOT16_DS	65 +#define R_PPC64_PLTGOT16_LO_DS	66 + + +#define R_PPC64_TLS		67 +#define R_PPC64_DTPMOD64	68 +#define R_PPC64_TPREL16		69 +#define R_PPC64_TPREL16_LO	70 +#define R_PPC64_TPREL16_HI	71 +#define R_PPC64_TPREL16_HA	72 +#define R_PPC64_TPREL64		73 +#define R_PPC64_DTPREL16	74 +#define R_PPC64_DTPREL16_LO	75 +#define R_PPC64_DTPREL16_HI	76 +#define R_PPC64_DTPREL16_HA	77 +#define R_PPC64_DTPREL64	78 +#define R_PPC64_GOT_TLSGD16	79 +#define R_PPC64_GOT_TLSGD16_LO	80 +#define R_PPC64_GOT_TLSGD16_HI	81 +#define R_PPC64_GOT_TLSGD16_HA	82 +#define R_PPC64_GOT_TLSLD16	83 +#define R_PPC64_GOT_TLSLD16_LO	84 +#define R_PPC64_GOT_TLSLD16_HI	85 +#define R_PPC64_GOT_TLSLD16_HA	86 +#define R_PPC64_GOT_TPREL16_DS	87 +#define R_PPC64_GOT_TPREL16_LO_DS 88 +#define R_PPC64_GOT_TPREL16_HI	89 +#define R_PPC64_GOT_TPREL16_HA	90 +#define R_PPC64_GOT_DTPREL16_DS	91 +#define R_PPC64_GOT_DTPREL16_LO_DS 92 +#define R_PPC64_GOT_DTPREL16_HI	93 +#define R_PPC64_GOT_DTPREL16_HA	94 +#define R_PPC64_TPREL16_DS	95 +#define R_PPC64_TPREL16_LO_DS	96 +#define R_PPC64_TPREL16_HIGHER	97 +#define R_PPC64_TPREL16_HIGHERA	98 +#define R_PPC64_TPREL16_HIGHEST	99 +#define R_PPC64_TPREL16_HIGHESTA 100 +#define R_PPC64_DTPREL16_DS	101 +#define R_PPC64_DTPREL16_LO_DS	102 +#define R_PPC64_DTPREL16_HIGHER	103 +#define R_PPC64_DTPREL16_HIGHERA 104 +#define R_PPC64_DTPREL16_HIGHEST 105 +#define R_PPC64_DTPREL16_HIGHESTA 106 + + +#define R_PPC64_JMP_IREL	247 +#define R_PPC64_IRELATIVE	248 +#define R_PPC64_REL16		249 +#define R_PPC64_REL16_LO	250 +#define R_PPC64_REL16_HI	251 +#define R_PPC64_REL16_HA	252 + + +#define DT_PPC64_GLINK  (DT_LOPROC + 0) +#define DT_PPC64_OPD	(DT_LOPROC + 1) +#define DT_PPC64_OPDSZ	(DT_LOPROC + 2) +#define DT_PPC64_NUM    3 + + + + + +#define EF_ARM_RELEXEC		0x01 +#define EF_ARM_HASENTRY		0x02 +#define EF_ARM_INTERWORK	0x04 +#define EF_ARM_APCS_26		0x08 +#define EF_ARM_APCS_FLOAT	0x10 +#define EF_ARM_PIC		0x20 +#define EF_ARM_ALIGN8		0x40 +#define EF_ARM_NEW_ABI		0x80 +#define EF_ARM_OLD_ABI		0x100 +#define EF_ARM_SOFT_FLOAT	0x200 +#define EF_ARM_VFP_FLOAT	0x400 +#define EF_ARM_MAVERICK_FLOAT	0x800 + + + + +#define EF_ARM_SYMSARESORTED	0x04 +#define EF_ARM_DYNSYMSUSESEGIDX	0x08 +#define EF_ARM_MAPSYMSFIRST	0x10 +#define EF_ARM_EABIMASK		0XFF000000 + + +#define EF_ARM_BE8	    0x00800000 +#define EF_ARM_LE8	    0x00400000 + +#define EF_ARM_EABI_VERSION(flags)	((flags) & EF_ARM_EABIMASK) +#define EF_ARM_EABI_UNKNOWN	0x00000000 +#define EF_ARM_EABI_VER1	0x01000000 +#define EF_ARM_EABI_VER2	0x02000000 +#define EF_ARM_EABI_VER3	0x03000000 +#define EF_ARM_EABI_VER4	0x04000000 +#define EF_ARM_EABI_VER5	0x05000000 + + +#define STT_ARM_TFUNC		STT_LOPROC +#define STT_ARM_16BIT		STT_HIPROC + + +#define SHF_ARM_ENTRYSECT	0x10000000 +#define SHF_ARM_COMDEF		0x80000000 + + + +#define PF_ARM_SB		0x10000000 + +#define PF_ARM_PI		0x20000000 +#define PF_ARM_ABS		0x40000000 + + +#define PT_ARM_EXIDX		(PT_LOPROC + 1) + + +#define SHT_ARM_EXIDX		(SHT_LOPROC + 1) +#define SHT_ARM_PREEMPTMAP	(SHT_LOPROC + 2) +#define SHT_ARM_ATTRIBUTES	(SHT_LOPROC + 3) + + + + +#define R_ARM_NONE		0 +#define R_ARM_PC24		1 +#define R_ARM_ABS32		2 +#define R_ARM_REL32		3 +#define R_ARM_PC13		4 +#define R_ARM_ABS16		5 +#define R_ARM_ABS12		6 +#define R_ARM_THM_ABS5		7 +#define R_ARM_ABS8		8 +#define R_ARM_SBREL32		9 +#define R_ARM_THM_PC22		10 +#define R_ARM_THM_PC8		11 +#define R_ARM_AMP_VCALL9	12 +#define R_ARM_SWI24		13 +#define R_ARM_THM_SWI8		14 +#define R_ARM_XPC25		15 +#define R_ARM_THM_XPC22		16 +#define R_ARM_TLS_DTPMOD32	17 +#define R_ARM_TLS_DTPOFF32	18 +#define R_ARM_TLS_TPOFF32	19 +#define R_ARM_COPY		20 +#define R_ARM_GLOB_DAT		21 +#define R_ARM_JUMP_SLOT		22 +#define R_ARM_RELATIVE		23 +#define R_ARM_GOTOFF		24 +#define R_ARM_GOTPC		25 +#define R_ARM_GOT32		26 +#define R_ARM_PLT32		27 +#define R_ARM_ALU_PCREL_7_0	32 +#define R_ARM_ALU_PCREL_15_8	33 +#define R_ARM_ALU_PCREL_23_15	34 +#define R_ARM_LDR_SBREL_11_0	35 +#define R_ARM_ALU_SBREL_19_12	36 +#define R_ARM_ALU_SBREL_27_20	37 +#define R_ARM_GNU_VTENTRY	100 +#define R_ARM_GNU_VTINHERIT	101 +#define R_ARM_THM_PC11		102 +#define R_ARM_THM_PC9		103 +#define R_ARM_TLS_GD32		104 + +#define R_ARM_TLS_LDM32		105 + +#define R_ARM_TLS_LDO32		106 + +#define R_ARM_TLS_IE32		107 + +#define R_ARM_TLS_LE32		108 + +#define R_ARM_RXPC25		249 +#define R_ARM_RSBREL32		250 +#define R_ARM_THM_RPC22		251 +#define R_ARM_RREL32		252 +#define R_ARM_RABS22		253 +#define R_ARM_RPC24		254 +#define R_ARM_RBASE		255 + +#define R_ARM_NUM		256 + + + + +#define EF_IA_64_MASKOS		0x0000000f +#define EF_IA_64_ABI64		0x00000010 +#define EF_IA_64_ARCH		0xff000000 + + +#define PT_IA_64_ARCHEXT	(PT_LOPROC + 0) +#define PT_IA_64_UNWIND		(PT_LOPROC + 1) +#define PT_IA_64_HP_OPT_ANOT	(PT_LOOS + 0x12) +#define PT_IA_64_HP_HSL_ANOT	(PT_LOOS + 0x13) +#define PT_IA_64_HP_STACK	(PT_LOOS + 0x14) + + +#define PF_IA_64_NORECOV	0x80000000 + + +#define SHT_IA_64_EXT		(SHT_LOPROC + 0) +#define SHT_IA_64_UNWIND	(SHT_LOPROC + 1) + + +#define SHF_IA_64_SHORT		0x10000000 +#define SHF_IA_64_NORECOV	0x20000000 + + +#define DT_IA_64_PLT_RESERVE	(DT_LOPROC + 0) +#define DT_IA_64_NUM		1 + + +#define R_IA64_NONE		0x00 +#define R_IA64_IMM14		0x21 +#define R_IA64_IMM22		0x22 +#define R_IA64_IMM64		0x23 +#define R_IA64_DIR32MSB		0x24 +#define R_IA64_DIR32LSB		0x25 +#define R_IA64_DIR64MSB		0x26 +#define R_IA64_DIR64LSB		0x27 +#define R_IA64_GPREL22		0x2a +#define R_IA64_GPREL64I		0x2b +#define R_IA64_GPREL32MSB	0x2c +#define R_IA64_GPREL32LSB	0x2d +#define R_IA64_GPREL64MSB	0x2e +#define R_IA64_GPREL64LSB	0x2f +#define R_IA64_LTOFF22		0x32 +#define R_IA64_LTOFF64I		0x33 +#define R_IA64_PLTOFF22		0x3a +#define R_IA64_PLTOFF64I	0x3b +#define R_IA64_PLTOFF64MSB	0x3e +#define R_IA64_PLTOFF64LSB	0x3f +#define R_IA64_FPTR64I		0x43 +#define R_IA64_FPTR32MSB	0x44 +#define R_IA64_FPTR32LSB	0x45 +#define R_IA64_FPTR64MSB	0x46 +#define R_IA64_FPTR64LSB	0x47 +#define R_IA64_PCREL60B		0x48 +#define R_IA64_PCREL21B		0x49 +#define R_IA64_PCREL21M		0x4a +#define R_IA64_PCREL21F		0x4b +#define R_IA64_PCREL32MSB	0x4c +#define R_IA64_PCREL32LSB	0x4d +#define R_IA64_PCREL64MSB	0x4e +#define R_IA64_PCREL64LSB	0x4f +#define R_IA64_LTOFF_FPTR22	0x52 +#define R_IA64_LTOFF_FPTR64I	0x53 +#define R_IA64_LTOFF_FPTR32MSB	0x54 +#define R_IA64_LTOFF_FPTR32LSB	0x55 +#define R_IA64_LTOFF_FPTR64MSB	0x56 +#define R_IA64_LTOFF_FPTR64LSB	0x57 +#define R_IA64_SEGREL32MSB	0x5c +#define R_IA64_SEGREL32LSB	0x5d +#define R_IA64_SEGREL64MSB	0x5e +#define R_IA64_SEGREL64LSB	0x5f +#define R_IA64_SECREL32MSB	0x64 +#define R_IA64_SECREL32LSB	0x65 +#define R_IA64_SECREL64MSB	0x66 +#define R_IA64_SECREL64LSB	0x67 +#define R_IA64_REL32MSB		0x6c +#define R_IA64_REL32LSB		0x6d +#define R_IA64_REL64MSB		0x6e +#define R_IA64_REL64LSB		0x6f +#define R_IA64_LTV32MSB		0x74 +#define R_IA64_LTV32LSB		0x75 +#define R_IA64_LTV64MSB		0x76 +#define R_IA64_LTV64LSB		0x77 +#define R_IA64_PCREL21BI	0x79 +#define R_IA64_PCREL22		0x7a +#define R_IA64_PCREL64I		0x7b +#define R_IA64_IPLTMSB		0x80 +#define R_IA64_IPLTLSB		0x81 +#define R_IA64_COPY		0x84 +#define R_IA64_SUB		0x85 +#define R_IA64_LTOFF22X		0x86 +#define R_IA64_LDXMOV		0x87 +#define R_IA64_TPREL14		0x91 +#define R_IA64_TPREL22		0x92 +#define R_IA64_TPREL64I		0x93 +#define R_IA64_TPREL64MSB	0x96 +#define R_IA64_TPREL64LSB	0x97 +#define R_IA64_LTOFF_TPREL22	0x9a +#define R_IA64_DTPMOD64MSB	0xa6 +#define R_IA64_DTPMOD64LSB	0xa7 +#define R_IA64_LTOFF_DTPMOD22	0xaa +#define R_IA64_DTPREL14		0xb1 +#define R_IA64_DTPREL22		0xb2 +#define R_IA64_DTPREL64I	0xb3 +#define R_IA64_DTPREL32MSB	0xb4 +#define R_IA64_DTPREL32LSB	0xb5 +#define R_IA64_DTPREL64MSB	0xb6 +#define R_IA64_DTPREL64LSB	0xb7 +#define R_IA64_LTOFF_DTPREL22	0xba + + + + +#define	R_SH_NONE		0 +#define	R_SH_DIR32		1 +#define	R_SH_REL32		2 +#define	R_SH_DIR8WPN		3 +#define	R_SH_IND12W		4 +#define	R_SH_DIR8WPL		5 +#define	R_SH_DIR8WPZ		6 +#define	R_SH_DIR8BP		7 +#define	R_SH_DIR8W		8 +#define	R_SH_DIR8L		9 +#define	R_SH_SWITCH16		25 +#define	R_SH_SWITCH32		26 +#define	R_SH_USES		27 +#define	R_SH_COUNT		28 +#define	R_SH_ALIGN		29 +#define	R_SH_CODE		30 +#define	R_SH_DATA		31 +#define	R_SH_LABEL		32 +#define	R_SH_SWITCH8		33 +#define	R_SH_GNU_VTINHERIT	34 +#define	R_SH_GNU_VTENTRY	35 +#define	R_SH_TLS_GD_32		144 +#define	R_SH_TLS_LD_32		145 +#define	R_SH_TLS_LDO_32		146 +#define	R_SH_TLS_IE_32		147 +#define	R_SH_TLS_LE_32		148 +#define	R_SH_TLS_DTPMOD32	149 +#define	R_SH_TLS_DTPOFF32	150 +#define	R_SH_TLS_TPOFF32	151 +#define	R_SH_GOT32		160 +#define	R_SH_PLT32		161 +#define	R_SH_COPY		162 +#define	R_SH_GLOB_DAT		163 +#define	R_SH_JMP_SLOT		164 +#define	R_SH_RELATIVE		165 +#define	R_SH_GOTOFF		166 +#define	R_SH_GOTPC		167 + +#define	R_SH_NUM		256 + + + +#define R_390_NONE		0 +#define R_390_8			1 +#define R_390_12		2 +#define R_390_16		3 +#define R_390_32		4 +#define R_390_PC32		5 +#define R_390_GOT12		6 +#define R_390_GOT32		7 +#define R_390_PLT32		8 +#define R_390_COPY		9 +#define R_390_GLOB_DAT		10 +#define R_390_JMP_SLOT		11 +#define R_390_RELATIVE		12 +#define R_390_GOTOFF32		13 +#define R_390_GOTPC		14 +#define R_390_GOT16		15 +#define R_390_PC16		16 +#define R_390_PC16DBL		17 +#define R_390_PLT16DBL		18 +#define R_390_PC32DBL		19 +#define R_390_PLT32DBL		20 +#define R_390_GOTPCDBL		21 +#define R_390_64		22 +#define R_390_PC64		23 +#define R_390_GOT64		24 +#define R_390_PLT64		25 +#define R_390_GOTENT		26 +#define R_390_GOTOFF16		27 +#define R_390_GOTOFF64		28 +#define R_390_GOTPLT12		29 +#define R_390_GOTPLT16		30 +#define R_390_GOTPLT32		31 +#define R_390_GOTPLT64		32 +#define R_390_GOTPLTENT		33 +#define R_390_PLTOFF16		34 +#define R_390_PLTOFF32		35 +#define R_390_PLTOFF64		36 +#define R_390_TLS_LOAD		37 +#define R_390_TLS_GDCALL	38 + +#define R_390_TLS_LDCALL	39 + +#define R_390_TLS_GD32		40 + +#define R_390_TLS_GD64		41 + +#define R_390_TLS_GOTIE12	42 + +#define R_390_TLS_GOTIE32	43 + +#define R_390_TLS_GOTIE64	44 + +#define R_390_TLS_LDM32		45 + +#define R_390_TLS_LDM64		46 + +#define R_390_TLS_IE32		47 + +#define R_390_TLS_IE64		48 + +#define R_390_TLS_IEENT		49 + +#define R_390_TLS_LE32		50 + +#define R_390_TLS_LE64		51 + +#define R_390_TLS_LDO32		52 + +#define R_390_TLS_LDO64		53 + +#define R_390_TLS_DTPMOD	54 +#define R_390_TLS_DTPOFF	55 +#define R_390_TLS_TPOFF		56 + +#define R_390_20		57 +#define R_390_GOT20		58 +#define R_390_GOTPLT20		59 +#define R_390_TLS_GOTIE20	60 + + +#define R_390_NUM		61 + + + +#define R_CRIS_NONE		0 +#define R_CRIS_8		1 +#define R_CRIS_16		2 +#define R_CRIS_32		3 +#define R_CRIS_8_PCREL		4 +#define R_CRIS_16_PCREL		5 +#define R_CRIS_32_PCREL		6 +#define R_CRIS_GNU_VTINHERIT	7 +#define R_CRIS_GNU_VTENTRY	8 +#define R_CRIS_COPY		9 +#define R_CRIS_GLOB_DAT		10 +#define R_CRIS_JUMP_SLOT	11 +#define R_CRIS_RELATIVE		12 +#define R_CRIS_16_GOT		13 +#define R_CRIS_32_GOT		14 +#define R_CRIS_16_GOTPLT	15 +#define R_CRIS_32_GOTPLT	16 +#define R_CRIS_32_GOTREL	17 +#define R_CRIS_32_PLT_GOTREL	18 +#define R_CRIS_32_PLT_PCREL	19 + +#define R_CRIS_NUM		20 + + + +#define R_X86_64_NONE		0 +#define R_X86_64_64		1 +#define R_X86_64_PC32		2 +#define R_X86_64_GOT32		3 +#define R_X86_64_PLT32		4 +#define R_X86_64_COPY		5 +#define R_X86_64_GLOB_DAT	6 +#define R_X86_64_JUMP_SLOT	7 +#define R_X86_64_RELATIVE	8 +#define R_X86_64_GOTPCREL	9 + +#define R_X86_64_32		10 +#define R_X86_64_32S		11 +#define R_X86_64_16		12 +#define R_X86_64_PC16		13 +#define R_X86_64_8		14 +#define R_X86_64_PC8		15 +#define R_X86_64_DTPMOD64	16 +#define R_X86_64_DTPOFF64	17 +#define R_X86_64_TPOFF64	18 +#define R_X86_64_TLSGD		19 + +#define R_X86_64_TLSLD		20 + +#define R_X86_64_DTPOFF32	21 +#define R_X86_64_GOTTPOFF	22 + +#define R_X86_64_TPOFF32	23 +#define R_X86_64_PC64		24 +#define R_X86_64_GOTOFF64	25 +#define R_X86_64_GOTPC32	26 + + +#define R_X86_64_GOTPC32_TLSDESC 34 +#define R_X86_64_TLSDESC_CALL   35 + +#define R_X86_64_TLSDESC        36 +#define R_X86_64_IRELATIVE	37 + +#define R_X86_64_NUM		38 + + + +#define R_MN10300_NONE		0 +#define R_MN10300_32		1 +#define R_MN10300_16		2 +#define R_MN10300_8		3 +#define R_MN10300_PCREL32	4 +#define R_MN10300_PCREL16	5 +#define R_MN10300_PCREL8	6 +#define R_MN10300_GNU_VTINHERIT	7 +#define R_MN10300_GNU_VTENTRY	8 +#define R_MN10300_24		9 +#define R_MN10300_GOTPC32	10 +#define R_MN10300_GOTPC16	11 +#define R_MN10300_GOTOFF32	12 +#define R_MN10300_GOTOFF24	13 +#define R_MN10300_GOTOFF16	14 +#define R_MN10300_PLT32		15 +#define R_MN10300_PLT16		16 +#define R_MN10300_GOT32		17 +#define R_MN10300_GOT24		18 +#define R_MN10300_GOT16		19 +#define R_MN10300_COPY		20 +#define R_MN10300_GLOB_DAT	21 +#define R_MN10300_JMP_SLOT	22 +#define R_MN10300_RELATIVE	23 + +#define R_MN10300_NUM		24 + + + +#define R_M32R_NONE		0 +#define R_M32R_16		1 +#define R_M32R_32		2 +#define R_M32R_24		3 +#define R_M32R_10_PCREL		4 +#define R_M32R_18_PCREL		5 +#define R_M32R_26_PCREL		6 +#define R_M32R_HI16_ULO		7 +#define R_M32R_HI16_SLO		8 +#define R_M32R_LO16		9 +#define R_M32R_SDA16		10 +#define R_M32R_GNU_VTINHERIT	11 +#define R_M32R_GNU_VTENTRY	12 + +#define R_M32R_16_RELA		33 +#define R_M32R_32_RELA		34 +#define R_M32R_24_RELA		35 +#define R_M32R_10_PCREL_RELA	36 +#define R_M32R_18_PCREL_RELA	37 +#define R_M32R_26_PCREL_RELA	38 +#define R_M32R_HI16_ULO_RELA	39 +#define R_M32R_HI16_SLO_RELA	40 +#define R_M32R_LO16_RELA	41 +#define R_M32R_SDA16_RELA	42 +#define R_M32R_RELA_GNU_VTINHERIT	43 +#define R_M32R_RELA_GNU_VTENTRY	44 +#define R_M32R_REL32		45 + +#define R_M32R_GOT24		48 +#define R_M32R_26_PLTREL	49 +#define R_M32R_COPY		50 +#define R_M32R_GLOB_DAT		51 +#define R_M32R_JMP_SLOT		52 +#define R_M32R_RELATIVE		53 +#define R_M32R_GOTOFF		54 +#define R_M32R_GOTPC24		55 +#define R_M32R_GOT16_HI_ULO	56 + +#define R_M32R_GOT16_HI_SLO	57 + +#define R_M32R_GOT16_LO		58 +#define R_M32R_GOTPC_HI_ULO	59 + +#define R_M32R_GOTPC_HI_SLO	60 + +#define R_M32R_GOTPC_LO		61 + +#define R_M32R_GOTOFF_HI_ULO	62 + +#define R_M32R_GOTOFF_HI_SLO	63 + +#define R_M32R_GOTOFF_LO	64 +#define R_M32R_NUM		256 + +#ifdef __cplusplus +} +#endif + + +#endif diff --git a/include/endian.h b/include/endian.h new file mode 100644 index 00000000..bcf67662 --- /dev/null +++ b/include/endian.h @@ -0,0 +1,17 @@ +#ifndef _ENDIAN_H +#define _ENDIAN_H + +#define __LITTLE_ENDIAN 1234 +#define __BIG_ENDIAN 4321 +#define __PDP_ENDIAN 3412 + +#include <bits/endian.h> + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define BIG_ENDIAN __BIG_ENDIAN +#define LITTLE_ENDIAN __LITTLE_ENDIAN +#define PDP_ENDIAN __PDP_ENDIAN +#define BYTE_ORDER __BYTE_ORDER +#endif + +#endif diff --git a/include/errno.h b/include/errno.h new file mode 100644 index 00000000..d9c2c9c7 --- /dev/null +++ b/include/errno.h @@ -0,0 +1,18 @@ +#ifndef	_ERRNO_H +#define _ERRNO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <bits/errno.h> + +extern int *__errno_location(void); +#define errno (*__errno_location()) + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/include/fcntl.h b/include/fcntl.h new file mode 100644 index 00000000..61a6cb55 --- /dev/null +++ b/include/fcntl.h @@ -0,0 +1,43 @@ +#ifndef	_FCNTL_H +#define	_FCNTL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_off_t +#define __NEED_pid_t +#define __NEED_mode_t + +#include <bits/alltypes.h> + +#include <bits/fcntl.h> + +struct flock +{ +	short l_type; +	short l_whence; +	off_t l_start; +	off_t l_len; +	pid_t l_pid; +}; + +int creat(const char *, mode_t); +int fcntl(int, int, ...); +int open(const char *, int, ...); +int openat(int, const char *, int, ...); +int posix_fadvise(int, off_t, off_t, int); +int posix_fallocate(int, off_t, off_t); + +#undef SEEK_SET +#undef SEEK_CUR +#undef SEEK_END +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/features.h b/include/features.h new file mode 100644 index 00000000..851afb66 --- /dev/null +++ b/include/features.h @@ -0,0 +1 @@ +#warning "features.h is bogus" diff --git a/include/fenv.h b/include/fenv.h new file mode 100644 index 00000000..05de990c --- /dev/null +++ b/include/fenv.h @@ -0,0 +1,28 @@ +#ifndef _FENV_H +#define _FENV_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <bits/fenv.h> + +int feclearexcept(int); +int fegetexceptflag(fexcept_t *, int); +int feraiseexcept(int); +int fesetexceptflag(const fexcept_t *, int); +int fetestexcept(int); + +int fegetround(void); +int fesetround(int); + +int fegetenv(fenv_t *); +int feholdexcept(fenv_t *); +int fesetenv(const fenv_t *); +int feupdateenv(const fenv_t *); + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/include/float.h b/include/float.h new file mode 100644 index 00000000..ef91f37d --- /dev/null +++ b/include/float.h @@ -0,0 +1,34 @@ +#ifndef _FLOAT_H +#define _FLOAT_H + +#define FLT_RADIX 2 + +#define FLT_MIN 1.17549435e-38F +#define FLT_MAX 3.40282347e+38F +#define FLT_EPSILON 1.19209290e-07F + +#define FLT_MANT_DIG 24 +#define FLT_MIN_EXP (-125) +#define FLT_MAX_EXP 128 + +#define FLT_DIG 6 +#define FLT_MIN_10_EXP (-37) +#define FLT_MAX_10_EXP 38 + +#define DBL_MIN 2.2250738585072014e-308 +#define DBL_MAX 1.7976931348623157e+308 +#define DBL_EPSILON 2.2204460492503131e-16 + +#define DBL_MANT_DIG 53 +#define DBL_MIN_EXP (-1021) +#define DBL_MAX_EXP 1024 + +#define DBL_DIG 15 +#define DBL_MIN_10_EXP (-307) +#define DBL_MAX_10_EXP 308 + +#include <bits/float.h> + +#define DECIMAL_DIG LDBL_DIG + +#endif diff --git a/include/fnmatch.h b/include/fnmatch.h new file mode 100644 index 00000000..b7aee504 --- /dev/null +++ b/include/fnmatch.h @@ -0,0 +1,25 @@ +#ifndef	_FNMATCH_H +#define	_FNMATCH_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define	FNM_PATHNAME 0x1 +#define	FNM_NOESCAPE 0x2 +#define	FNM_PERIOD   0x4 + +#ifdef _GNU_SOURCE +#define	FNM_CASEFOLD 0x10 +#endif + +#define	FNM_NOMATCH 1 +#define FNM_NOSYS   (-1) + +int fnmatch(const char *, const char *, int); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/ftw.h b/include/ftw.h new file mode 100644 index 00000000..8d31c6d9 --- /dev/null +++ b/include/ftw.h @@ -0,0 +1,31 @@ +#ifndef _FTW_H +#define	_FTW_H + +/* Normally we do not nest header includes. However useless bloat + * like ftw may be treated as a special case. Otherwise we would + * have to deal with duplicating all the stat.h mess. */ +#include <sys/stat.h> + +#define FTW_F   1 +#define FTW_D   2 +#define FTW_DNR 3 +#define FTW_NS  4 +#define FTW_SL  5 +#define FTW_DP  6 +#define FTW_SLN 7 + +#define FTW_PHYS  1 +#define FTW_MOUNT 2 +#define FTW_CHDIR 4 +#define FTW_DEPTH 8 + +struct FTW +{ +	int base; +	int level; +}; + +int ftw(const char *, int (*)(const char *, const struct stat *, int), int); +int nftw(const char *, int (*)(const char *, const struct stat *, int, struct FTW *), int, int); + +#endif diff --git a/include/getopt.h b/include/getopt.h new file mode 100644 index 00000000..0de05aef --- /dev/null +++ b/include/getopt.h @@ -0,0 +1,33 @@ +#ifndef _GETOPT_H +#define _GETOPT_H + +#ifdef __cplusplus +extern "C" { +#endif + +int getopt(int, char * const [], const char *); +extern char *optarg; +extern int optind, opterr, optopt; + +#ifdef _GNU_SOURCE +struct option +{ +	const char *name; +	int has_arg; +	int *flag; +	int val; +}; + +int getopt_long(int, char *const *, const char *, const struct option *, int *); +int getopt_long_only(int, char *const *, const char *, const struct option *, int *); + +#define no_argument        0 +#define required_argument  1 +#define optional_argument  2 +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/glob.h b/include/glob.h new file mode 100644 index 00000000..185912df --- /dev/null +++ b/include/glob.h @@ -0,0 +1,41 @@ +#ifndef	_GLOB_H +#define	_GLOB_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_size_t + +#include <bits/alltypes.h> + +typedef struct { +	size_t gl_pathc; +	char **gl_pathv; +	size_t gl_offs; +	int __dummy1; +	void *__dummy2[5]; +} glob_t; + +int  glob(const char *, int, int (*)(const char *, int), glob_t *); +void globfree(glob_t *); + +#define GLOB_ERR      0x01 +#define GLOB_MARK     0x02 +#define GLOB_NOSORT   0x04 +#define GLOB_DOOFFS   0x08 +#define GLOB_NOCHECK  0x10 +#define GLOB_APPEND   0x20 +#define GLOB_NOESCAPE 0x40 +#define	GLOB_PERIOD   0x80 + +#define GLOB_NOSPACE 1 +#define GLOB_ABORTED 2 +#define GLOB_NOMATCH 3 +#define GLOB_NOSYS   4 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/grp.h b/include/grp.h new file mode 100644 index 00000000..d4a3526a --- /dev/null +++ b/include/grp.h @@ -0,0 +1,35 @@ +#ifndef	_GRP_H +#define	_GRP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_size_t +#define __NEED_gid_t + +#include <bits/alltypes.h> + +struct group +{ +	char *gr_name; +	char *gr_passwd; +	gid_t gr_gid; +	char **gr_mem; +}; + +struct group  *getgrgid(gid_t); +struct group  *getgrnam(const char *); + +int getgrgid_r(gid_t, struct group *, char *, size_t, struct group **); +int getgrnam_r(const char *, struct group *, char *, size_t, struct group **); + +struct group  *getgrent(void); +void           endgrent(void); +void           setgrent(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/iconv.h b/include/iconv.h new file mode 100644 index 00000000..f2ccaf8c --- /dev/null +++ b/include/iconv.h @@ -0,0 +1,22 @@ +#ifndef _ICONV_H +#define _ICONV_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_size_t + +#include <bits/alltypes.h> + +typedef void *iconv_t; + +iconv_t iconv_open(const char *, const char *); +size_t iconv(iconv_t, char **, size_t *, char **, size_t *); +int iconv_close(iconv_t); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/inttypes.h b/include/inttypes.h new file mode 100644 index 00000000..13ba6e0f --- /dev/null +++ b/include/inttypes.h @@ -0,0 +1,227 @@ +#ifndef _INTTYPES_H +#define _INTTYPES_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> + +#define __NEED_wchar_t +#include <bits/alltypes.h> + +typedef struct { intmax_t quot, rem; } imaxdiv_t; + +intmax_t imaxabs(intmax_t); +imaxdiv_t imaxdiv(intmax_t, intmax_t); + +intmax_t strtoimax(const char *, char **, int); +uintmax_t strtoumax(const char *, char **, int); + +intmax_t wcstoimax(const wchar_t *, wchar_t **, int); +uintmax_t wcstoumax(const wchar_t *, wchar_t **, int); + +#if !defined __cplusplus || defined __STDC_FORMAT_MACROS + +#define __PRI64  "ll" +#define __PRIPTR "l" + +#define PRId8  "d" +#define PRId16 "d" +#define PRId32 "d" +#define PRId64 __PRI64 "d" + +#define PRIdLEAST8  "d" +#define PRIdLEAST16 "d" +#define PRIdLEAST32 "d" +#define PRIdLEAST64 __PRI64 "d" + +#define PRIdFAST8  "d" +#define PRIdFAST16 "d" +#define PRIdFAST32 "d" +#define PRIdFAST64 __PRI64 "d" + +#define PRIi8  "i" +#define PRIi16 "i" +#define PRIi32 "i" +#define PRIi64 __PRI64 "i" + +#define PRIiLEAST8  "i" +#define PRIiLEAST16 "i" +#define PRIiLEAST32 "i" +#define PRIiLEAST64 __PRI64 "i" + +#define PRIiFAST8  "i" +#define PRIiFAST16 "i" +#define PRIiFAST32 "i" +#define PRIiFAST64 __PRI64 "i" + +#define PRIo8  "o" +#define PRIo16 "o" +#define PRIo32 "o" +#define PRIo64 __PRI64 "o" + +#define PRIoLEAST8  "o" +#define PRIoLEAST16 "o" +#define PRIoLEAST32 "o" +#define PRIoLEAST64 __PRI64 "o" + +#define PRIoFAST8  "o" +#define PRIoFAST16 "o" +#define PRIoFAST32 "o" +#define PRIoFAST64 __PRI64 "o" + +#define PRIu8  "u" +#define PRIu16 "u" +#define PRIu32 "u" +#define PRIu64 __PRI64 "u" + +#define PRIuLEAST8  "u" +#define PRIuLEAST16 "u" +#define PRIuLEAST32 "u" +#define PRIuLEAST64 __PRI64 "u" + +#define PRIuFAST8  "u" +#define PRIuFAST16 "u" +#define PRIuFAST32 "u" +#define PRIuFAST64 __PRI64 "u" + +#define PRIx8  "x" +#define PRIx16 "x" +#define PRIx32 "x" +#define PRIx64 __PRI64 "x" + +#define PRIxLEAST8  "x" +#define PRIxLEAST16 "x" +#define PRIxLEAST32 "x" +#define PRIxLEAST64 __PRI64 "x" + +#define PRIxFAST8  "x" +#define PRIxFAST16 "x" +#define PRIxFAST32 "x" +#define PRIxFAST64 __PRI64 "x" + +#define PRIX8  "X" +#define PRIX16 "X" +#define PRIX32 "X" +#define PRIX64 __PRI64 "X" + +#define PRIXLEAST8  "X" +#define PRIXLEAST16 "X" +#define PRIXLEAST32 "X" +#define PRIXLEAST64 __PRI64 "X" + +#define PRIXFAST8  "X" +#define PRIXFAST16 "X" +#define PRIXFAST32 "X" +#define PRIXFAST64 __PRI64 "X" + +#define PRIdMAX __PRI64 "d" +#define PRIiMAX __PRI64 "i" +#define PRIoMAX __PRI64 "o" +#define PRIuMAX __PRI64 "u" +#define PRIxMAX __PRI64 "x" +#define PRIXMAX __PRI64 "X" + +#define PRIdPTR __PRIPTR "d" +#define PRIiPTR __PRIPTR "i" +#define PRIoPTR __PRIPTR "o" +#define PRIuPTR __PRIPTR "u" +#define PRIxPTR __PRIPTR "x" +#define PRIXPTR __PRIPTR "X" + +#define SCNd8   "hhd" +#define SCNd16  "hd" +#define SCNd32  "d" +#define SCNd64  __PRI64 "d" + +#define SCNdLEAST8  "hhd" +#define SCNdLEAST16 "hd" +#define SCNdLEAST32 "d" +#define SCNdLEAST64 __PRI64 "d" + +#define SCNdFAST8  "hhd" +#define SCNdFAST16 __PRIPTR "d" +#define SCNdFAST32 __PRIPTR "d" +#define SCNdFAST64 __PRI64 "d" + +#define SCNi8   "hhi" +#define SCNi16  "hi" +#define SCNi32  "i" +#define SCNi64  __PRI64 "i" + +#define SCNiLEAST8  "hhi" +#define SCNiLEAST16 "hi" +#define SCNiLEAST32 "i" +#define SCNiLEAST64 __PRI64 "i" + +#define SCNiFAST8  "hhi" +#define SCNiFAST16 __PRIPTR "i" +#define SCNiFAST32 __PRIPTR "i" +#define SCNiFAST64 __PRI64 "i" + +#define SCNu8   "hhu" +#define SCNu16  "hu" +#define SCNu32  "u" +#define SCNu64  __PRI64 "u" + +#define SCNuLEAST8  "hhu" +#define SCNuLEAST16 "hu" +#define SCNuLEAST32 "u" +#define SCNuLEAST64 __PRI64 "u" + +#define SCNuFAST8 "hhu" +#define SCNuFAST16 __PRIPTR "u" +#define SCNuFAST32 __PRIPTR "u" +#define SCNuFAST64 __PRI64 "u" + +#define SCNo8   "hho" +#define SCNo16  "ho" +#define SCNo32  "o" +#define SCNo64  __PRI64 "o" + +#define SCNoLEAST8  "hho" +#define SCNoLEAST16 "ho" +#define SCNoLEAST32 "o" +#define SCNoLEAST64 __PRI64 "o" + +#define SCNoFAST8  "hho" +#define SCNoFAST16 __PRIPTR "o" +#define SCNoFAST32 __PRIPTR "o" +#define SCNoFAST64 __PRI64 "o" + +#define SCNx8   "hhx" +#define SCNx16  "hx" +#define SCNx32  "x" +#define SCNx64  __PRI64 "x" + +#define SCNxLEAST8  "hhx" +#define SCNxLEAST16 "hx" +#define SCNxLEAST32 "x" +#define SCNxLEAST64 __PRI64 "x" + +#define SCNxFAST8  "hhx" +#define SCNxFAST16 __PRIPTR "x" +#define SCNxFAST32 __PRIPTR "x" +#define SCNxFAST64 __PRI64 "x" + +#define SCNdMAX __PRI64 "d" +#define SCNiMAX __PRI64 "i" +#define SCNoMAX __PRI64 "o" +#define SCNuMAX __PRI64 "u" +#define SCNxMAX __PRI64 "x" + +#define SCNdPTR __PRIPTR "d" +#define SCNiPTR __PRIPTR "i" +#define SCNoPTR __PRIPTR "o" +#define SCNuPTR __PRIPTR "u" +#define SCNxPTR __PRIPTR "x" + +#endif + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/include/langinfo.h b/include/langinfo.h new file mode 100644 index 00000000..4d9e0997 --- /dev/null +++ b/include/langinfo.h @@ -0,0 +1,85 @@ +#ifndef _LANGINFO_H +#define _LANGINFO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_nl_item + +#include <bits/alltypes.h> + +#define ABDAY_1 0x20000 +#define ABDAY_2 0x20001 +#define ABDAY_3 0x20002 +#define ABDAY_4 0x20003 +#define ABDAY_5 0x20004 +#define ABDAY_6 0x20005 +#define ABDAY_7 0x20006 + +#define DAY_1 0x20007 +#define DAY_2 0x20008 +#define DAY_3 0x20009 +#define DAY_4 0x2000A +#define DAY_5 0x2000B +#define DAY_6 0x2000C +#define DAY_7 0x2000D + +#define ABMON_1 0x2000E +#define ABMON_2 0x2000F +#define ABMON_3 0x20010 +#define ABMON_4 0x20011 +#define ABMON_5 0x20012 +#define ABMON_6 0x20013 +#define ABMON_7 0x20014 +#define ABMON_8 0x20015 +#define ABMON_9 0x20016 +#define ABMON_10 0x20017 +#define ABMON_11 0x20018 +#define ABMON_12 0x20019 + +#define MON_1 0x2001A +#define MON_2 0x2001B +#define MON_3 0x2001C +#define MON_4 0x2001D +#define MON_5 0x2001E +#define MON_6 0x2001F +#define MON_7 0x20020 +#define MON_8 0x20021 +#define MON_9 0x20022 +#define MON_10 0x20023 +#define MON_11 0x20024 +#define MON_12 0x20025 + +#define AM_STR 0x20026 +#define PM_STR 0x20027 + +#define D_T_FMT 0x20028 +#define D_FMT 0x20029 +#define T_FMT 0x2002A +#define T_FMT_AMPM 0x2002B + +#define ERA 0x2002C +#define ERA_D_FMT 0x2002E +#define ALT_DIGITS 0x2002F +#define ERA_D_T_FMT 0x20030 +#define ERA_T_FMT 0x20031 + +#define CODESET 14 + +#define CRNCYSTR 0x4000F + +#define RADIXCHAR 0x10000 +#define THOUSEP 0x10001 +#define YESEXPR 0x50000 +#define NOEXPR 0x50001 +#define YESSTR 0x50002 +#define NOSTR 0x50003 + +char *nl_langinfo(nl_item); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/libgen.h b/include/libgen.h new file mode 100644 index 00000000..7c7fd9c6 --- /dev/null +++ b/include/libgen.h @@ -0,0 +1,15 @@ +#ifndef _LIBGEN_H +#define _LIBGEN_H + +#ifdef __cplusplus +extern "C" { +#endif + +char *dirname(char *); +char *basename(char *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/libintl.h b/include/libintl.h new file mode 100644 index 00000000..a2dada67 --- /dev/null +++ b/include/libintl.h @@ -0,0 +1,25 @@ +#ifndef _LIBINTL_H +#define _LIBINTL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __USE_GNU_GETTEXT 1 +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 1 : -1) + +char *gettext(const char *); +char *dgettext(const char *, const char *); +char *dcgettext(const char *, const char *, int); +char *ngettext(const char *, const char *, unsigned long); +char *dngettext(const char *, const char *, const char *, unsigned long); +char *dcngettext(const char *, const char *, const char *, unsigned long, int); +char *textdomain(const char *); +char *bindtextdomain (const char *, const char *); +char *bind_textdomain_codeset(const char *, const char *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/limits.h b/include/limits.h new file mode 100644 index 00000000..4499afbf --- /dev/null +++ b/include/limits.h @@ -0,0 +1,101 @@ +#ifndef _LIMITS_H +#define _LIMITS_H + +/* Most limits are system-specific */ + +#include <bits/limits.h> + +/* Some universal constants... */ + +#define CHAR_BIT 8 +#define SCHAR_MIN (-128) +#define SCHAR_MAX 127 +#define UCHAR_MAX 255 +#define CHAR_MIN (-128) +#define CHAR_MAX 127 +#define SSIZE_MAX LONG_MAX + +#define MB_LEN_MAX 4 +#define TZNAME_MAX 6 +#define TTY_NAME_MAX 20 +#define HOST_NAME_MAX 255 + +/* Implementation choices... */ + +#define PTHREAD_KEYS_MAX  1024 +#define PTHREAD_STACK_MIN (2*PAGE_SIZE) + +/* Arbitrary numbers... */ + +#define BC_BASE_MAX 99 +#define BC_DIM_MAX 2048 +#define BC_SCALE_MAX 99 +#define BC_STRING_MAX 1000 +#define CHARCLASS_NAME_MAX 14 +#define COLL_WEIGHTS_MAX 2 +#define EXPR_NEST_MAX 32 +#define LINE_MAX 4096 +#define RE_DUP_MAX 255 + +#define NL_ARGMAX 9 +#define NL_LANGMAX 32 +#define NL_MSGMAX 32767 +#define NL_NMAX (MB_LEN_MAX*4) +#define NL_SETMAX 255 +#define NL_TEXTMAX 2048 + +/* POSIX/SUS requirements follow. These numbers come directly + * from SUS and have nothing to do with the host system. */ + +#define _POSIX_AIO_LISTIO_MAX   2 +#define _POSIX_AIO_MAX          1 +#define _POSIX_ARG_MAX          4096 +#define _POSIX_CHILD_MAX        25 +#define _POSIX_DELAYTIMER_MAX   32 +#define _POSIX_HOST_NAME_MAX    255 +#define _POSIX_LINK_MAX         8 +#define _POSIX_LOGIN_NAME_MAX   9 +#define _POSIX_MAX_CANON        255 +#define _POSIX_MAX_INPUT        255 +#define _POSIX_MQ_OPEN_MAX      8 +#define _POSIX_MQ_PRIO_MAX      32 +#define _POSIX_NAME_MAX         14 +#define _POSIX_NGROUPS_MAX      8 +#define _POSIX_OPEN_MAX         20 +#define _POSIX_PATH_MAX         256 +#define _POSIX_PIPE_BUF         512 +#define _POSIX_RE_DUP_MAX       255 +#define _POSIX_RTSIG_MAX        8 +#define _POSIX_SEM_NSEMS_MAX    256 +#define _POSIX_SEM_VALUE_MAX    32767 +#define _POSIX_SIGQUEUE_MAX     32 +#define _POSIX_SSIZE_MAX        32767 +#define _POSIX_STREAM_MAX       8 +#define _POSIX_SS_REPL_MAX      4 +#define _POSIX_SYMLINK_MAX      255 +#define _POSIX_SYMLOOP_MAX      8 +#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 +#define _POSIX_THREAD_KEYS_MAX  128 +#define _POSIX_THREAD_THREADS_MAX 64 +#define _POSIX_TIMER_MAX        32 +#define _POSIX_TRACE_EVENT_NAME_MAX 30 +#define _POSIX_TRACE_NAME_MAX   8 +#define _POSIX_TRACE_SYS_MAX    8 +#define _POSIX_TRACE_USER_EVENT_MAX 32 +#define _POSIX_TTY_NAME_MAX     9 +#define _POSIX_TZNAME_MAX       6 +#define _POSIX2_BC_BASE_MAX     99 +#define _POSIX2_BC_DIM_MAX      2048 +#define _POSIX2_BC_SCALE_MAX    99 +#define _POSIX2_BC_STRING_MAX   1000 +#define _POSIX2_CHARCLASS_NAME_MAX 14 +#define _POSIX2_COLL_WEIGHTS_MAX 2 +#define _POSIX2_EXPR_NEST_MAX   32 +#define _POSIX2_LINE_MAX        2048 +#define _POSIX2_RE_DUP_MAX      255 + +#define _XOPEN_IOV_MAX          16 +#define _XOPEN_NAME_MAX         255 +#define _XOPEN_PATH_MAX         1024 + +#endif diff --git a/include/linux/loop.h b/include/linux/loop.h new file mode 100644 index 00000000..41aad407 --- /dev/null +++ b/include/linux/loop.h @@ -0,0 +1,69 @@ +#ifndef _LINUX_LOOP_H +#define _LINUX_LOOP_H + +#include <stdint.h> + +#define LO_NAME_SIZE	64 +#define LO_KEY_SIZE	32 + +enum { +	LO_FLAGS_READ_ONLY	= 1, +	LO_FLAGS_USE_AOPS	= 2, +	LO_FLAGS_AUTOCLEAR	= 4, +}; + +struct loop_info { +	int                lo_number; +	long               lo_device; +	unsigned long	   lo_inode; +	long               lo_rdevice; +	int		   lo_offset; +	int		   lo_encrypt_type; +	int		   lo_encrypt_key_size; +	int		   lo_flags; +	char		   lo_name[LO_NAME_SIZE]; +	unsigned char	   lo_encrypt_key[LO_KEY_SIZE]; +	unsigned long	   lo_init[2]; +	char		   reserved[4]; +}; + +struct loop_info64 { +	uint64_t	   lo_device; +	uint64_t	   lo_inode; +	uint64_t	   lo_rdevice; +	uint64_t	   lo_offset; +	uint64_t	   lo_sizelimit; +	uint32_t	   lo_number; +	uint32_t	   lo_encrypt_type; +	uint32_t	   lo_encrypt_key_size; +	uint32_t	   lo_flags; +	uint8_t		   lo_file_name[LO_NAME_SIZE]; +	uint8_t		   lo_crypt_name[LO_NAME_SIZE]; +	uint8_t		   lo_encrypt_key[LO_KEY_SIZE]; +	uint64_t	   lo_init[2]; +}; + + +#define LO_CRYPT_NONE		0 +#define LO_CRYPT_XOR		1 +#define LO_CRYPT_DES		2 +#define LO_CRYPT_FISH2		3 +#define LO_CRYPT_BLOW		4 +#define LO_CRYPT_CAST128	5 +#define LO_CRYPT_IDEA		6 +#define LO_CRYPT_DUMMY		9 +#define LO_CRYPT_SKIPJACK	10 +#define LO_CRYPT_CRYPTOAPI	18 +#define MAX_LO_CRYPT		20 + + +#define LOOP_SET_FD		0x4C00 +#define LOOP_CLR_FD		0x4C01 +#define LOOP_SET_STATUS		0x4C02 +#define LOOP_GET_STATUS		0x4C03 +#define LOOP_SET_STATUS64	0x4C04 +#define LOOP_GET_STATUS64	0x4C05 +#define LOOP_CHANGE_FD		0x4C06 +#define LOOP_SET_CAPACITY	0x4C07 + +#endif diff --git a/include/linux/version.h b/include/linux/version.h new file mode 100644 index 00000000..e6a89ef2 --- /dev/null +++ b/include/linux/version.h @@ -0,0 +1,2 @@ +#define LINUX_VERSION_CODE 132638 +#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) diff --git a/include/locale.h b/include/locale.h new file mode 100644 index 00000000..70230237 --- /dev/null +++ b/include/locale.h @@ -0,0 +1,84 @@ +#ifndef	_LOCALE_H +#define	_LOCALE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#undef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void*)0) +#endif + +#define LC_CTYPE    0 +#define LC_NUMERIC  1 +#define LC_TIME     2 +#define LC_COLLATE  3 +#define LC_MONETARY 4 +#define LC_MESSAGES 5 +#define LC_ALL      6 + +struct lconv { +	char *decimal_point; +	char *thousands_sep; +	char *grouping; + +	char *int_curr_symbol; +	char *currency_symbol; +	char *mon_decimal_point; +	char *mon_thousands_sep; +	char *mon_grouping; +	char *positive_sign; +	char *negative_sign; +	char int_frac_digits; +	char frac_digits; +	char p_cs_precedes; +	char p_sep_by_space; +	char n_cs_precedes; +	char n_sep_by_space; +	char p_sign_posn; +	char n_sign_posn; +	char int_p_cs_precedes; +	char int_p_sep_by_space; +	char int_n_cs_precedes; +	char int_n_sep_by_space; +	char int_p_sign_posn; +	char int_n_sign_posn; +}; + + +char *setlocale (int, const char *); +struct lconv *localeconv(void); + + +#if 1 + +#define __NEED_locale_t + +#include <bits/alltypes.h> + +#define LC_GLOBAL_LOCALE ((locale_t)-1) + +#define LC_CTYPE_MASK    (1<<LC_CTYPE) +#define LC_NUMERIC_MASK  (1<<LC_NUMERIC) +#define LC_TIME_MASK     (1<<LC_TIME) +#define LC_COLLATE_MASK  (1<<LC_COLLATE) +#define LC_MONETARY_MASK (1<<LC_MONETARY) +#define LC_MESSAGES_MASK (1<<LC_MESSAGES) +#define LC_ALL_MASK      0x7fffffff + +locale_t duplocale(locale_t); +void freelocale(locale_t); +locale_t newlocale(int, const char *, locale_t); +locale_t uselocale(locale_t); + +#endif + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/malloc.h b/include/malloc.h new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/include/malloc.h diff --git a/include/math.h b/include/math.h new file mode 100644 index 00000000..cc9befb7 --- /dev/null +++ b/include/math.h @@ -0,0 +1,300 @@ +#ifndef _MATH_H +#define _MATH_H + +#define __NEED___uint16_t +#define __NEED___uint32_t +#define __NEED___uint64_t +#include <bits/alltypes.h> + +#define M_E             2.7182818284590452354   /* e */ +#define M_LOG2E         1.4426950408889634074   /* log_2 e */ +#define M_LOG10E        0.43429448190325182765  /* log_10 e */ +#define M_LN2           0.69314718055994530942  /* log_e 2 */ +#define M_LN10          2.30258509299404568402  /* log_e 10 */ +#define M_PI            3.14159265358979323846  /* pi */ +#define M_PI_2          1.57079632679489661923  /* pi/2 */ +#define M_PI_4          0.78539816339744830962  /* pi/4 */ +#define M_1_PI          0.31830988618379067154  /* 1/pi */ +#define M_2_PI          0.63661977236758134308  /* 2/pi */ +#define M_2_SQRTPI      1.12837916709551257390  /* 2/sqrt(pi) */ +#define M_SQRT2         1.41421356237309504880  /* sqrt(2) */ +#define M_SQRT1_2       0.70710678118654752440  /* 1/sqrt(2) */ + +#define __MAKE_FLOAT(i) (((union { int __i; float __f; }){ .__i = i }).__f) + +#define NAN       __MAKE_FLOAT(0x7fc00000) +#define INFINITY  __MAKE_FLOAT(0x7f800000) + +#define HUGE_VALF INFINITY +#define HUGE_VAL  ((double)INFINITY) +#define HUGE_VALL ((long double)INFINITY) + +#define MAXFLOAT  __MAKE_FLOAT(0x7f7fffff) + +#define MATH_ERRNO  1 +#define MATH_EXCEPT 2 +#define math_errhandling 2 + +#define FP_ILOGBNAN (((unsigned)-1)>>1) +#define FP_ILOGB0 (~FP_ILOGBNAN) + +#define FP_NAN       0 +#define FP_INFINITE  1 +#define FP_ZERO      2 +#define FP_SUBNORMAL 3 +#define FP_NORMAL    4 + +int __fpclassifyf(float); +int __fpclassify(double); +int __fpclassifyl(long double); + +#define fpclassify(x) ( \ +	sizeof(x) == sizeof(float) ? __fpclassifyf(x) : \ +	sizeof(x) == sizeof(double) ? __fpclassify(x) : \ +	__fpclassifyl(x) ) + +#define isinf(x)    (fpclassify(x) == FP_INFINITE) +#define isnan(x)    (fpclassify(x) == FP_NAN) +#define isnormal(x) (fpclassify(x) == FP_NORMAL) +#define isfinite(x) (fpclassify(x) > FP_INFINITE) + +double      acos(double); +float       acosf(float); +long double acosl(long double); + +double      acosh(double); +float       acoshf(float); +long double acoshl(long double); + +double      asin(double); +float       asinf(float); +long double asinl(long double); + +double      asinh(double); +float       asinhf(float); +long double asinhl(long double); + +double      atan(double); +float       atanf(float); +long double atanl(long double); + +double      atan2(double, double); +float       atan2f(float, float); +long double atan2l(long double, long double); + +double      atanh(double); +float       atanhf(float); +long double atanhl(long double); + +double      cbrt(double); +float       cbrtf(float); +long double cbrtl(long double); + +double      ceil(double); +float       ceilf(float); +long double ceill(long double); + +double      copysign(double, double); +float       copysignf(float, float); +long double copysignl(long double, long double); + +double      cos(double); +float       cosf(float); +long double cosl(long double); + +double      cosh(double); +float       coshf(float); +long double coshl(long double); + +double      erf(double); +float       erff(float); +long double erfl(long double); + +double      erfc(double); +float       erfcf(float); +long double erfcl(long double); + +double      exp(double); +float       expf(float); +long double expl(long double); + +double      exp2(double); +float       exp2f(float); +long double exp2l(long double); + +double      expm1(double); +float       expm1f(float); +long double expm1l(long double); + +double      fabs(double); +float       fabsf(float); +long double fabsl(long double); + +double      fdim(double, double); +float       fdimf(float, float); +long double fdiml(long double, long double); + +double      floor(double); +float       floorf(float); +long double floorl(long double); + +double      fma(double, double, double); +float       fmaf(float, float, float); +long double fmal(long double, long double, long double); + +double      fmax(double, double); +float       fmaxf(float, float); +long double fmaxl(long double, long double); + +double      fmin(double, double); +float       fminf(float, float); +long double fminl(long double, long double); + +double      fmod(double, double); +float       fmodf(float, float); +long double fmodl(long double, long double); + +double      frexp(double, int *); +float       frexpf(float value, int *); +long double frexpl(long double value, int *); + +double      hypot(double, double); +float       hypotf(float, float); +long double hypotl(long double, long double); + +int         ilogb(double); +int         ilogbf(float); +int         ilogbl(long double); + +double      ldexp(double, int); +float       ldexpf(float, int); +long double ldexpl(long double, int); + +double      lgamma(double); +float       lgammaf(float); +long double lgammal(long double); + +long long   llrint(double); +long long   llrintf(float); +long long   llrintl(long double); + +long long   llround(double); +long long   llroundf(float); +long long   llroundl(long double); + +double      log(double); +float       logf(float); +long double logl(long double); + +double      log10(double); +float       log10f(float); +long double log10l(long double); + +double      log1p(double); +float       log1pf(float); +long double log1pl(long double); + +double      log2(double); +float       log2f(float); +long double log2l(long double); + +double      logb(double); +float       logbf(float); +long double logbl(long double); + +long        lrint(double); +long        lrintf(float); +long        lrintl(long double); + +long        lround(double); +long        lroundf(float); +long        lroundl(long double); + +double      modf(double, double *); +float       modff(float, float *); +long double modfl(long double, long double *); + +double      nan(const char *); +float       nanf(const char *); +long double nanl(const char *); + +double      nearbyint(double); +float       nearbyintf(float); +long double nearbyintl(long double); + +double      nextafter(double, double); +float       nextafterf(float, float); +long double nextafterl(long double, long double); + +double      nexttoward(double, long double); +float       nexttowardf(float, long double); +long double nexttowardl(long double, long double); + +double      pow(double, double); +float       powf(float, float); +long double powl(long double, long double); + +double      remainder(double, double); +float       remainderf(float, float); +long double remainderl(long double, long double); + +double      remquo(double, double, int *); +float       remquof(float, float, int *); +long double remquol(long double, long double, int *); + +double      rint(double); +float       rintf(float); +long double rintl(long double); + +double      round(double); +float       roundf(float); +long double roundl(long double); + +double      scalbln(double, long); +float       scalblnf(float, long); +long double scalblnl(long double, long); + +double      scalbn(double, int); +float       scalbnf(float, int); +long double scalbnl(long double, int); + +double      sin(double); +float       sinf(float); +long double sinl(long double); + +double      sinh(double); +float       sinhf(float); +long double sinhl(long double); + +double      sqrt(double); +float       sqrtf(float); +long double sqrtl(long double); + +double      tan(double); +float       tanf(float); +long double tanl(long double); + +double      tanh(double); +float       tanhf(float); +long double tanhl(long double); + +double      tgamma(double); +float       tgammaf(float); +long double tgammal(long double); + +double      trunc(double); +float       truncf(float); +long double truncl(long double); + +/* XSI stuff */ +double      j0(double); +double      j1(double); +double      jn(int, double); +double      scalb(double, double); +double      y0(double); +double      y1(double); +double      yn(int, double); + +extern int signgam; + +#endif diff --git a/include/mntent.h b/include/mntent.h new file mode 100644 index 00000000..c0fed7fc --- /dev/null +++ b/include/mntent.h @@ -0,0 +1,43 @@ +#ifndef _MNTENT_H +#define _MNTENT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_FILE +#include <bits/alltypes.h> + +#define MOUNTED "/etc/mtab" + +#define MNTTYPE_IGNORE	"ignore" +#define MNTTYPE_NFS	"nfs" +#define MNTTYPE_SWAP	"swap" +#define MNTOPT_DEFAULTS	"defaults" +#define MNTOPT_RO	"ro" +#define MNTOPT_RW	"rw" +#define MNTOPT_SUID	"suid" +#define MNTOPT_NOSUID	"nosuid" +#define MNTOPT_NOAUTO	"noauto" + +struct mntent +{ +	char *mnt_fsname; +	char *mnt_dir; +	char *mnt_type; +	char *mnt_opts; +	int mnt_freq; +	int mnt_passno; +}; + +FILE *setmntent(const char *, const char *); +int endmntent(FILE *); +struct mntent *getmntent(FILE *); +int addmntent(FILE *, const struct mntent *); +char *hasmntopt(const struct mntent *, const char *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/net/ethernet.h b/include/net/ethernet.h new file mode 100644 index 00000000..a536502d --- /dev/null +++ b/include/net/ethernet.h @@ -0,0 +1,47 @@ +#ifndef __NET_ETHERNET_H +#define __NET_ETHERNET_H 1 + +#include <stdint.h> +#include <sys/types.h> +#include <netinet/if_ether.h> + +struct ether_addr { +	uint8_t ether_addr_octet[ETH_ALEN]; +}; + +struct ether_header { +	uint8_t  ether_dhost[ETH_ALEN]; +	uint8_t  ether_shost[ETH_ALEN]; +	uint16_t ether_type; +}; + +#define	ETHERTYPE_PUP		0x0200 +#define ETHERTYPE_SPRITE	0x0500 +#define	ETHERTYPE_IP		0x0800 +#define	ETHERTYPE_ARP		0x0806 +#define	ETHERTYPE_REVARP	0x8035 +#define ETHERTYPE_AT		0x809B +#define ETHERTYPE_AARP		0x80F3 +#define	ETHERTYPE_VLAN		0x8100 +#define ETHERTYPE_IPX		0x8137 +#define	ETHERTYPE_IPV6		0x86dd +#define ETHERTYPE_LOOPBACK	0x9000 + + +#define	ETHER_ADDR_LEN	ETH_ALEN +#define	ETHER_TYPE_LEN	2 +#define	ETHER_CRC_LEN	4 +#define	ETHER_HDR_LEN	ETH_HLEN +#define	ETHER_MIN_LEN	(ETH_ZLEN + ETHER_CRC_LEN) +#define	ETHER_MAX_LEN	(ETH_FRAME_LEN + ETHER_CRC_LEN) + +#define	ETHER_IS_VALID_LEN(foo)	\ +	((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN) + +#define	ETHERTYPE_TRAIL		0x1000 +#define	ETHERTYPE_NTRAILER	16 + +#define	ETHERMTU	ETH_DATA_LEN +#define	ETHERMIN	(ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) + +#endif diff --git a/include/net/if.h b/include/net/if.h new file mode 100644 index 00000000..2ae5f89e --- /dev/null +++ b/include/net/if.h @@ -0,0 +1,122 @@ +#ifndef _NET_IF_H +#define _NET_IF_H + +#define IF_NAMESIZE 16 + +struct if_nameindex +{ +	unsigned int if_index; +	char *if_name; +}; + +unsigned int if_nametoindex (const char *); +char *if_indextoname (unsigned int, char *); +struct if_nameindex *if_nameindex (void); +void if_freenameindex (struct if_nameindex *); + + + + +#ifdef _GNU_SOURCE + +#include <sys/socket.h> + +#define IFF_UP	0x1 +#define IFF_BROADCAST 0x2 +#define IFF_DEBUG 0x4 +#define IFF_LOOPBACK 0x8 +#define IFF_POINTOPOINT 0x10 +#define IFF_NOTRAILERS 0x20 +#define IFF_RUNNING 0x40 +#define IFF_NOARP 0x80 +#define IFF_PROMISC 0x100 +#define IFF_ALLMULTI 0x200 +#define IFF_MASTER 0x400 +#define IFF_SLAVE 0x800 +#define IFF_MULTICAST 0x1000 +#define IFF_PORTSEL 0x2000 +#define IFF_AUTOMEDIA 0x4000 +#define IFF_DYNAMIC 0x8000 + +struct ifaddr { +	struct sockaddr ifa_addr; +	union { +		struct sockaddr	ifu_broadaddr; +		struct sockaddr	ifu_dstaddr; +	} ifa_ifu; +	struct iface *ifa_ifp; +	struct ifaddr *ifa_next; +}; + +#define ifa_broadaddr	ifa_ifu.ifu_broadaddr +#define ifa_dstaddr	ifa_ifu.ifu_dstaddr + +struct ifmap { +	unsigned long int mem_start; +	unsigned long int mem_end; +	unsigned short int base_addr; +	unsigned char irq; +	unsigned char dma; +	unsigned char port; +}; + +#define IFHWADDRLEN	6 +#define IFNAMSIZ	IF_NAMESIZE + +struct ifreq { +	union { +		char ifrn_name[IFNAMSIZ]; +	} ifr_ifrn; +	union { +		struct sockaddr ifru_addr; +		struct sockaddr ifru_dstaddr; +		struct sockaddr ifru_broadaddr; +		struct sockaddr ifru_netmask; +		struct sockaddr ifru_hwaddr; +		short int ifru_flags; +		int ifru_ivalue; +		int ifru_mtu; +		struct ifmap ifru_map; +		char ifru_slave[IFNAMSIZ]; +		char ifru_newname[IFNAMSIZ]; +		void *ifru_data; +	} ifr_ifru; +}; + +#define ifr_name	ifr_ifrn.ifrn_name +#define ifr_hwaddr	ifr_ifru.ifru_hwaddr +#define ifr_addr	ifr_ifru.ifru_addr +#define ifr_dstaddr	ifr_ifru.ifru_dstaddr +#define ifr_broadaddr	ifr_ifru.ifru_broadaddr +#define ifr_netmask	ifr_ifru.ifru_netmask +#define ifr_flags	ifr_ifru.ifru_flags +#define ifr_metric	ifr_ifru.ifru_ivalue +#define ifr_mtu		ifr_ifru.ifru_mtu +#define ifr_map		ifr_ifru.ifru_map +#define ifr_slave	ifr_ifru.ifru_slave +#define ifr_data	ifr_ifru.ifru_data +#define ifr_ifindex	ifr_ifru.ifru_ivalue +#define ifr_bandwidth	ifr_ifru.ifru_ivalue +#define ifr_qlen	ifr_ifru.ifru_ivalue +#define ifr_newname	ifr_ifru.ifru_newname +#define _IOT_ifreq	_IOT(_IOTS(char),IFNAMSIZ,_IOTS(char),16,0,0) +#define _IOT_ifreq_short _IOT(_IOTS(char),IFNAMSIZ,_IOTS(short),1,0,0) +#define _IOT_ifreq_int	_IOT(_IOTS(char),IFNAMSIZ,_IOTS(int),1,0,0) + +struct ifconf { +	int ifc_len;		 +	union { +		void *ifcu_buf; +		struct ifreq *ifcu_req; +	} ifc_ifcu; +}; + +#define ifc_buf		ifc_ifcu.ifcu_buf +#define ifc_req		ifc_ifcu.ifcu_req +#define _IOT_ifconf _IOT(_IOTS(struct ifconf),1,0,0,0,0) + +#endif + + + +#endif diff --git a/include/net/if_arp.h b/include/net/if_arp.h new file mode 100644 index 00000000..bb5eadf1 --- /dev/null +++ b/include/net/if_arp.h @@ -0,0 +1,133 @@ +/* Nonstandard header */ +#ifndef _NET_IF_ARP_H +#define _NET_IF_ARP_H +#ifdef __cplusplus +extern "C" { +#endif + +#include <inttypes.h> +#include <sys/types.h> +#include <sys/socket.h> + +#define MAX_ADDR_LEN	7 + +#define	ARPOP_REQUEST	1 +#define	ARPOP_REPLY	2 +#define	ARPOP_RREQUEST	3 +#define	ARPOP_RREPLY	4 +#define	ARPOP_InREQUEST	8 +#define	ARPOP_InREPLY	9 +#define	ARPOP_NAK	10 + +struct arphdr { +	uint16_t ar_hrd; +	uint16_t ar_pro; +	uint8_t ar_hln; +	uint8_t ar_pln; +	uint16_t ar_op; +}; + + +#define ARPHRD_NETROM	0 +#define ARPHRD_ETHER 	1 +#define	ARPHRD_EETHER	2 +#define	ARPHRD_AX25	3 +#define	ARPHRD_PRONET	4 +#define	ARPHRD_CHAOS	5 +#define	ARPHRD_IEEE802	6 +#define	ARPHRD_ARCNET	7 +#define	ARPHRD_APPLETLK	8 +#define	ARPHRD_DLCI	15 +#define	ARPHRD_ATM	19 +#define	ARPHRD_METRICOM	23 +#define ARPHRD_IEEE1394	24 +#define ARPHRD_EUI64		27 +#define ARPHRD_INFINIBAND	32 +#define ARPHRD_SLIP	256 +#define ARPHRD_CSLIP	257 +#define ARPHRD_SLIP6	258 +#define ARPHRD_CSLIP6	259 +#define ARPHRD_RSRVD	260 +#define ARPHRD_ADAPT	264 +#define ARPHRD_ROSE	270 +#define ARPHRD_X25	271 +#define ARPHRD_HWX25	272 +#define ARPHRD_PPP	512 +#define ARPHRD_CISCO	513 +#define ARPHRD_HDLC	ARPHRD_CISCO +#define ARPHRD_LAPB	516 +#define ARPHRD_DDCMP	517 +#define	ARPHRD_RAWHDLC	518 + +#define ARPHRD_TUNNEL	768 +#define ARPHRD_TUNNEL6	769 +#define ARPHRD_FRAD	770 +#define ARPHRD_SKIP	771 +#define ARPHRD_LOOPBACK	772 +#define ARPHRD_LOCALTLK 773 +#define ARPHRD_FDDI	774 +#define ARPHRD_BIF	775 +#define ARPHRD_SIT	776 +#define ARPHRD_IPDDP	777 +#define ARPHRD_IPGRE	778 +#define ARPHRD_PIMREG	779 +#define ARPHRD_HIPPI	780 +#define ARPHRD_ASH	781 +#define ARPHRD_ECONET	782 +#define ARPHRD_IRDA	783 +#define ARPHRD_FCPP	784 +#define ARPHRD_FCAL	785 +#define ARPHRD_FCPL	786 +#define ARPHRD_FCFABRIC 787 +#define ARPHRD_IEEE802_TR 800 +#define ARPHRD_IEEE80211 801 +#define ARPHRD_IEEE80211_PRISM 802 +#define ARPHRD_IEEE80211_RADIOTAP 803 +#define ARPHRD_IEEE802154 804 +#define ARPHRD_IEEE802154_PHY 805 + +#define ARPHRD_VOID	  0xFFFF +#define ARPHRD_NONE	  0xFFFE + +struct arpreq { +	struct sockaddr arp_pa; +	struct sockaddr arp_ha; +	int arp_flags; +	struct sockaddr arp_netmask; +	char arp_dev[16]; +}; + +struct arpreq_old { +	struct sockaddr arp_pa; +	struct sockaddr arp_ha; +	int arp_flags; +	struct sockaddr arp_netmask; +}; + +#define ATF_COM		0x02 +#define	ATF_PERM	0x04 +#define	ATF_PUBL	0x08 +#define	ATF_USETRAILERS	0x10 +#define ATF_NETMASK     0x20 +#define ATF_DONTPUB	0x40 +#define ATF_MAGIC	0x80 + +#define ARPD_UPDATE	0x01 +#define ARPD_LOOKUP	0x02 +#define ARPD_FLUSH	0x03 + +struct arpd_request { +	uint16_t req; +	uint32_t ip; +	uint32_t dev; +	uint32_t stamp; +	uint32_t updated; +	uint8_t ha[MAX_ADDR_LEN]; +}; + + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/net/route.h b/include/net/route.h new file mode 100644 index 00000000..3aaab978 --- /dev/null +++ b/include/net/route.h @@ -0,0 +1,116 @@ +#ifndef _NET_ROUTE_H +#define _NET_ROUTE_H + +#include <stdint.h> +#include <sys/socket.h> +#include <sys/types.h> +#include <netinet/in.h> + + +struct rtentry { +	unsigned long int rt_pad1; +	struct sockaddr rt_dst; +	struct sockaddr rt_gateway; +	struct sockaddr rt_genmask; +	unsigned short int rt_flags; +	short int rt_pad2; +	unsigned long int rt_pad3; +	unsigned char rt_tos; +	unsigned char rt_class; +	short int rt_pad4[sizeof(long)/2-1]; +	short int rt_metric; +	char *rt_dev; +	unsigned long int rt_mtu; +	unsigned long int rt_window; +	unsigned short int rt_irtt; +}; + +#define rt_mss	rt_mtu + + +struct in6_rtmsg { +	struct in6_addr rtmsg_dst; +	struct in6_addr rtmsg_src; +	struct in6_addr rtmsg_gateway; +	uint32_t rtmsg_type; +	uint16_t rtmsg_dst_len; +	uint16_t rtmsg_src_len; +	uint32_t rtmsg_metric; +	unsigned long int rtmsg_info; +	uint32_t rtmsg_flags; +	int rtmsg_ifindex; +}; + + +#define	RTF_UP		0x0001 +#define	RTF_GATEWAY	0x0002 + +#define	RTF_HOST	0x0004 +#define RTF_REINSTATE	0x0008 +#define	RTF_DYNAMIC	0x0010 +#define	RTF_MODIFIED	0x0020 +#define RTF_MTU		0x0040 +#define RTF_MSS		RTF_MTU +#define RTF_WINDOW	0x0080 +#define RTF_IRTT	0x0100 +#define RTF_REJECT	0x0200 +#define	RTF_STATIC	0x0400 +#define	RTF_XRESOLVE	0x0800 +#define RTF_NOFORWARD   0x1000 +#define RTF_THROW	0x2000 +#define RTF_NOPMTUDISC  0x4000 + +#define RTF_DEFAULT	0x00010000 +#define RTF_ALLONLINK	0x00020000 +#define RTF_ADDRCONF	0x00040000 + +#define RTF_LINKRT	0x00100000 +#define RTF_NONEXTHOP	0x00200000 + +#define RTF_CACHE	0x01000000 +#define RTF_FLOW	0x02000000 +#define RTF_POLICY	0x04000000 + +#define RTCF_VALVE	0x00200000 +#define RTCF_MASQ	0x00400000 +#define RTCF_NAT	0x00800000 +#define RTCF_DOREDIRECT 0x01000000 +#define RTCF_LOG	0x02000000 +#define RTCF_DIRECTSRC	0x04000000 + +#define RTF_LOCAL	0x80000000 +#define RTF_INTERFACE	0x40000000 +#define RTF_MULTICAST	0x20000000 +#define RTF_BROADCAST	0x10000000 +#define RTF_NAT		0x08000000 + +#define RTF_ADDRCLASSMASK	0xF8000000 +#define RT_ADDRCLASS(flags)	((uint32_t) flags >> 23) + +#define RT_TOS(tos)		((tos) & IPTOS_TOS_MASK) + +#define RT_LOCALADDR(flags)	((flags & RTF_ADDRCLASSMASK) \ +				 == (RTF_LOCAL|RTF_INTERFACE)) + +#define RT_CLASS_UNSPEC		0 +#define RT_CLASS_DEFAULT	253 + +#define RT_CLASS_MAIN		254 +#define RT_CLASS_LOCAL		255 +#define RT_CLASS_MAX		255 + + +#define RTMSG_ACK		NLMSG_ACK +#define RTMSG_OVERRUN		NLMSG_OVERRUN + +#define RTMSG_NEWDEVICE		0x11 +#define RTMSG_DELDEVICE		0x12 +#define RTMSG_NEWROUTE		0x21 +#define RTMSG_DELROUTE		0x22 +#define RTMSG_NEWRULE		0x31 +#define RTMSG_DELRULE		0x32 +#define RTMSG_CONTROL		0x40 + +#define RTMSG_AR_FAILED		0x51 + +#endif diff --git a/include/netdb.h b/include/netdb.h new file mode 100644 index 00000000..5f1dd3f1 --- /dev/null +++ b/include/netdb.h @@ -0,0 +1,148 @@ +#ifndef	_NETDB_H +#define	_NETDB_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef _GNU_SOURCE +#define __NEED_size_t +#endif + +#define __NEED_socklen_t +#define __NEED_uint32_t + +#include <bits/alltypes.h> + +struct addrinfo +{ +	int ai_flags; +	int ai_family; +	int ai_socktype; +	int ai_protocol; +	socklen_t ai_addrlen; +	struct sockaddr *ai_addr; +	char *ai_canonname; +	struct addrinfo *ai_next; +}; + +#define IPPORT_RESERVED 1024 + +#define AI_PASSIVE      0x01 +#define AI_CANONNAME    0x02 +#define AI_NUMERICHOST  0x04 +#define AI_V4MAPPED     0x08 +#define AI_ALL          0x10 +#define AI_ADDRCONFIG   0x20 +#define AI_NUMERICSERV  0x400 + + +#define NI_NUMERICHOST  0x01 +#define NI_NUMERICSERV  0x02 +#define NI_NOFQDN       0x04 +#define NI_NAMEREQD     0x08 +#define NI_DGRAM        0x10 +/*#define NI_NUMERICSCOPE */ + +#define NI_MAXHOST 255 +#define NI_MAXSERV 32 + +#define EAI_BADFLAGS   -1 +#define EAI_NONAME     -2 +#define EAI_AGAIN      -3 +#define EAI_FAIL       -4 +#define EAI_FAMILY     -6 +#define EAI_SOCKTYPE   -7 +#define EAI_SERVICE    -8 +#define EAI_MEMORY     -10 +#define EAI_SYSTEM     -11 +#define EAI_OVERFLOW   -12 + +int getaddrinfo (const char *, const char *, const struct addrinfo *, struct addrinfo **); +void freeaddrinfo (struct addrinfo *); +int getnameinfo (const struct sockaddr *, socklen_t, char *, socklen_t, char *, socklen_t, int); +const char *gai_strerror(int); + + +/* Legacy functions follow (marked OBsolete in SUS) */ + +struct netent +{ +	char *n_name; +	char **n_aliases; +	int n_addrtype; +	uint32_t n_net; +}; + +struct hostent +{ +	char *h_name; +	char **h_aliases; +	int h_addrtype; +	int h_length; +	char **h_addr_list; +}; +#define h_addr h_addr_list[0] + +struct servent +{ +	char *s_name; +	char **s_aliases; +	int s_port; +	char *s_proto; +}; + +struct protoent +{ +	char *p_name; +	char **p_aliases; +	int p_proto; +}; + +extern int h_errno; + +#define HOST_NOT_FOUND 1 +#define TRY_AGAIN      2 +#define NO_RECOVERY    3 +#define NO_DATA        4 + +void sethostent (int); +void endhostent (void); +struct hostent *gethostent (void); +struct hostent *gethostbyaddr (const void *, socklen_t, int); +struct hostent *gethostbyname (const char *); + +void setnetent (int); +void endnetent (void); +struct netent *getnetent (void); +struct netent *getnetbyaddr (uint32_t, int); +struct netent *getnetbyname (const char *); + +void setservent (int); +void endservent (void); +struct servent *getservent (void); +struct servent *getservbyname (const char *, const char *); +struct servent *getservbyport (int, const char *); + +void setprotoent (int); +void endprotoent (void); +struct protoent *getprotoent (void); +struct protoent *getprotobyname (const char *); +struct protoent *getprotobynumber (int); + +#ifdef _GNU_SOURCE +const char *hstrerror(int); +int gethostbyname_r(const char *, struct hostent *, char *, size_t, struct hostent **, int *); +int gethostbyname2_r(const char *, int, struct hostent *, char *, size_t, struct hostent **, int *); +struct hostent *gethostbyname2(const char *, int); +int gethostbyaddr_r(const void *, socklen_t, int, struct hostent *, char *, size_t, struct hostent **, int *); +int getservbyport_r(int, const char *, struct servent *, char *, size_t, struct servent **); +int getservbyname_r(const char *, const char *, struct servent *, char *, size_t, struct servent **); +#endif + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/netinet/icmp6.h b/include/netinet/icmp6.h new file mode 100644 index 00000000..01269e7d --- /dev/null +++ b/include/netinet/icmp6.h @@ -0,0 +1,305 @@ +#ifndef _NETINET_ICMP6_H +#define _NETINET_ICMP6_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> +#include <string.h> +#include <sys/types.h> +#include <netinet/in.h> + +#define ICMP6_FILTER 1 + +#define ICMP6_FILTER_BLOCK		1 +#define ICMP6_FILTER_PASS		2 +#define ICMP6_FILTER_BLOCKOTHERS	3 +#define ICMP6_FILTER_PASSONLY		4 + +struct icmp6_filter { +	uint32_t icmp6_filt[8]; +}; + +struct icmp6_hdr { +	uint8_t     icmp6_type; +	uint8_t     icmp6_code; +	uint16_t    icmp6_cksum; +	union { +		uint32_t  icmp6_un_data32[1]; +		uint16_t  icmp6_un_data16[2]; +		uint8_t   icmp6_un_data8[4]; +	} icmp6_dataun; +}; + +#define icmp6_data32    icmp6_dataun.icmp6_un_data32 +#define icmp6_data16    icmp6_dataun.icmp6_un_data16 +#define icmp6_data8     icmp6_dataun.icmp6_un_data8 +#define icmp6_pptr      icmp6_data32[0] +#define icmp6_mtu       icmp6_data32[0] +#define icmp6_id        icmp6_data16[0] +#define icmp6_seq       icmp6_data16[1] +#define icmp6_maxdelay  icmp6_data16[0] + +#define ICMP6_DST_UNREACH             1 +#define ICMP6_PACKET_TOO_BIG          2 +#define ICMP6_TIME_EXCEEDED           3 +#define ICMP6_PARAM_PROB              4 + +#define ICMP6_INFOMSG_MASK  0x80 + +#define ICMP6_ECHO_REQUEST          128 +#define ICMP6_ECHO_REPLY            129 +#define MLD_LISTENER_QUERY          130 +#define MLD_LISTENER_REPORT         131 +#define MLD_LISTENER_REDUCTION      132 + +#define ICMP6_DST_UNREACH_NOROUTE     0 +#define ICMP6_DST_UNREACH_ADMIN       1 +#define ICMP6_DST_UNREACH_BEYONDSCOPE 2 +#define ICMP6_DST_UNREACH_ADDR        3 +#define ICMP6_DST_UNREACH_NOPORT      4 + +#define ICMP6_TIME_EXCEED_TRANSIT     0 +#define ICMP6_TIME_EXCEED_REASSEMBLY  1 + +#define ICMP6_PARAMPROB_HEADER        0 +#define ICMP6_PARAMPROB_NEXTHEADER    1 +#define ICMP6_PARAMPROB_OPTION        2 + +#define ICMP6_FILTER_WILLPASS(type, filterp) \ +	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) == 0) + +#define ICMP6_FILTER_WILLBLOCK(type, filterp) \ +	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) != 0) + +#define ICMP6_FILTER_SETPASS(type, filterp) \ +	((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31)))) + +#define ICMP6_FILTER_SETBLOCK(type, filterp) \ +	((((filterp)->icmp6_filt[(type) >> 5]) |=  (1 << ((type) & 31)))) + +#define ICMP6_FILTER_SETPASSALL(filterp) \ +	memset (filterp, 0, sizeof (struct icmp6_filter)); + +#define ICMP6_FILTER_SETBLOCKALL(filterp) \ +	memset (filterp, 0xFF, sizeof (struct icmp6_filter)); + +#define ND_ROUTER_SOLICIT           133 +#define ND_ROUTER_ADVERT            134 +#define ND_NEIGHBOR_SOLICIT         135 +#define ND_NEIGHBOR_ADVERT          136 +#define ND_REDIRECT                 137 + +struct nd_router_solicit { +	struct icmp6_hdr  nd_rs_hdr; +}; + +#define nd_rs_type               nd_rs_hdr.icmp6_type +#define nd_rs_code               nd_rs_hdr.icmp6_code +#define nd_rs_cksum              nd_rs_hdr.icmp6_cksum +#define nd_rs_reserved           nd_rs_hdr.icmp6_data32[0] + +struct nd_router_advert { +	struct icmp6_hdr  nd_ra_hdr; +	uint32_t   nd_ra_reachable; +	uint32_t   nd_ra_retransmit; +}; + +#define nd_ra_type               nd_ra_hdr.icmp6_type +#define nd_ra_code               nd_ra_hdr.icmp6_code +#define nd_ra_cksum              nd_ra_hdr.icmp6_cksum +#define nd_ra_curhoplimit        nd_ra_hdr.icmp6_data8[0] +#define nd_ra_flags_reserved     nd_ra_hdr.icmp6_data8[1] +#define ND_RA_FLAG_MANAGED       0x80 +#define ND_RA_FLAG_OTHER         0x40 +#define ND_RA_FLAG_HOME_AGENT    0x20 +#define nd_ra_router_lifetime    nd_ra_hdr.icmp6_data16[1] + +struct nd_neighbor_solicit { +	struct icmp6_hdr  nd_ns_hdr; +	struct in6_addr   nd_ns_target; +}; + +#define nd_ns_type               nd_ns_hdr.icmp6_type +#define nd_ns_code               nd_ns_hdr.icmp6_code +#define nd_ns_cksum              nd_ns_hdr.icmp6_cksum +#define nd_ns_reserved           nd_ns_hdr.icmp6_data32[0] + +struct nd_neighbor_advert { +	struct icmp6_hdr  nd_na_hdr; +	struct in6_addr   nd_na_target; +}; + +#define nd_na_type               nd_na_hdr.icmp6_type +#define nd_na_code               nd_na_hdr.icmp6_code +#define nd_na_cksum              nd_na_hdr.icmp6_cksum +#define nd_na_flags_reserved     nd_na_hdr.icmp6_data32[0] +#if     __BYTE_ORDER == __BIG_ENDIAN +#define ND_NA_FLAG_ROUTER        0x80000000 +#define ND_NA_FLAG_SOLICITED     0x40000000 +#define ND_NA_FLAG_OVERRIDE      0x20000000 +#else +#define ND_NA_FLAG_ROUTER        0x00000080 +#define ND_NA_FLAG_SOLICITED     0x00000040 +#define ND_NA_FLAG_OVERRIDE      0x00000020 +#endif + +struct nd_redirect { +	struct icmp6_hdr  nd_rd_hdr; +	struct in6_addr   nd_rd_target; +	struct in6_addr   nd_rd_dst; +}; + +#define nd_rd_type               nd_rd_hdr.icmp6_type +#define nd_rd_code               nd_rd_hdr.icmp6_code +#define nd_rd_cksum              nd_rd_hdr.icmp6_cksum +#define nd_rd_reserved           nd_rd_hdr.icmp6_data32[0] + +struct nd_opt_hdr { +	uint8_t  nd_opt_type; +	uint8_t  nd_opt_len; +}; + +#define ND_OPT_SOURCE_LINKADDR		1 +#define ND_OPT_TARGET_LINKADDR		2 +#define ND_OPT_PREFIX_INFORMATION	3 +#define ND_OPT_REDIRECTED_HEADER	4 +#define ND_OPT_MTU			5 +#define ND_OPT_RTR_ADV_INTERVAL		7 +#define ND_OPT_HOME_AGENT_INFO		8 + +struct nd_opt_prefix_info { +	uint8_t   nd_opt_pi_type; +	uint8_t   nd_opt_pi_len; +	uint8_t   nd_opt_pi_prefix_len; +	uint8_t   nd_opt_pi_flags_reserved; +	uint32_t  nd_opt_pi_valid_time; +	uint32_t  nd_opt_pi_preferred_time; +	uint32_t  nd_opt_pi_reserved2; +	struct in6_addr  nd_opt_pi_prefix; +}; + +#define ND_OPT_PI_FLAG_ONLINK	0x80 +#define ND_OPT_PI_FLAG_AUTO	0x40 +#define ND_OPT_PI_FLAG_RADDR	0x20 + +struct nd_opt_rd_hdr { +	uint8_t   nd_opt_rh_type; +	uint8_t   nd_opt_rh_len; +	uint16_t  nd_opt_rh_reserved1; +	uint32_t  nd_opt_rh_reserved2; +}; + +struct nd_opt_mtu { +	uint8_t   nd_opt_mtu_type; +	uint8_t   nd_opt_mtu_len; +	uint16_t  nd_opt_mtu_reserved; +	uint32_t  nd_opt_mtu_mtu; +}; + +struct mld_hdr { +	struct icmp6_hdr    mld_icmp6_hdr; +	struct in6_addr     mld_addr; +}; + +#define mld_type        mld_icmp6_hdr.icmp6_type +#define mld_code        mld_icmp6_hdr.icmp6_code +#define mld_cksum       mld_icmp6_hdr.icmp6_cksum +#define mld_maxdelay    mld_icmp6_hdr.icmp6_data16[0] +#define mld_reserved    mld_icmp6_hdr.icmp6_data16[1] + +#define ICMP6_ROUTER_RENUMBERING    138 + +struct icmp6_router_renum { +	struct icmp6_hdr    rr_hdr; +	uint8_t             rr_segnum; +	uint8_t             rr_flags; +	uint16_t            rr_maxdelay; +	uint32_t            rr_reserved; +}; + +#define rr_type		rr_hdr.icmp6_type +#define rr_code         rr_hdr.icmp6_code +#define rr_cksum        rr_hdr.icmp6_cksum +#define rr_seqnum       rr_hdr.icmp6_data32[0] + +#define ICMP6_RR_FLAGS_TEST             0x80 +#define ICMP6_RR_FLAGS_REQRESULT        0x40 +#define ICMP6_RR_FLAGS_FORCEAPPLY       0x20 +#define ICMP6_RR_FLAGS_SPECSITE         0x10 +#define ICMP6_RR_FLAGS_PREVDONE         0x08 + +struct rr_pco_match { +	uint8_t             rpm_code; +	uint8_t             rpm_len; +	uint8_t             rpm_ordinal; +	uint8_t             rpm_matchlen; +	uint8_t             rpm_minlen; +	uint8_t             rpm_maxlen; +	uint16_t            rpm_reserved; +	struct in6_addr     rpm_prefix; +}; + +#define RPM_PCO_ADD             1 +#define RPM_PCO_CHANGE          2 +#define RPM_PCO_SETGLOBAL       3 + +struct rr_pco_use { +	uint8_t             rpu_uselen; +	uint8_t             rpu_keeplen; +	uint8_t             rpu_ramask; +	uint8_t             rpu_raflags; +	uint32_t            rpu_vltime; +	uint32_t            rpu_pltime; +	uint32_t            rpu_flags; +	struct in6_addr     rpu_prefix; +}; + +#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK  0x20 +#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO    0x10 + +#if __BYTE_ORDER == __BIG_ENDIAN +#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80000000 +#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40000000 +#else +#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80 +#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40 +#endif + +struct rr_result { +	uint16_t            rrr_flags; +	uint8_t             rrr_ordinal; +	uint8_t             rrr_matchedlen; +	uint32_t            rrr_ifid; +	struct in6_addr     rrr_prefix; +}; + +#if __BYTE_ORDER == __BIG_ENDIAN +#define ICMP6_RR_RESULT_FLAGS_OOB       0x0002 +#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0001 +#else +#define ICMP6_RR_RESULT_FLAGS_OOB       0x0200 +#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0100 +#endif + +struct nd_opt_adv_interval { +	uint8_t   nd_opt_adv_interval_type; +	uint8_t   nd_opt_adv_interval_len; +	uint16_t  nd_opt_adv_interval_reserved; +	uint32_t  nd_opt_adv_interval_ival; +}; + +struct nd_opt_home_agent_info { +	uint8_t   nd_opt_home_agent_info_type; +	uint8_t   nd_opt_home_agent_info_len; +	uint16_t  nd_opt_home_agent_info_reserved; +	uint16_t  nd_opt_home_agent_info_preference; +	uint16_t  nd_opt_home_agent_info_lifetime; +}; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/netinet/if_ether.h b/include/netinet/if_ether.h new file mode 100644 index 00000000..65a838ac --- /dev/null +++ b/include/netinet/if_ether.h @@ -0,0 +1,108 @@ +#ifndef _NETINET_IF_ETHER_H +#define _NETINET_IF_ETHER_H + +#include <stdint.h> +#include <sys/types.h> + +#define ETH_ALEN	6 +#define ETH_HLEN	14 +#define ETH_ZLEN	60 +#define ETH_DATA_LEN	1500 +#define ETH_FRAME_LEN	1514 +#define ETH_FCS_LEN	4 + +#define ETH_P_LOOP	0x0060 +#define ETH_P_PUP	0x0200 +#define ETH_P_PUPAT	0x0201 +#define ETH_P_IP	0x0800 +#define ETH_P_X25	0x0805 +#define ETH_P_ARP	0x0806 +#define	ETH_P_BPQ	0x08FF +#define ETH_P_IEEEPUP	0x0a00 +#define ETH_P_IEEEPUPAT	0x0a01 +#define ETH_P_DEC       0x6000 +#define ETH_P_DNA_DL    0x6001 +#define ETH_P_DNA_RC    0x6002 +#define ETH_P_DNA_RT    0x6003 +#define ETH_P_LAT       0x6004 +#define ETH_P_DIAG      0x6005 +#define ETH_P_CUST      0x6006 +#define ETH_P_SCA       0x6007 +#define ETH_P_TEB	0x6558 +#define ETH_P_RARP      0x8035 +#define ETH_P_ATALK	0x809B +#define ETH_P_AARP	0x80F3 +#define ETH_P_8021Q	0x8100 +#define ETH_P_IPX	0x8137 +#define ETH_P_IPV6	0x86DD +#define ETH_P_PAUSE	0x8808 +#define ETH_P_SLOW	0x8809 +#define ETH_P_WCCP	0x883E +#define ETH_P_PPP_DISC	0x8863 +#define ETH_P_PPP_SES	0x8864 +#define ETH_P_MPLS_UC	0x8847 +#define ETH_P_MPLS_MC	0x8848 +#define ETH_P_ATMMPOA	0x884c +#define ETH_P_ATMFATE	0x8884 +#define ETH_P_PAE	0x888E +#define ETH_P_AOE	0x88A2 +#define ETH_P_TIPC	0x88CA +#define ETH_P_FCOE	0x8906 +#define ETH_P_EDSA	0xDADA + +#define ETH_P_802_3	0x0001 +#define ETH_P_AX25	0x0002 +#define ETH_P_ALL	0x0003 +#define ETH_P_802_2	0x0004 +#define ETH_P_SNAP	0x0005 +#define ETH_P_DDCMP     0x0006 +#define ETH_P_WAN_PPP   0x0007 +#define ETH_P_PPP_MP    0x0008 +#define ETH_P_LOCALTALK 0x0009 +#define ETH_P_CAN	0x000C +#define ETH_P_PPPTALK	0x0010 +#define ETH_P_TR_802_2	0x0011 +#define ETH_P_MOBITEX	0x0015 +#define ETH_P_CONTROL	0x0016 +#define ETH_P_IRDA	0x0017 +#define ETH_P_ECONET	0x0018 +#define ETH_P_HDLC	0x0019 +#define ETH_P_ARCNET	0x001A +#define ETH_P_DSA	0x001B +#define ETH_P_TRAILER	0x001C +#define ETH_P_PHONET	0x00F5 + +struct ethhdr { +	uint8_t h_dest[ETH_ALEN]; +	uint8_t h_source[ETH_ALEN]; +	uint16_t h_proto; +}; + +#include <net/ethernet.h> +#include <net/if_arp.h> + +struct	ether_arp { +	struct	arphdr ea_hdr; +	uint8_t arp_sha[ETH_ALEN]; +	uint8_t arp_spa[4]; +	uint8_t arp_tha[ETH_ALEN]; +	uint8_t arp_tpa[4]; +}; +#define	arp_hrd	ea_hdr.ar_hrd +#define	arp_pro	ea_hdr.ar_pro +#define	arp_hln	ea_hdr.ar_hln +#define	arp_pln	ea_hdr.ar_pln +#define	arp_op	ea_hdr.ar_op + +#define ETHER_MAP_IP_MULTICAST(ipaddr, enaddr) \ +do { \ +	(enaddr)[0] = 0x01; \ +	(enaddr)[1] = 0x00; \ +	(enaddr)[2] = 0x5e; \ +	(enaddr)[3] = ((uint8_t *)ipaddr)[1] & 0x7f; \ +	(enaddr)[4] = ((uint8_t *)ipaddr)[2]; \ +	(enaddr)[5] = ((uint8_t *)ipaddr)[3]; \ +} while(0) + + +#endif diff --git a/include/netinet/in.h b/include/netinet/in.h new file mode 100644 index 00000000..a641f6a6 --- /dev/null +++ b/include/netinet/in.h @@ -0,0 +1,158 @@ +#ifndef	_NETINET_IN_H +#define	_NETINET_IN_H + +#define __NEED_in_addr_t +#define __NEED_in_port_t +#define __NEED_sa_family_t +#define __NEED_struct_in_addr +#define __NEED_uint8_t +#define __NEED_uint16_t +#define __NEED_uint32_t + +#include <bits/alltypes.h> + +struct sockaddr_in +{ +	sa_family_t sin_family; +	in_port_t sin_port; +	struct in_addr sin_addr; +	uint8_t sin_zero[8]; +}; + +struct in6_addr +{ +	union { +		uint8_t __s6_addr[16]; +		uint32_t __s6_addr32[4]; +	} __in6_union; +}; +#define s6_addr __in6_union.__s6_addr +#define s6_addr32 __in6_union.__s6_addr32 + +struct sockaddr_in6 +{ +	sa_family_t     sin6_family; +	in_port_t       sin6_port; +	uint32_t        sin6_flowinfo; +	struct in6_addr sin6_addr; +	uint32_t        sin6_scope_id; +}; + +struct ipv6_mreq +{ +	struct in6_addr ipv6mr_multiaddr; +	unsigned        ipv6mr_interface; +}; + +#define INADDR_ANY        ((in_addr_t) 0x00000000) +#define INADDR_BROADCAST  ((in_addr_t) 0xffffffff) +#define INADDR_NONE       ((in_addr_t) 0xffffffff) +#define INADDR_LOOPBACK   ((in_addr_t) 0x7f000001) + +#define IN6ADDR_ANY_INIT      { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } } +#define IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } } + +extern const struct in6_addr in6addr_any, in6addr_loopback; + +#undef INET_ADDRSTRLEN +#undef INET6_ADDRSTRLEN +#define INET_ADDRSTRLEN  16 +#define INET6_ADDRSTRLEN 46 + +uint32_t htonl(uint32_t); +uint16_t htons(uint16_t); +uint32_t ntohl(uint32_t); +uint16_t ntohs(uint16_t); + +#define IPPROTO_IP       0 +#define IPPROTO_ICMP     1 +#define IPPROTO_IGMP     2 +#define IPPROTO_IPIP     4 +#define IPPROTO_TCP      6 +#define IPPROTO_EGP      8 +#define IPPROTO_PUP      12 +#define IPPROTO_UDP      17 +#define IPPROTO_IDP      22 +#define IPPROTO_TP       29 +#define IPPROTO_IPV6     41 +#define IPPROTO_ROUTING  43 +#define IPPROTO_FRAGMENT 44 +#define IPPROTO_RSVP     46 +#define IPPROTO_GRE      47 +#define IPPROTO_ESP      50 +#define IPPROTO_AH       51 +#define IPPROTO_ICMPV6   58 +#define IPPROTO_NONE     59 +#define IPPROTO_DSTOPTS  60 +#define IPPROTO_MTP      92 +#define IPPROTO_ENCAP    98 +#define IPPROTO_PIM      103 +#define IPPROTO_COMP     108 +#define IPPROTO_RAW      255 + +#define IN6_IS_ADDR_UNSPECIFIED(a) \ +        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \ +         ((uint32_t *) (a))[2] == 0 && ((uint32_t *) (a))[3] == 0) + +#define IN6_IS_ADDR_LOOPBACK(a) \ +        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \ +         ((uint32_t *) (a))[2] == 0 && \ +         ((uint8_t *) (a))[12] == 0 && ((uint8_t *) (a))[13] == 0 && \ +         ((uint8_t *) (a))[14] == 0 && ((uint8_t *) (a))[15] == 1 ) + +#define IN6_IS_ADDR_MULTICAST(a) (((uint8_t *) (a))[0] == 0xff) + +#define IN6_IS_ADDR_LINKLOCAL(a) \ +        ((((uint8_t *) (a))[0]) == 0xfe && (((uint8_t *) (a))[1] & 0xc0) == 0x80) + +#define IN6_IS_ADDR_SITELOCAL(a) \ +        ((((uint8_t *) (a))[0]) == 0xfe && (((uint8_t *) (a))[1] & 0xc0) == 0xc0) + +#define IN6_IS_ADDR_V4MAPPED(a) \ +        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \ +         ((uint8_t *) (a))[8] == 0 && ((uint8_t *) (a))[9] == 0 && \ +         ((uint8_t *) (a))[10] == 0xff && ((uint8_t *) (a))[11] == 0xff) + +#define IN6_IS_ADDR_V4COMPAT(a) \ +        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \ +         ((uint32_t *) (a))[2] == 0 && ((uint8_t *) (a))[15] > 1) + +#define IN6_IS_ADDR_MC_NODELOCAL(a) \ +        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x1)) + +#define IN6_IS_ADDR_MC_LINKLOCAL(a) \ +        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x2)) + +#define IN6_IS_ADDR_MC_SITELOCAL(a) \ +        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x5)) + +#define IN6_IS_ADDR_MC_ORGLOCAL(a) \ +        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x8)) + +#define IN6_IS_ADDR_MC_GLOBAL(a) \ +        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0xe)) + +#include <bits/in.h> + +#if 1 /* FIXME: namespace violation */ +#define	IN_CLASSA(a)		((((in_addr_t)(a)) & 0x80000000) == 0) +#define	IN_CLASSA_NET		0xff000000 +#define	IN_CLASSA_NSHIFT	24 +#define	IN_CLASSA_HOST		(0xffffffff & ~IN_CLASSA_NET) +#define	IN_CLASSA_MAX		128 +#define	IN_CLASSB(a)		((((in_addr_t)(a)) & 0xc0000000) == 0x80000000) +#define	IN_CLASSB_NET		0xffff0000 +#define	IN_CLASSB_NSHIFT	16 +#define	IN_CLASSB_HOST		(0xffffffff & ~IN_CLASSB_NET) +#define	IN_CLASSB_MAX		65536 +#define	IN_CLASSC(a)		((((in_addr_t)(a)) & 0xe0000000) == 0xc0000000) +#define	IN_CLASSC_NET		0xffffff00 +#define	IN_CLASSC_NSHIFT	8 +#define	IN_CLASSC_HOST		(0xffffffff & ~IN_CLASSC_NET) +#define	IN_CLASSD(a)		((((in_addr_t)(a)) & 0xf0000000) == 0xe0000000) +#define	IN_MULTICAST(a)		IN_CLASSD(a) +#define	IN_EXPERIMENTAL(a)	((((in_addr_t)(a)) & 0xe0000000) == 0xe0000000) +#define	IN_BADCLASS(a)		((((in_addr_t)(a)) & 0xf0000000) == 0xf0000000) +#endif + +#endif diff --git a/include/netinet/ip.h b/include/netinet/ip.h new file mode 100644 index 00000000..41187414 --- /dev/null +++ b/include/netinet/ip.h @@ -0,0 +1,186 @@ +#ifndef _NETINET_IP_H +#define _NETINET_IP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> +#include <netinet/in.h> +#include <endian.h> + +struct timestamp { +	uint8_t len; +	uint8_t ptr; +#if __BYTE_ORDER == __LITTLE_ENDIAN +	unsigned int flags:4; +	unsigned int overflow:4; +#else +	unsigned int overflow:4; +	unsigned int flags:4; +#endif +	uint32_t data[9]; +  }; + +struct iphdr { +#if __BYTE_ORDER == __LITTLE_ENDIAN +	unsigned int ihl:4; +	unsigned int version:4; +#else +	unsigned int version:4; +	unsigned int ihl:4; +#endif +	uint8_t tos; +	uint16_t tot_len; +	uint16_t id; +	uint16_t frag_off; +	uint8_t ttl; +	uint8_t protocol; +	uint16_t check; +	uint32_t saddr; +	uint32_t daddr; +}; + +struct ip { +#if __BYTE_ORDER == __LITTLE_ENDIAN +	unsigned int ip_hl:4; +	unsigned int ip_v:4; +#else +	unsigned int ip_v:4; +	unsigned int ip_hl:4; +#endif +	uint8_t ip_tos; +	uint16_t ip_len; +	uint16_t ip_id; +	uint16_t ip_off; +	uint8_t ip_ttl; +	uint8_t ip_p; +	uint16_t ip_sum; +	struct in_addr ip_src, ip_dst; +}; + +#define	IP_RF 0x8000 +#define	IP_DF 0x4000 +#define	IP_MF 0x2000 +#define	IP_OFFMASK 0x1fff + +struct ip_timestamp { +	uint8_t ipt_code; +	uint8_t ipt_len; +	uint8_t ipt_ptr; +#if __BYTE_ORDER == __LITTLE_ENDIAN +	unsigned int ipt_flg:4; +	unsigned int ipt_oflw:4; +#else +	unsigned int ipt_oflw:4; +	unsigned int ipt_flg:4; +#endif +	uint32_t data[9]; +}; + +#define	IPVERSION	4 +#define	IP_MAXPACKET	65535 + +#define	IPTOS_ECN_MASK		0x03 +#define	IPTOS_ECN(x)		((x) & IPTOS_ECN_MASK) +#define	IPTOS_ECN_NOT_ECT	0x00 +#define	IPTOS_ECN_ECT1		0x01 +#define	IPTOS_ECN_ECT0		0x02 +#define	IPTOS_ECN_CE		0x03 + +#define	IPTOS_DSCP_MASK		0xfc +#define	IPTOS_DSCP(x)		((x) & IPTOS_DSCP_MASK) +#define	IPTOS_DSCP_AF11		0x28 +#define	IPTOS_DSCP_AF12		0x30 +#define	IPTOS_DSCP_AF13		0x38 +#define	IPTOS_DSCP_AF21		0x48 +#define	IPTOS_DSCP_AF22		0x50 +#define	IPTOS_DSCP_AF23		0x58 +#define	IPTOS_DSCP_AF31		0x68 +#define	IPTOS_DSCP_AF32		0x70 +#define	IPTOS_DSCP_AF33		0x78 +#define	IPTOS_DSCP_AF41		0x88 +#define	IPTOS_DSCP_AF42		0x90 +#define	IPTOS_DSCP_AF43		0x98 +#define	IPTOS_DSCP_EF		0xb8 + +#define	IPTOS_TOS_MASK		0x1E +#define	IPTOS_TOS(tos)		((tos) & IPTOS_TOS_MASK) +#define	IPTOS_LOWDELAY		0x10 +#define	IPTOS_THROUGHPUT	0x08 +#define	IPTOS_RELIABILITY	0x04 +#define	IPTOS_LOWCOST		0x02 +#define	IPTOS_MINCOST		IPTOS_LOWCOST + +#define	IPTOS_PREC_MASK			0xe0 +#define	IPTOS_PREC(tos)                ((tos) & IPTOS_PREC_MASK) +#define	IPTOS_PREC_NETCONTROL		0xe0 +#define	IPTOS_PREC_INTERNETCONTROL	0xc0 +#define	IPTOS_PREC_CRITIC_ECP		0xa0 +#define	IPTOS_PREC_FLASHOVERRIDE	0x80 +#define	IPTOS_PREC_FLASH		0x60 +#define	IPTOS_PREC_IMMEDIATE		0x40 +#define	IPTOS_PREC_PRIORITY		0x20 +#define	IPTOS_PREC_ROUTINE		0x00 + +#define	IPOPT_COPY		0x80 +#define	IPOPT_CLASS_MASK	0x60 +#define	IPOPT_NUMBER_MASK	0x1f + +#define	IPOPT_COPIED(o)		((o) & IPOPT_COPY) +#define	IPOPT_CLASS(o)		((o) & IPOPT_CLASS_MASK) +#define	IPOPT_NUMBER(o)		((o) & IPOPT_NUMBER_MASK) + +#define	IPOPT_CONTROL		0x00 +#define	IPOPT_RESERVED1		0x20 +#define	IPOPT_DEBMEAS		0x40 +#define	IPOPT_MEASUREMENT       IPOPT_DEBMEAS +#define	IPOPT_RESERVED2		0x60 + +#define	IPOPT_EOL		0 +#define	IPOPT_END		IPOPT_EOL +#define	IPOPT_NOP		1 +#define	IPOPT_NOOP		IPOPT_NOP + +#define	IPOPT_RR		7 +#define	IPOPT_TS		68 +#define	IPOPT_TIMESTAMP		IPOPT_TS +#define	IPOPT_SECURITY		130 +#define	IPOPT_SEC		IPOPT_SECURITY +#define	IPOPT_LSRR		131 +#define	IPOPT_SATID		136 +#define	IPOPT_SID		IPOPT_SATID +#define	IPOPT_SSRR		137 +#define	IPOPT_RA		148 + +#define	IPOPT_OPTVAL		0 +#define	IPOPT_OLEN		1 +#define	IPOPT_OFFSET		2 +#define	IPOPT_MINOFF		4 + +#define	MAX_IPOPTLEN		40 + +#define	IPOPT_TS_TSONLY		0 +#define	IPOPT_TS_TSANDADDR	1 +#define	IPOPT_TS_PRESPEC	3 + +#define	IPOPT_SECUR_UNCLASS	0x0000 +#define	IPOPT_SECUR_CONFID	0xf135 +#define	IPOPT_SECUR_EFTO	0x789a +#define	IPOPT_SECUR_MMMM	0xbc4d +#define	IPOPT_SECUR_RESTR	0xaf13 +#define	IPOPT_SECUR_SECRET	0xd788 +#define	IPOPT_SECUR_TOPSECRET	0x6bc5 + +#define	MAXTTL		255 +#define	IPDEFTTL	64 +#define	IPFRAGTTL	60 +#define	IPTTLDEC	1 + +#define	IP_MSS		576 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/netinet/ip6.h b/include/netinet/ip6.h new file mode 100644 index 00000000..a4347a53 --- /dev/null +++ b/include/netinet/ip6.h @@ -0,0 +1,142 @@ +#ifndef _NETINET_IP6_H +#define _NETINET_IP6_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> +#include <netinet/in.h> +#include <endian.h> + +struct ip6_hdr { +	union { +		struct ip6_hdrctl { +			uint32_t ip6_un1_flow; +			uint16_t ip6_un1_plen; +			uint8_t  ip6_un1_nxt; +			uint8_t  ip6_un1_hlim; +		} ip6_un1; +		uint8_t ip6_un2_vfc; +	} ip6_ctlun; +	struct in6_addr ip6_src; +	struct in6_addr ip6_dst; +}; + +#define ip6_vfc   ip6_ctlun.ip6_un2_vfc +#define ip6_flow  ip6_ctlun.ip6_un1.ip6_un1_flow +#define ip6_plen  ip6_ctlun.ip6_un1.ip6_un1_plen +#define ip6_nxt   ip6_ctlun.ip6_un1.ip6_un1_nxt +#define ip6_hlim  ip6_ctlun.ip6_un1.ip6_un1_hlim +#define ip6_hops  ip6_ctlun.ip6_un1.ip6_un1_hlim + +struct ip6_ext { +	uint8_t  ip6e_nxt; +	uint8_t  ip6e_len; +}; + +struct ip6_hbh { +	uint8_t  ip6h_nxt; +	uint8_t  ip6h_len; +}; + +struct ip6_dest { +	uint8_t  ip6d_nxt; +	uint8_t  ip6d_len; +}; + +struct ip6_rthdr { +	uint8_t  ip6r_nxt; +	uint8_t  ip6r_len; +	uint8_t  ip6r_type; +	uint8_t  ip6r_segleft; +}; + +struct ip6_rthdr0 { +	uint8_t  ip6r0_nxt; +	uint8_t  ip6r0_len; +	uint8_t  ip6r0_type; +	uint8_t  ip6r0_segleft; +	uint8_t  ip6r0_reserved; +	uint8_t  ip6r0_slmap[3]; +	struct in6_addr ip6r0_addr[]; +}; + +struct ip6_frag { +	uint8_t   ip6f_nxt; +	uint8_t   ip6f_reserved; +	uint16_t  ip6f_offlg; +	uint32_t  ip6f_ident; +}; + +#if __BYTE_ORDER == __BIG_ENDIAN +#define IP6F_OFF_MASK       0xfff8 +#define IP6F_RESERVED_MASK  0x0006 +#define IP6F_MORE_FRAG      0x0001 +#else +#define IP6F_OFF_MASK       0xf8ff +#define IP6F_RESERVED_MASK  0x0600 +#define IP6F_MORE_FRAG      0x0100 +#endif + +struct ip6_opt { +	uint8_t  ip6o_type; +	uint8_t  ip6o_len; +}; + +#define IP6OPT_TYPE(o)		((o) & 0xc0) +#define IP6OPT_TYPE_SKIP	0x00 +#define IP6OPT_TYPE_DISCARD	0x40 +#define IP6OPT_TYPE_FORCEICMP	0x80 +#define IP6OPT_TYPE_ICMP	0xc0 +#define IP6OPT_TYPE_MUTABLE	0x20 + +#define IP6OPT_PAD1	0 +#define IP6OPT_PADN	1 + +#define IP6OPT_JUMBO		0xc2 +#define IP6OPT_NSAP_ADDR	0xc3 +#define IP6OPT_TUNNEL_LIMIT	0x04 +#define IP6OPT_ROUTER_ALERT	0x05 + +struct ip6_opt_jumbo { +	uint8_t  ip6oj_type; +	uint8_t  ip6oj_len; +	uint8_t  ip6oj_jumbo_len[4]; +}; +#define IP6OPT_JUMBO_LEN	6 + +struct ip6_opt_nsap { +	uint8_t  ip6on_type; +	uint8_t  ip6on_len; +	uint8_t  ip6on_src_nsap_len; +	uint8_t  ip6on_dst_nsap_len; +}; + +struct ip6_opt_tunnel { +	uint8_t  ip6ot_type; +	uint8_t  ip6ot_len; +	uint8_t  ip6ot_encap_limit; +}; + +struct ip6_opt_router { +	uint8_t  ip6or_type; +	uint8_t  ip6or_len; +	uint8_t  ip6or_value[2]; +}; + +#if __BYTE_ORDER == __BIG_ENDIAN +#define IP6_ALERT_MLD	0x0000 +#define IP6_ALERT_RSVP	0x0001 +#define IP6_ALERT_AN	0x0002 +#else +#define IP6_ALERT_MLD	0x0000 +#define IP6_ALERT_RSVP	0x0100 +#define IP6_ALERT_AN	0x0200 +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/netinet/ip_icmp.h b/include/netinet/ip_icmp.h new file mode 100644 index 00000000..2f4a86dd --- /dev/null +++ b/include/netinet/ip_icmp.h @@ -0,0 +1,192 @@ +#ifndef _NETINET_IP_ICMP_H +#define _NETINET_IP_ICMP_H + +#include <stdint.h> +#include <netinet/in.h> +#include <netinet/ip.h> + +#ifdef __cplusplus +extern "C" { +#endif + +struct icmphdr { +	uint8_t type; +	uint8_t code; +	uint16_t checksum; +	union { +		struct { +			uint16_t id; +			uint16_t sequence; +		} echo; +		uint32_t gateway; +		struct { +			uint16_t __unused; +			uint16_t mtu; +		} frag; +	} un; +}; + +#define ICMP_ECHOREPLY		0 +#define ICMP_DEST_UNREACH	3 +#define ICMP_SOURCE_QUENCH	4 +#define ICMP_REDIRECT		5 +#define ICMP_ECHO		8 +#define ICMP_TIME_EXCEEDED	11 +#define ICMP_PARAMETERPROB	12 +#define ICMP_TIMESTAMP		13 +#define ICMP_TIMESTAMPREPLY	14 +#define ICMP_INFO_REQUEST	15 +#define ICMP_INFO_REPLY		16 +#define ICMP_ADDRESS		17 +#define ICMP_ADDRESSREPLY	18 +#define NR_ICMP_TYPES		18 + + +#define ICMP_NET_UNREACH	0 +#define ICMP_HOST_UNREACH	1 +#define ICMP_PROT_UNREACH	2 +#define ICMP_PORT_UNREACH	3 +#define ICMP_FRAG_NEEDED	4 +#define ICMP_SR_FAILED		5 +#define ICMP_NET_UNKNOWN	6 +#define ICMP_HOST_UNKNOWN	7 +#define ICMP_HOST_ISOLATED	8 +#define ICMP_NET_ANO		9 +#define ICMP_HOST_ANO		10 +#define ICMP_NET_UNR_TOS	11 +#define ICMP_HOST_UNR_TOS	12 +#define ICMP_PKT_FILTERED	13 +#define ICMP_PREC_VIOLATION	14 +#define ICMP_PREC_CUTOFF	15 +#define NR_ICMP_UNREACH		15 + +#define ICMP_REDIR_NET		0 +#define ICMP_REDIR_HOST		1 +#define ICMP_REDIR_NETTOS	2 +#define ICMP_REDIR_HOSTTOS	3 + +#define ICMP_EXC_TTL		0 +#define ICMP_EXC_FRAGTIME	1 + + +struct icmp_ra_addr { +	uint32_t ira_addr; +	uint32_t ira_preference; +}; + +struct icmp { +	uint8_t  icmp_type; +	uint8_t  icmp_code; +	uint16_t icmp_cksum; +	union { +		uint8_t ih_pptr; +		struct in_addr ih_gwaddr; +		struct ih_idseq { +			uint16_t icd_id; +			uint16_t icd_seq; +		} ih_idseq; +		uint32_t ih_void; + +		struct ih_pmtu { +			uint16_t ipm_void; +			uint16_t ipm_nextmtu; +		} ih_pmtu; + +		struct ih_rtradv { +			uint8_t irt_num_addrs; +			uint8_t irt_wpa; +			uint16_t irt_lifetime; +		} ih_rtradv; +	} icmp_hun; +	union { +		struct { +			uint32_t its_otime; +			uint32_t its_rtime; +			uint32_t its_ttime; +		} id_ts; +		struct { +			struct ip idi_ip; +		} id_ip; +		struct icmp_ra_addr id_radv; +		uint32_t   id_mask; +		uint8_t    id_data[1]; +	} icmp_dun; +}; + +#define	icmp_pptr	icmp_hun.ih_pptr +#define	icmp_gwaddr	icmp_hun.ih_gwaddr +#define	icmp_id		icmp_hun.ih_idseq.icd_id +#define	icmp_seq	icmp_hun.ih_idseq.icd_seq +#define	icmp_void	icmp_hun.ih_void +#define	icmp_pmvoid	icmp_hun.ih_pmtu.ipm_void +#define	icmp_nextmtu	icmp_hun.ih_pmtu.ipm_nextmtu +#define	icmp_num_addrs	icmp_hun.ih_rtradv.irt_num_addrs +#define	icmp_wpa	icmp_hun.ih_rtradv.irt_wpa +#define	icmp_lifetime	icmp_hun.ih_rtradv.irt_lifetime +#define	icmp_otime	icmp_dun.id_ts.its_otime +#define	icmp_rtime	icmp_dun.id_ts.its_rtime +#define	icmp_ttime	icmp_dun.id_ts.its_ttime +#define	icmp_ip		icmp_dun.id_ip.idi_ip +#define	icmp_radv	icmp_dun.id_radv +#define	icmp_mask	icmp_dun.id_mask +#define	icmp_data	icmp_dun.id_data + +#define	ICMP_MINLEN	8 +#define	ICMP_TSLEN	(8 + 3 * sizeof (n_time)) +#define	ICMP_MASKLEN	12 +#define	ICMP_ADVLENMIN	(8 + sizeof (struct ip) + 8) +#define	ICMP_ADVLEN(p)	(8 + ((p)->icmp_ip.ip_hl << 2) + 8) + +#define	ICMP_UNREACH		3 +#define	ICMP_SOURCEQUENCH	4 +#define	ICMP_ROUTERADVERT	9 +#define	ICMP_ROUTERSOLICIT	10 +#define	ICMP_TIMXCEED		11 +#define	ICMP_PARAMPROB		12 +#define	ICMP_TSTAMP		13 +#define	ICMP_TSTAMPREPLY	14 +#define	ICMP_IREQ		15 +#define	ICMP_IREQREPLY		16 +#define	ICMP_MASKREQ		17 +#define	ICMP_MASKREPLY		18 +#define	ICMP_MAXTYPE		18 + +#define	ICMP_UNREACH_NET	        0 +#define	ICMP_UNREACH_HOST	        1 +#define	ICMP_UNREACH_PROTOCOL	        2 +#define	ICMP_UNREACH_PORT	        3 +#define	ICMP_UNREACH_NEEDFRAG	        4 +#define	ICMP_UNREACH_SRCFAIL	        5 +#define	ICMP_UNREACH_NET_UNKNOWN        6 +#define	ICMP_UNREACH_HOST_UNKNOWN       7 +#define	ICMP_UNREACH_ISOLATED	        8 +#define	ICMP_UNREACH_NET_PROHIB	        9 +#define	ICMP_UNREACH_HOST_PROHIB        10 +#define	ICMP_UNREACH_TOSNET	        11 +#define	ICMP_UNREACH_TOSHOST	        12 +#define	ICMP_UNREACH_FILTER_PROHIB      13 +#define	ICMP_UNREACH_HOST_PRECEDENCE    14 +#define	ICMP_UNREACH_PRECEDENCE_CUTOFF  15 + +#define	ICMP_REDIRECT_NET	0 +#define	ICMP_REDIRECT_HOST	1 +#define	ICMP_REDIRECT_TOSNET	2 +#define	ICMP_REDIRECT_TOSHOST	3 + +#define	ICMP_TIMXCEED_INTRANS	0 +#define	ICMP_TIMXCEED_REASS	1 + +#define	ICMP_PARAMPROB_OPTABSENT 1 + +#define	ICMP_INFOTYPE(type) \ +	((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \ +	(type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \ +	(type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \ +	(type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \ +	(type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/netinet/tcp.h b/include/netinet/tcp.h new file mode 100644 index 00000000..ea32ca07 --- /dev/null +++ b/include/netinet/tcp.h @@ -0,0 +1,6 @@ +#ifndef _NETINET_TCP_H +#define _NETINET_TCP_H + +#include <bits/tcp.h> + +#endif diff --git a/include/netinet/udp.h b/include/netinet/udp.h new file mode 100644 index 00000000..15b91454 --- /dev/null +++ b/include/netinet/udp.h @@ -0,0 +1,35 @@ +#ifndef _NETINET_UDP_H +#define _NETINET_UDP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> + +struct udphdr { +	uint16_t source; +	uint16_t dest; +	uint16_t len; +	uint16_t check; +}; + +#define uh_sport source +#define uh_dport dest +#define uh_ulen len +#define uh_sum check + +#define UDP_CORK	1 +#define UDP_ENCAP	100 + +#define UDP_ENCAP_ESPINUDP_NON_IKE 1 +#define UDP_ENCAP_ESPINUDP	2 +#define UDP_ENCAP_L2TPINUDP	3 + +#define SOL_UDP            17 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/nl_types.h b/include/nl_types.h new file mode 100644 index 00000000..ca61efb6 --- /dev/null +++ b/include/nl_types.h @@ -0,0 +1,24 @@ +#ifndef _NL_TYPES_H +#define _NL_TYPES_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define NL_SETD 1 +#define NL_CAT_LOCALE 1 + +#define __NEED_nl_item +#include <bits/alltypes.h> + +typedef long nl_catd; + +nl_catd catopen (const char *, int); +char *catgets (nl_catd, int, int, const char *); +int catclose (nl_catd); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/paths.h b/include/paths.h new file mode 100644 index 00000000..8a38ba7b --- /dev/null +++ b/include/paths.h @@ -0,0 +1,40 @@ +#ifndef _PATHS_H_ +#define	_PATHS_H_ + +#define	_PATH_DEFPATH "/usr/local/bin:/bin:/usr/bin" +#define	_PATH_STDPATH "/bin:/usr/bin:/sbin:/usr/sbin" + +#define	_PATH_BSHELL	"/bin/sh" +#define	_PATH_CONSOLE	"/dev/console" +#define	_PATH_CSHELL	"/bin/csh" +#define	_PATH_DEVDB	"/var/run/dev.db" +#define	_PATH_DEVNULL	"/dev/null" +#define	_PATH_DRUM	"/dev/drum" +#define	_PATH_GSHADOW	"/etc/gshadow" +#define	_PATH_KLOG	"/proc/kmsg" +#define	_PATH_KMEM	"/dev/kmem" +#define	_PATH_LASTLOG	"/var/log/lastlog" +#define	_PATH_MAILDIR	"/var/mail" +#define	_PATH_MAN	"/usr/share/man" +#define	_PATH_MEM	"/dev/mem" +#define	_PATH_MNTTAB	"/etc/fstab" +#define	_PATH_MOUNTED	"/etc/mtab" +#define	_PATH_NOLOGIN	"/etc/nologin" +#define	_PATH_PRESERVE	"/var/lib" +#define	_PATH_RWHODIR	"/var/spool/rwho" +#define	_PATH_SENDMAIL	"/usr/sbin/sendmail" +#define	_PATH_SHADOW	"/etc/shadow" +#define	_PATH_SHELLS	"/etc/shells" +#define	_PATH_TTY	"/dev/tty" +#define	_PATH_UNIX	"/boot/vmlinux" +#define _PATH_UTMP	"/var/run/utmp" +#define	_PATH_VI	"/usr/bin/vi" +#define _PATH_WTMP	"/var/log/wtmp" + +#define	_PATH_DEV	"/dev/" +#define	_PATH_TMP	"/tmp/" +#define	_PATH_VARDB	"/var/lib/misc/" +#define	_PATH_VARRUN	"/var/run/" +#define	_PATH_VARTMP	"/var/tmp/" + +#endif diff --git a/include/poll.h b/include/poll.h new file mode 100644 index 00000000..f868ab57 --- /dev/null +++ b/include/poll.h @@ -0,0 +1,35 @@ +#ifndef	_POLL_H +#define	_POLL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define POLLIN     0x001 +#define POLLPRI    0x002 +#define POLLOUT    0x004 +#define POLLERR    0x008 +#define POLLHUP    0x010 +#define POLLNVAL   0x020 +#define POLLRDNORM 0x040 +#define POLLRDBAND 0x080 +#define POLLWRNORM 0x100 +#define POLLWRBAND 0x200 +#define POLLMSG    0x400 + +typedef unsigned int nfds_t; + +struct pollfd +{ +	int fd; +	short events; +	short revents; +}; + +int poll (struct pollfd *, nfds_t, int); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/pthread.h b/include/pthread.h new file mode 100644 index 00000000..ce6273d2 --- /dev/null +++ b/include/pthread.h @@ -0,0 +1,216 @@ +#ifndef _PTHREAD_H +#define _PTHREAD_H +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_time_t +#define __NEED_struct_timespec +#define __NEED_sigset_t +#define __NEED_pthread_t +#define __NEED_size_t + +#include <bits/alltypes.h> + +struct sched_param; + +typedef int pthread_once_t, pthread_key_t, pthread_spinlock_t; +typedef int pthread_mutexattr_t, pthread_condattr_t, pthread_barrierattr_t; + +typedef struct { +	size_t __guardsize; +	size_t __stacksize; +	unsigned __detach : 1; +	unsigned __pad : 31; +	int __attr[6]; +} pthread_attr_t; + +typedef struct { +	int __attr[2]; +} pthread_rwlockattr_t; + +typedef struct { +	int __type; +	int __lock; +	pthread_t __owner; +	int __pad2; +	int __waiters; +	int __pad; +} pthread_mutex_t; + +typedef struct { +	int __block; +	int __pad[11]; +} pthread_cond_t; + +typedef struct { +	int __wrlock; +	int __readers; +	int __waiters; +	int __owner; +	int __pad[4]; +} pthread_rwlock_t; + +typedef struct { +	int __count; +	int __limit; +	int __left; +	int __waiters; +	int __barrier[1]; +} pthread_barrier_t; + +#define PTHREAD_CREATE_JOINABLE 0 +#define PTHREAD_CREATE_DETACHED 1 + +#define PTHREAD_MUTEX_NORMAL 0 +#define PTHREAD_MUTEX_DEFAULT 0 +#define PTHREAD_MUTEX_RECURSIVE 1 +#define PTHREAD_MUTEX_ERRORCHECK 2 + +#define PTHREAD_MUTEX_STALLED 0 +#define PTHREAD_MUTEX_ROBUST 1 + +#define PTHREAD_PRIO_NONE 0 +#define PTHREAD_PRIO_INHERIT 1 +#define PTHREAD_PRIO_PROTECT 2 + +#define PTHREAD_INHERIT_SCHED 0 +#define PTHREAD_EXPLICIT_SCHED 1 + +#define PTHREAD_SCOPE_SYSTEM 0 +#define PTHREAD_SCOPE_PROCESS 1 + +#define PTHREAD_PROCESS_PRIVATE 0 +#define PTHREAD_PROCESS_SHARED 1 + + +#define PTHREAD_MUTEX_INITIALIZER {0} +#define PTHREAD_RWLOCK_INITIALIZER {0} +#define PTHREAD_COND_INITIALIZER {0} +#define PTHREAD_ONCE_INIT 0 + + +#define PTHREAD_CANCEL_ENABLE 0 +#define PTHREAD_CANCEL_DISABLE 1 + +#define PTHREAD_CANCEL_DEFERRED 0 +#define PTHREAD_CANCEL_ASYNCHRONOUS 1 + +#define PTHREAD_CANCELLED ((void *)-1) + + +#define PTHREAD_BARRIER_SERIAL_THREAD (-1) + + +int pthread_create(pthread_t *, const pthread_attr_t *, void *(*)(void *), void *); +int pthread_detach(pthread_t); +void pthread_exit(void *); +int pthread_join(pthread_t, void **); + +pthread_t pthread_self(void); +int pthread_equal(pthread_t, pthread_t); + +int pthread_setcancelstate(int, int *); +int pthread_setcanceltype(int, int *); +void pthread_testcancel(void); +int pthread_cancel(pthread_t); + +int pthread_once(pthread_once_t *, void (*)(void)); + +int pthread_mutex_init(pthread_mutex_t *, const pthread_mutexattr_t *); +int pthread_mutex_lock(pthread_mutex_t *); +int pthread_mutex_unlock(pthread_mutex_t *); +int pthread_mutex_trylock(pthread_mutex_t *); +int pthread_mutex_destroy(pthread_mutex_t *); + +int pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *); +int pthread_cond_destroy(pthread_cond_t *); +int pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *); +int pthread_cond_timedwait(pthread_cond_t *, pthread_mutex_t *, const struct timespec *); +int pthread_cond_broadcast(pthread_cond_t *); +int pthread_cond_signal(pthread_cond_t *); + +int pthread_rwlock_init(pthread_rwlock_t *, const pthread_rwlockattr_t *); +int pthread_rwlock_destroy(pthread_rwlock_t *); +int pthread_rwlock_rdlock(pthread_rwlock_t *); +int pthread_rwlock_tryrdlock(pthread_rwlock_t *); +int pthread_rwlock_timedrdlock(pthread_rwlock_t *, const struct timespec *); +int pthread_rwlock_wrlock(pthread_rwlock_t *); +int pthread_rwlock_trywrlock(pthread_rwlock_t *); +int pthread_rwlock_timedwrlock(pthread_rwlock_t *, const struct timespec *); +int pthread_rwlock_unlock(pthread_rwlock_t *); + +int pthread_spin_init(pthread_spinlock_t *, int); +int pthread_spin_destroy(pthread_spinlock_t *); +int pthread_spin_lock(pthread_spinlock_t *); +int pthread_spin_trylock(pthread_spinlock_t *); +int pthread_spin_unlock(pthread_spinlock_t *); + +int pthread_barrier_init(pthread_barrier_t *, const pthread_barrierattr_t *, unsigned); +int pthread_barrier_destroy(pthread_barrier_t *); +int pthread_barrier_wait(pthread_barrier_t *); + +int pthread_key_create(pthread_key_t *, void (*)(void *)); +int pthread_key_delete(pthread_key_t); +void *pthread_getspecific(pthread_key_t); +int pthread_setspecific(pthread_key_t, const void *); + +int pthread_attr_init(pthread_attr_t *); +int pthread_attr_destroy(pthread_attr_t *); + +int pthread_attr_getguardsize(pthread_attr_t *, size_t *); +int pthread_attr_setguardsize(pthread_attr_t *, size_t); +int pthread_attr_getstacksize(pthread_attr_t *, size_t *); +int pthread_attr_setstacksize(pthread_attr_t *, size_t); +int pthread_attr_getdetachstate(pthread_attr_t *, int *); +int pthread_attr_setdetachstate(pthread_attr_t *, int); +int pthread_attr_getstack(pthread_attr_t *, void **, size_t *); +int pthread_attr_setstack(pthread_attr_t *, void *, size_t); +int pthread_attr_getscope(pthread_attr_t *, int *); +int pthread_attr_setscope(pthread_attr_t *, int); +int pthread_attr_getschedpolicy(pthread_attr_t *, int *); +int pthread_attr_setschedpolicy(pthread_attr_t *, int); +int pthread_attr_getschedparam(pthread_attr_t *, struct sched_param *); +int pthread_attr_setschedparam(pthread_attr_t *, const struct sched_param *); +int pthread_attr_getinheritsched(pthread_attr_t *, int *); +int pthread_attr_setinheritsched(pthread_attr_t *, int); + +int pthread_mutexattr_destroy(pthread_mutexattr_t *); +int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *, int *); +int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *, int *); +int pthread_mutexattr_getpshared(const pthread_mutexattr_t *, int *); +int pthread_mutexattr_getrobust(const pthread_mutexattr_t *, int *); +int pthread_mutexattr_gettype(const pthread_mutexattr_t *, int *); +int pthread_mutexattr_init(pthread_mutexattr_t *); +int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int); +int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int); +int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int); +int pthread_mutexattr_setrobust(pthread_mutexattr_t *, int); +int pthread_mutexattr_settype(pthread_mutexattr_t *, int); + +int pthread_barrierattr_destroy(pthread_barrierattr_t *); +int pthread_barrierattr_getpshared(const pthread_barrierattr_t *, int *); +int pthread_barrierattr_init(pthread_barrierattr_t *); +int pthread_barrierattr_setpshared(pthread_barrierattr_t *, int); + +#include <bits/pthread.h> + +int __setjmp(void *); +void __pthread_register_cancel(struct __ptcb *); +void __pthread_unregister_cancel(struct __ptcb *); +void __pthread_unwind_next(struct __ptcb *); + +#define pthread_cleanup_push(f, x) \ +do { struct __ptcb __cb; void (*__f)(void *) = (f); void *__x = (x); \ +if (__setjmp(__cb.__jb)) __f(__x), __pthread_unwind_next(&__cb); \ +__pthread_register_cancel(&__cb); { + +#define pthread_cleanup_pop(r) ; } \ +__pthread_unregister_cancel(&__cb); \ +if (r) __f(__x); } while (0) + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/pty.h b/include/pty.h new file mode 100644 index 00000000..9444e5ec --- /dev/null +++ b/include/pty.h @@ -0,0 +1,17 @@ +#ifndef	_PTY_H +#define	_PTY_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <termios.h> +#include <sys/ioctl.h> + +int openpty(int *, int *, char *, const struct termios *, const struct winsize *); + +#ifdef __cplusplus +extern } +#endif + +#endif diff --git a/include/pwd.h b/include/pwd.h new file mode 100644 index 00000000..5abfbfd5 --- /dev/null +++ b/include/pwd.h @@ -0,0 +1,38 @@ +#ifndef _PWD_H +#define _PWD_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_size_t +#define __NEED_uid_t +#define __NEED_gid_t + +#include <bits/alltypes.h> + +struct passwd +{ +	char *pw_name; +	char *pw_passwd; +	uid_t pw_uid; +	gid_t pw_gid; +	char *pw_gecos; +	char *pw_dir; +	char *pw_shell; +}; + +void setpwent (void); +void endpwent (void); +struct passwd *getpwent (void); + +struct passwd *getpwuid (uid_t); +struct passwd *getpwnam (const char *); +int getpwuid_r (uid_t, struct passwd *, char *, size_t, struct passwd **); +int getpwnam_r (const char *, struct passwd *, char *, size_t, struct passwd **); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/regex.h b/include/regex.h new file mode 100644 index 00000000..3673bfa7 --- /dev/null +++ b/include/regex.h @@ -0,0 +1,59 @@ +#ifndef _REGEX_H +#define _REGEX_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_size_t + +#include <bits/alltypes.h> + +typedef long regoff_t; + +typedef struct { +	size_t re_nsub; +	void *__opaque; +} regex_t; + +typedef struct { +	regoff_t rm_so; +	regoff_t rm_eo; +} regmatch_t; + +#define REG_EXTENDED    1 +#define REG_ICASE       2 +#define REG_NEWLINE     4 +#define REG_NOSUB       8 + +#define REG_NOTBOL      1 +#define REG_NOTEOL      2 + +#define REG_OK          0 +#define REG_NOMATCH     1 +#define REG_BADPAT      2 +#define REG_ECOLLATE    3 +#define REG_ECTYPE      4 +#define REG_EESCAPE     5 +#define REG_ESUBREG     6 +#define REG_EBRACK      7 +#define REG_EPAREN      8 +#define REG_EBRACE      9 +#define REG_BADBR       10 +#define REG_ERANGE      11 +#define REG_ESPACE      12 +#define REG_BADRPT      13 + +#define REG_ENOSYS      -1 + +int regcomp(regex_t *, const char *, int); +int regexec(const regex_t *, const char *, size_t, regmatch_t [], int); +void regfree(regex_t *); + +size_t regerror(int, const regex_t *, char *, size_t); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/resolv.h b/include/resolv.h new file mode 100644 index 00000000..3b77fc7b --- /dev/null +++ b/include/resolv.h @@ -0,0 +1,143 @@ +#ifndef _RESOLV_H_ +#define _RESOLV_H_ + +#include <stdint.h> +#include <arpa/nameser.h> +#include <netinet/in.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#define MAXNS			3 +#define MAXDFLSRCH		3 +#define MAXDNSRCH		6 +#define LOCALDOMAINPARTS	2 + +#define RES_TIMEOUT		5 +#define MAXRESOLVSORT		10 +#define RES_MAXNDOTS		15 +#define RES_MAXRETRANS		30 +#define RES_MAXRETRY		5 +#define RES_DFLRETRY		2 +#define RES_MAXTIME		65535 + +/* unused; purely for broken apps */ +typedef struct __res_state { +	int retrans; +	int retry; +	unsigned long options; +	int nscount; +	struct sockaddr_in nsaddr_list[MAXNS]; +# define nsaddr	nsaddr_list[0] +	unsigned short id; +	char *dnsrch[MAXDNSRCH+1]; +	char defdname[256]; +	unsigned long pfcode; +	unsigned ndots:4; +	unsigned nsort:4; +	unsigned ipv6_unavail:1; +	unsigned unused:23; +	struct { +		struct in_addr addr; +		uint32_t mask; +	} sort_list[MAXRESOLVSORT]; +	void *qhook; +	void *rhook; +	int res_h_errno; +	int _vcsock; +	unsigned _flags; +	union { +		char pad[52]; +		struct { +			uint16_t		nscount; +			uint16_t		nsmap[MAXNS]; +			int			nssocks[MAXNS]; +			uint16_t		nscount6; +			uint16_t		nsinit; +			struct sockaddr_in6	*nsaddrs[MAXNS]; +			unsigned int		_initstamp[2]; +		} _ext; +	} _u; +} *res_state; + +#define	__RES	19991006 + +#ifndef _PATH_RESCONF +#define _PATH_RESCONF        "/etc/resolv.conf" +#endif + +struct res_sym { +	int number; +	char *name; +	char *humanname; +}; + +#define	RES_F_VC	0x00000001 +#define	RES_F_CONN	0x00000002 +#define RES_F_EDNS0ERR	0x00000004 + +#define	RES_EXHAUSTIVE	0x00000001 + +#define RES_INIT	0x00000001 +#define RES_DEBUG	0x00000002 +#define RES_AAONLY	0x00000004 +#define RES_USEVC	0x00000008 +#define RES_PRIMARY	0x00000010 +#define RES_IGNTC	0x00000020 +#define RES_RECURSE	0x00000040 +#define RES_DEFNAMES	0x00000080 +#define RES_STAYOPEN	0x00000100 +#define RES_DNSRCH	0x00000200 +#define	RES_INSECURE1	0x00000400 +#define	RES_INSECURE2	0x00000800 +#define	RES_NOALIASES	0x00001000 +#define	RES_USE_INET6	0x00002000 +#define RES_ROTATE	0x00004000 +#define	RES_NOCHECKNAME	0x00008000 +#define	RES_KEEPTSIG	0x00010000 +#define	RES_BLAST	0x00020000 +#define RES_USEBSTRING	0x00040000 +#define RES_NOIP6DOTINT	0x00080000 +#define RES_USE_EDNS0	0x00100000 +#define RES_SNGLKUP	0x00200000 +#define RES_SNGLKUPREOP	0x00400000 +#define RES_USE_DNSSEC	0x00800000 + +#define RES_DEFAULT	(RES_RECURSE|RES_DEFNAMES|RES_DNSRCH|RES_NOIP6DOTINT) + +#define RES_PRF_STATS	0x00000001 +#define RES_PRF_UPDATE	0x00000002 +#define RES_PRF_CLASS   0x00000004 +#define RES_PRF_CMD	0x00000008 +#define RES_PRF_QUES	0x00000010 +#define RES_PRF_ANS	0x00000020 +#define RES_PRF_AUTH	0x00000040 +#define RES_PRF_ADD	0x00000080 +#define RES_PRF_HEAD1	0x00000100 +#define RES_PRF_HEAD2	0x00000200 +#define RES_PRF_TTLID	0x00000400 +#define RES_PRF_HEADX	0x00000800 +#define RES_PRF_QUERY	0x00001000 +#define RES_PRF_REPLY	0x00002000 +#define RES_PRF_INIT	0x00004000 + +extern struct __res_state *__res_state(void); +#define _res (*__res_state()) + +struct rrec; + +int res_init(void); +int res_query(const char *, int, int, unsigned char *, int); +int res_querydomain(const char *, const char *, int, int, unsigned char *, int); +int res_search(const char *, int, int, unsigned char *, int); +int res_mkquery(int, const char *, int, int, char *, int, struct rrec *, char *, int); +int res_send(const char *, int, char *, int); +int dn_comp(unsigned char *, unsigned char *, int, unsigned char **, unsigned char *, unsigned char **); +int dn_expand(unsigned char *, unsigned char *, unsigned char *, unsigned char *, int); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/sched.h b/include/sched.h new file mode 100644 index 00000000..4d8bd3db --- /dev/null +++ b/include/sched.h @@ -0,0 +1,37 @@ +#ifndef _SCHED_H +#define _SCHED_H +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_struct_timespec +#define __NEED_pid_t +#define __NEED_time_t + +#include <bits/alltypes.h> + +struct sched_param { +	int sched_priority; +	int sched_ss_low_priority; +	struct timespec sched_ss_repl_period; +	struct timespec sched_ss_init_budget; +	int sched_ss_max_repl; +}; + +int    sched_get_priority_max(int); +int    sched_get_priority_min(int); +int    sched_getparam(pid_t, struct sched_param *); +int    sched_getscheduler(pid_t); +int    sched_rr_get_interval(pid_t, struct timespec *); +int    sched_setparam(pid_t, const struct sched_param *); +int    sched_setscheduler(pid_t, int, const struct sched_param *); +int     sched_yield(void); + +#define SCHED_OTHER 0 +#define SCHED_FIFO 1 +#define SCHED_RR 2 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/search.h b/include/search.h new file mode 100644 index 00000000..9254ed0c --- /dev/null +++ b/include/search.h @@ -0,0 +1,6 @@ +#ifndef _SEARCH_H +#define _SEARCH_H + +// FIXME!!! + +#endif diff --git a/include/semaphore.h b/include/semaphore.h new file mode 100644 index 00000000..5b68986d --- /dev/null +++ b/include/semaphore.h @@ -0,0 +1,27 @@ +#ifndef _SEMAPHORE_H +#define _SEMAPHORE_H +#ifdef __cplusplus +extern "C" { +#endif + +#define SEM_FAILED ((sem_t *)0) + +typedef struct { +	long __val[4]; +} sem_t; + +int    sem_close(sem_t *); +int    sem_destroy(sem_t *); +int    sem_getvalue(sem_t *, int *); +int    sem_init(sem_t *, int, unsigned); +sem_t *sem_open(const char *, int, ...); +int    sem_post(sem_t *); +int    sem_timedwait(sem_t *, const struct timespec *); +int    sem_trywait(sem_t *); +int    sem_unlink(const char *); +int    sem_wait(sem_t *); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/setjmp.h b/include/setjmp.h new file mode 100644 index 00000000..6288c846 --- /dev/null +++ b/include/setjmp.h @@ -0,0 +1,30 @@ +#ifndef	_SETJMP_H +#define	_SETJMP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <bits/setjmp.h> +typedef unsigned long sigjmp_buf[(1024+sizeof(jmp_buf))/sizeof(long)]; + +#ifdef _GNU_SOURCE +#define jmp_buf sigjmp_buf +#endif + +int setjmp (jmp_buf); +int _setjmp (jmp_buf); +int sigsetjmp (sigjmp_buf, int); + +void longjmp (jmp_buf, int); +void _longjmp (jmp_buf, int); +void siglongjmp (sigjmp_buf, int); + +#define setjmp setjmp +#define longjmp longjmp + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/shadow.h b/include/shadow.h new file mode 100644 index 00000000..2b1be413 --- /dev/null +++ b/include/shadow.h @@ -0,0 +1,44 @@ +#ifndef _SHADOW_H +#define _SHADOW_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define	__NEED_FILE +#define __NEED_size_t + +#include <bits/alltypes.h> + +#define	SHADOW "/etc/shadow" + +struct spwd { +	char *sp_namp; +	char *sp_pwdp; +	long sp_lstchg; +	long sp_min; +	long sp_max; +	long sp_warn; +	long sp_inact; +	long sp_expire; +	unsigned long sp_flag; +}; + +void setspent(void); +void endspent(void); +struct spwd *getspent(void); +struct spwd *fgetspent(FILE *); +struct spwd *sgetspent(const char *); +int putspent(const struct spwd *, FILE *); + +struct spwd *getspnam(const char *); +int getspnam_r(const char *, struct spwd *, char *, size_t, struct spwd **); + +int lckpwdf(void); +int ulckpwdf(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/signal.h b/include/signal.h new file mode 100644 index 00000000..540236a5 --- /dev/null +++ b/include/signal.h @@ -0,0 +1,98 @@ +#ifndef _SIGNAL_H +#define _SIGNAL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_size_t +#define __NEED_pid_t +#define __NEED_uid_t +#define __NEED_struct_timespec +#define __NEED_pthread_t +#define __NEED_time_t +#define __NEED_clock_t +#define __NEED_sigset_t +#define __NEED_siginfo_t + +#include <bits/alltypes.h> + +typedef int sig_atomic_t; + +struct sigaction +{ +	union { +		void (*sa_handler)(int); +		void (*sa_sigaction)(int, siginfo_t *, void *); +	} __sa_handler; +	sigset_t sa_mask; +	int sa_flags; +	void (*__sa_restorer)(void);	 +}; +#define sa_handler   __sa_handler.sa_handler +#define sa_sigaction __sa_handler.sa_sigaction + +typedef struct +{ +	void *ss_sp; +	int ss_flags; +	size_t ss_size; +} stack_t; + +union sigval +{ +	int sival_int; +	void *sival_ptr; +}; + +#include <bits/signal.h> + +int __libc_current_sigrtmin(void); +int __libc_current_sigrtmax(void); + +#define SIGRTMIN  (__libc_current_sigrtmin()) +#define SIGRTMAX  (__libc_current_sigrtmax()) + +void (*signal(int, void (*)(int)))(int); +void (*bsd_signal(int, void (*)(int)))(int); +int kill(pid_t, int); +int killpg(pid_t, int); +int raise(int); +int sigpause(int); + +int sigemptyset(sigset_t *); +int sigfillset(sigset_t *); +int sigaddset(sigset_t *, int); +int sigdelset(sigset_t *, int); +int sigismember(const sigset_t *, int); + +int sigprocmask(int, const sigset_t *, sigset_t *); +int sigsuspend(const sigset_t *); +int sigaction(int, const struct sigaction *, struct sigaction *); +int sigpending(sigset_t *); +int sigwait(const sigset_t *, int *); +int sigwaitinfo(const sigset_t *, siginfo_t *); +int sigtimedwait(const sigset_t *, siginfo_t *, const struct timespec *); +int sigqueue(pid_t, int, const union sigval); + +int siginterrupt(int, int); + +int sigaltstack(const stack_t *, stack_t *); + +int sighold(int); +int sigrelse(int); +int sigignore(int); +void (*sigset(int, void (*)(int)))(int); + +int pthread_sigmask(int, const sigset_t *, sigset_t *); +int pthread_kill(pthread_t, int); + +#ifdef _GNU_SOURCE +typedef int (*sighandler_t)(int); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/stdarg.h b/include/stdarg.h new file mode 100644 index 00000000..cb18778b --- /dev/null +++ b/include/stdarg.h @@ -0,0 +1,32 @@ +#ifndef _STDARG_H +#define _STDARG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_va_list + +#include <bits/alltypes.h> + +#define __VA_ALIGNED_SIZE(x) ((sizeof(x) + sizeof(int) - 1) & ~(sizeof(int) - 1)) + +#define va_start(ap, last) ((ap) = (void *)(((char *)&(last)) + __VA_ALIGNED_SIZE(last))) +#define va_end(ap) ((void)0) +#define va_copy(dest, src) ((dest) = (src)) + +#if 0 +#define va_arg(ap, type) \ +	( ((ap) = (va_list)((char *)(ap) + sizeof(type))), \ +	*(type *)(void *)((char *)(ap) - sizeof(type)) ) +#endif + +#define va_arg(ap, type) \ +	( ((ap) = (va_list)((char *)(ap) + __VA_ALIGNED_SIZE(type))), \ +	*(type *)(void *)((char *)(ap) - __VA_ALIGNED_SIZE(type)) ) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/stdbool.h b/include/stdbool.h new file mode 100644 index 00000000..3d8fbf2a --- /dev/null +++ b/include/stdbool.h @@ -0,0 +1,13 @@ +#ifndef _STDBOOL_H +#define _STDBOOL_H + +#ifndef __cplusplus + +#define true 1 +#define false 0 + +typedef _Bool bool; + +#endif + +#endif diff --git a/include/stddef.h b/include/stddef.h new file mode 100644 index 00000000..dbf5a4ae --- /dev/null +++ b/include/stddef.h @@ -0,0 +1,19 @@ +#ifndef _STDDEF_H +#define _STDDEF_H + +#undef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void*)0) +#endif + +#define __NEED_ptrdiff_t +#define __NEED_size_t +#define __NEED_wchar_t + +#include <bits/alltypes.h> + +#define offsetof(type, member) ((size_t)( (char *)&(((type *)0)->member) - (char *)0 )) + +#endif diff --git a/include/stdint.h b/include/stdint.h new file mode 100644 index 00000000..4d24fd2e --- /dev/null +++ b/include/stdint.h @@ -0,0 +1,107 @@ +#ifndef _STDINT_H +#define _STDINT_H + +#define __NEED_int8_t +#define __NEED_int16_t +#define __NEED_int32_t +#define __NEED_int64_t + +#define __NEED_uint8_t +#define __NEED_uint16_t +#define __NEED_uint32_t +#define __NEED_uint64_t + +#define __NEED_int_least8_t +#define __NEED_int_least16_t +#define __NEED_int_least32_t +#define __NEED_int_least64_t + +#define __NEED_uint_least8_t +#define __NEED_uint_least16_t +#define __NEED_uint_least32_t +#define __NEED_uint_least64_t + +#define __NEED_int_fast8_t +#define __NEED_int_fast16_t +#define __NEED_int_fast32_t +#define __NEED_int_fast64_t + +#define __NEED_uint_fast8_t +#define __NEED_uint_fast16_t +#define __NEED_uint_fast32_t +#define __NEED_uint_fast64_t + +#define __NEED_intptr_t +#define __NEED_uintptr_t +#define __NEED_intmax_t +#define __NEED_uintmax_t + +#include <bits/alltypes.h> + +#if !defined __cplusplus || defined __STDC_LIMIT_MACROS + +#define INT8_MIN   (-1-0x7f) +#define INT16_MIN  (-1-0x7fff) +#define INT32_MIN  (-1-0x7fffffff) +#define INT64_MIN  (-1-0x7fffffffffffffffLL) + +#define INT8_MAX   (0x7f) +#define INT16_MAX  (0x7fff) +#define INT32_MAX  (0x7fffffff) +#define INT64_MAX  (0x7fffffffffffffffLL) + +#define UINT8_MAX  (0xff) +#define UINT16_MAX (0xffff) +#define UINT32_MAX (0xffffffff) +#define UINT64_MAX (0xffffffffffffffffULL) + +#define INT_LEAST8_MIN   INT8_MIN +#define INT_LEAST16_MIN  INT16_MIN +#define INT_LEAST32_MIN  INT32_MIN +#define INT_LEAST64_MIN  INT64_MIN + +#define INT_LEAST8_MAX   INT8_MAX +#define INT_LEAST16_MAX  INT16_MAX +#define INT_LEAST32_MAX  INT32_MAX +#define INT_LEAST64_MAX  INT64_MAX + +#define UINT_LEAST8_MAX  UINT8_MAX +#define UINT_LEAST16_MAX UINT16_MAX +#define UINT_LEAST32_MAX UINT32_MAX +#define UINT_LEAST64_MAX UINT64_MAX + +#undef WCHAR_MIN +#undef WCHAR_MAX +#undef WINT_MIN +#undef WINT_MAX +#define WCHAR_MIN INT32_MIN +#define WCHAR_MAX INT32_MAX +#define WINT_MIN INT32_MIN +#define WINT_MAX INT32_MAX + +#define INTMAX_MIN  INT64_MIN +#define INTMAX_MAX  INT64_MAX +#define UINTMAX_MAX UINT64_MAX + +#include <bits/stdint.h> + +#endif + +#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS + +#define INT8_C(c)  c +#define INT16_C(c) c +#define INT32_C(c) c +#define INT64_C(c) c ## LL + +#define UINT8_C(c)  c ## U +#define UINT16_C(c) c ## U +#define UINT32_C(c) c ## U +#define UINT64_C(c) c ## ULL + +#define INTMAX_C(c)  c ## LL +#define UINTMAX_C(c) c ## ULL + +#endif + +#endif diff --git a/include/stdio.h b/include/stdio.h new file mode 100644 index 00000000..b00436d9 --- /dev/null +++ b/include/stdio.h @@ -0,0 +1,144 @@ +#ifndef _STDIO_H +#define _STDIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_FILE +#define __NEED_va_list +#define __NEED_size_t +#define __NEED_ssize_t +#define __NEED_off_t + +#include <bits/alltypes.h> + +#undef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void*)0) +#endif + +#undef EOF +#define EOF (-1) + +#undef SEEK_SET +#undef SEEK_CUR +#undef SEEK_END +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 + +#define _IOFBF 0 +#define _IOLBF 1 +#define _IONBF 2 + +#include <bits/stdio.h> + +typedef union { +	char __opaque[16]; +	double __align; +} fpos_t; + +extern FILE *const stdin; +extern FILE *const stdout; +extern FILE *const stderr; + +#define stdin  (stdin) +#define stdout (stdout) +#define stderr (stderr) + +FILE *fopen(const char *, const char *); +FILE *fdopen(int, const char *); +FILE *freopen(const char *, const char *, FILE *); +int fclose(FILE *); + +FILE *popen(const char *, const char *); +int pclose(FILE *); + +int remove(const char *); +int rename(const char *, const char *); + +int fileno(FILE *); +int feof(FILE *); +int ferror(FILE *); +int fflush(FILE *); +void clearerr(FILE *); + +int fseek(FILE *, long, int); +int fseeko(FILE *, off_t, int); +long ftell(FILE *); +off_t ftello(FILE *); +void rewind(FILE *); + +int fgetpos(FILE *, fpos_t *); +int fsetpos(FILE *, const fpos_t *); + +size_t fread(void *, size_t, size_t, FILE *); +size_t fwrite(const void *, size_t, size_t, FILE *); + +int fgetc(FILE *); +int getc(FILE *); +int getchar(void); +int ungetc(int, FILE *); + +int fputc(int, FILE *); +int putc(int, FILE *); +int putchar(int); + +char *fgets(char *, int, FILE *); +char *gets(char *); + +int fputs(const char *, FILE *); +int puts(const char *); + +int printf(const char *, ...); +int fprintf(FILE *, const char *, ...); +int sprintf(char *, const char *, ...); +int snprintf(char *, size_t, const char *, ...); + +int vprintf(const char *, va_list); +int vfprintf(FILE *, const char *, va_list); +int vsprintf(char *, const char *, va_list); +int vsnprintf(char *, size_t, const char *, va_list); + +int dprintf(int, const char *, ...); +int vdprintf(int, const char *, va_list); + +int scanf(const char *, ...); +int fscanf(FILE *, const char *, ...); +int sscanf(const char *, const char *, ...); +int vscanf(const char *, va_list); +int vfscanf(FILE *, const char *, va_list); +int vsscanf(const char *, const char *, va_list); + +void perror(const char *); + +void flockfile(FILE *); +int ftrylockfile(FILE *); +void funlockfile(FILE *); +int getc_unlocked(FILE *); +int getchar_unlocked(void); +int putc_unlocked(int, FILE *); +int putchar_unlocked(int); + +int setvbuf(FILE *, char *, int, size_t); +void setbuf(FILE *, char *); + +char *tmpnam(char *); +char *tempnam(const char *, const char *); +FILE *tmpfile(void); + +char *ctermid(char *); + +ssize_t getdelim(char **, size_t *, int, FILE *); +ssize_t getline(char **, size_t *, FILE *); + +int renameat(int, const char *, int, const char *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/stdlib.h b/include/stdlib.h new file mode 100644 index 00000000..6dbbc9cb --- /dev/null +++ b/include/stdlib.h @@ -0,0 +1,129 @@ +#ifndef _STDLIB_H +#define _STDLIB_H + +#ifdef __cplusplus +extern "C" { +#endif + +#undef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void*)0) +#endif + +#define __NEED_size_t +#define __NEED_wchar_t + +#include <bits/alltypes.h> + +int atoi (const char *); +long atol (const char *); +long long atoll (const char *); +double atof (const char *); + +float strtof (const char *, char **); +double strtod (const char *, char **); +long double strtold (const char *, char **); + +long strtol (const char *, char **, int); +unsigned long strtoul (const char *, char **, int); + +long long strtoll (const char *, char **, int); +unsigned long long strtoull (const char *, char **, int); + +char *l64a (long); +long a64l (const char *); + +long int random (void); +void srandom (unsigned int); +char *initstate (unsigned int, char *, size_t); +char *setstate (char *); + +int rand (void); +void srand (unsigned); +int rand_r (unsigned *); + +double drand48 (void); +double erand48 (unsigned short [3]); +long int lrand48 (void); +long int nrand48 (unsigned short [3]); +long mrand48 (void); +long jrand48 (unsigned short [3]); +void srand48 (long); +unsigned short *seed48 (unsigned short [3]); +void lcong48 (unsigned short [7]); + +void *malloc (size_t); +void *calloc (size_t, size_t); +void *realloc (void *, size_t); +void free (void *); +void *valloc (size_t); +int posix_memalign (void **, size_t, size_t); + +void abort (void); +int atexit (void (*) (void)); +void exit (int); +void _Exit (int); + + +char *getenv (const char *); +int putenv (char *); +int setenv (const char *, const char *, int); +int unsetenv (const char *); + + +char *mktemp (char *); +int mkstemp (char *); + +int system (const char *); + + +char *realpath (const char *, char *); + +void *bsearch (const void *, const void *, size_t, size_t, int (*)(const void *, const void *)); +void qsort (void *, size_t, size_t, int (*)(const void *, const void *)); + +int abs (int); +long labs (long); +long long llabs (long long); + +typedef struct { int quot, rem; } div_t; +extern div_t div (int, int); + +typedef struct { long quot, rem; } ldiv_t; +ldiv_t ldiv (long, long); + +typedef struct { long long quot, rem; } lldiv_t; +lldiv_t lldiv (long long, long long); + + +int mblen (const char *, size_t); +int mbtowc (wchar_t *, const char *, size_t); +int wctomb (char *, wchar_t); +size_t mbstowcs (wchar_t *, const char *, size_t); +size_t wcstombs (char *, const wchar_t *, size_t); + +int getsubopt (char **, char *const *, char **); + +void setkey (const char *); + +int posix_openpt (int); +int grantpt (int); +int unlockpt (int); +char *ptsname (int); + +#define MB_CUR_MAX 4 + +#define RAND_MAX (0x7fffffff) + +#define EXIT_FAILURE 1 +#define EXIT_SUCCESS 0 + +#include <bits/wexitstatus.h> + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/string.h b/include/string.h new file mode 100644 index 00000000..f189c082 --- /dev/null +++ b/include/string.h @@ -0,0 +1,72 @@ +#ifndef	_STRING_H +#define	_STRING_H + +#ifdef __cplusplus +extern "C" { +#endif + +#undef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void*)0) +#endif + +#define __NEED_size_t +#include <bits/alltypes.h> + +void *memcpy (void *, const void *, size_t); +void *memmove (void *, const void *, size_t); +void *memccpy (void *, const void *, int, size_t); +void *memset (void *, int, size_t); +int memcmp (const void *, const void *, size_t); +void *memchr (const void *, int, size_t); + +char *strcpy (char *, const char *); +char *strncpy (char *, const char *, size_t); + +char *strcat (char *, const char *); +char *strncat (char *, const char *, size_t); + +int strcmp (const char *, const char *); +int strncmp (const char *, const char *, size_t); + +int strcoll (const char *, const char *); +size_t strxfrm (char *, const char *, size_t); + +char *strdup (const char *); + +char *strchr (const char *, int); +char *strrchr (const char *, int); + +size_t strcspn (const char *, const char *); +size_t strspn (const char *, const char *); +char *strpbrk (const char *, const char *); +char *strstr (const char *, const char *); + +char *strtok (char *, const char *); +char *strtok_r (char *, const char *, char **); + +size_t strlen (const char *); + +char *strerror (int); +int strerror_r (int, char *, size_t); + +size_t strlcat (char *, const char *, size_t); +size_t strlcpy (char *, const char *, size_t); + +char *stpcpy(char *, const char *); +char *stpncpy(char *, const char *, size_t); +size_t strnlen (const char *, size_t); + +#ifdef _GNU_SOURCE +int strcasecmp (const char *, const char *); +int strncasecmp (const char *, const char *, size_t); +char *strchrnul(const char *, int); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/strings.h b/include/strings.h new file mode 100644 index 00000000..059e3309 --- /dev/null +++ b/include/strings.h @@ -0,0 +1,36 @@ +#ifndef	_STRINGS_H +#define	_STRINGS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#undef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void*)0) +#endif + + +#define __NEED_size_t +#include <bits/alltypes.h> + + +int bcmp (const void *, const void *, size_t); +void bcopy (const void *, void *, size_t); +void bzero (void *, size_t); + +int ffs (int); + +char *index (const char *, int); +char *rindex (const char *, int); + +int strcasecmp (const char *, const char *); +int strncasecmp (const char *, const char *, size_t); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/stropts.h b/include/stropts.h new file mode 100644 index 00000000..80776ba6 --- /dev/null +++ b/include/stropts.h @@ -0,0 +1,16 @@ +#ifndef _STROPTS_H +#define _STROPTS_H + +#ifdef __cplusplus +extern "C" { +#endif + +// FIXME + +int ioctl (int, int, ...); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/sys/epoll.h b/include/sys/epoll.h new file mode 100644 index 00000000..3530a9ac --- /dev/null +++ b/include/sys/epoll.h @@ -0,0 +1,61 @@ +#ifndef	_SYS_EPOLL_H +#define	_SYS_EPOLL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> +#include <sys/types.h> + +#define __NEED_sigset_t + +#include <bits/alltypes.h> + +#define EPOLL_CLOEXEC 02000000 +#define EPOLL_NONBLOCK 04000 + +enum EPOLL_EVENTS { __EPOLL_DUMMY }; +#define EPOLLIN 0x001 +#define EPOLLPRI 0x002 +#define EPOLLOUT 0x004 +#define EPOLLRDNORM 0x040 +#define EPOLLRDBAND 0x080 +#define EPOLLWRNORM 0x100 +#define EPOLLWRBAND 0x200 +#define EPOLLMSG 0x400 +#define EPOLLERR 0x008 +#define EPOLLHUP 0x010 +#define EPOLLRDHUP 0x2000 +#define EPOLLONESHOT (1U<<30) +#define EPOLLET (1U<<31) + +#define EPOLL_CTL_ADD 1 +#define EPOLL_CTL_DEL 2 +#define EPOLL_CTL_MOD 3 + +typedef union epoll_data { +	void *ptr; +	int fd; +	uint32_t u32; +	uint64_t u64; +} epoll_data_t; + +struct epoll_event { +	uint32_t events; +	epoll_data_t data; +} __attribute__ ((__packed__)); + + +int epoll_create(int); +int epoll_create1(int); +int epoll_ctl(int, int, int, struct epoll_event *); +int epoll_wait(int, struct epoll_event *, int, int); +int epoll_pwait(int, struct epoll_event *, int, int, const sigset_t *); + + +#ifdef __cplusplus +} +#endif + +#endif /* sys/epoll.h */ diff --git a/include/sys/file.h b/include/sys/file.h new file mode 100644 index 00000000..8b2eb01a --- /dev/null +++ b/include/sys/file.h @@ -0,0 +1,21 @@ +#ifndef _SYS_FILE_H +#define _SYS_FILE_H +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#define LOCK_SH	1 +#define LOCK_EX	2 +#define LOCK_NB	4 +#define LOCK_UN	8 + +extern int flock(int, int); + +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/sys/ioctl.h b/include/sys/ioctl.h new file mode 100644 index 00000000..d0415b3d --- /dev/null +++ b/include/sys/ioctl.h @@ -0,0 +1,14 @@ +#ifndef	_SYS_IOCTL_H +#define	_SYS_IOCTL_H +#ifdef __cplusplus +extern "C" { +#endif + +#include <bits/ioctl.h> + +int ioctl (int, int, ...); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/sys/ipc.h b/include/sys/ipc.h new file mode 100644 index 00000000..9de9f3e7 --- /dev/null +++ b/include/sys/ipc.h @@ -0,0 +1,23 @@ +#ifndef _SYS_IPC_H +#define _SYS_IPC_H +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_uid_t +#define __NEED_gid_t +#define __NEED_mode_t +#define __NEED_key_t + +#include <bits/alltypes.h> + +#include <bits/ipc.h> + +key_t ftok (const char *, int); + +#ifdef __cplusplus +} +#endif +#endif + + diff --git a/include/sys/kd.h b/include/sys/kd.h new file mode 100644 index 00000000..793fd59f --- /dev/null +++ b/include/sys/kd.h @@ -0,0 +1,8 @@ +#ifndef _SYS_KD_H +#define _SYS_KD_H + +#define _LINUX_TYPES_H +#include <linux/kd.h> +#undef _LINUX_TYPES_H + +#endif diff --git a/include/sys/klog.h b/include/sys/klog.h new file mode 100644 index 00000000..aa66684e --- /dev/null +++ b/include/sys/klog.h @@ -0,0 +1,14 @@ +#ifndef	_SYS_KLOG_H +#define	_SYS_KLOG_H + +#ifdef __cplusplus +extern "C" { +#endif + +int klogctl (int, char *, int); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/sys/mman.h b/include/sys/mman.h new file mode 100644 index 00000000..6aede8bd --- /dev/null +++ b/include/sys/mman.h @@ -0,0 +1,37 @@ +#ifndef	_SYS_MMAN_H +#define	_SYS_MMAN_H +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_mode_t +#define __NEED_size_t +#define __NEED_off_t + +#include <bits/alltypes.h> + +#include <bits/mman.h> + +void *mmap (void *, size_t, int, int, int, off_t); +int munmap (void *, size_t); + +int mprotect (void *, size_t, int); +int msync (void *, size_t, int); + +int posix_madvise (void *, size_t, int); + +int mlock (const void *, size_t); +int munlock (const void *, size_t); +int mlockall (int); +int munlockall (void); + +/* linux extension */ +void *mremap (void *, size_t, size_t, int, ...); + +int shm_open (const char *, int, mode_t); +int shm_unlink (const char *); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/sys/mount.h b/include/sys/mount.h new file mode 100644 index 00000000..2c685f67 --- /dev/null +++ b/include/sys/mount.h @@ -0,0 +1,28 @@ +#ifndef _SYS_MOUNT_H +#define _SYS_MOUNT_H + +#define MS_RDONLY      1 +#define MS_NOSUID      2 +#define MS_NODEV       4 +#define MS_NOEXEC      8 +#define MS_SYNCHRONOUS 16 +#define MS_REMOUNT     32 +#define MS_MANDLOCK    64 +#define S_WRITE        128 +#define S_APPEND       256 +#define S_IMMUTABLE    512 +#define MS_NOATIME     1024 +#define MS_NODIRATIME  2048 +#define MS_BIND        4096 +#define MS_MOVE        8192 +#define MS_SILENT      32768 + +#define MS_MGC_VAL 0xc0ed0000 + +#define MNT_FORCE 1 + +int mount(const char *, const char *, const char *, unsigned long, const void *); +int umount(const char *); +int umount2(const char *, int); + +#endif diff --git a/include/sys/msg.h b/include/sys/msg.h new file mode 100644 index 00000000..9fc42bcd --- /dev/null +++ b/include/sys/msg.h @@ -0,0 +1,36 @@ +#ifndef _SYS_MSG_H +#define _SYS_MSG_H + +#include <sys/ipc.h> + +#define __NEED_pid_t +#define __NEED_key_t +#define __NEED_time_t +#define __NEED_size_t +#define __NEED_ssize_t + +#include <bits/alltypes.h> + +typedef unsigned long msgqnum_t; +typedef unsigned long msglen_t; + +struct msqid_ds +{ +	struct ipc_perm msg_perm; +	time_t msg_stime; +	time_t msg_rtime; +	time_t msg_ctime; +	msgqnum_t msg_qnum; +	msglen_t msg_qbytes; +	pid_t msg_lspid; +	pid_t msd_lrpid; +}; + +#define MSG_NOERROR 010000 + +int msgctl (int, int, struct msqid_ds *); +int msgget (key_t, int); +int msgrcv (int, void *, size_t, long, int); +int msgsnd (int, const void *, size_t, int); + +#endif diff --git a/include/sys/param.h b/include/sys/param.h new file mode 100644 index 00000000..ded4a16b --- /dev/null +++ b/include/sys/param.h @@ -0,0 +1,15 @@ +#undef MAXSYMLINKS +#define MAXSYMLINKS 20 + +#undef MAXHOSTNAMELEN +#define MAXHOSTNAMELEN 64 + +#undef MAXNAMLEN +#define MAXNAMLEN NAME_MAX + +#undef MAXPATHLEN +#define MAXPATHLEN PATH_MAX + +#include <sys/resource.h> +#include <endian.h> +#include <limits.h> diff --git a/include/sys/poll.h b/include/sys/poll.h new file mode 100644 index 00000000..779ec774 --- /dev/null +++ b/include/sys/poll.h @@ -0,0 +1 @@ +#include <poll.h> diff --git a/include/sys/prctl.h b/include/sys/prctl.h new file mode 100644 index 00000000..cd34848a --- /dev/null +++ b/include/sys/prctl.h @@ -0,0 +1,64 @@ +#ifndef _SYS_PRCTL_H +#define _SYS_PRCTL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define PR_SET_PDEATHSIG  1 +#define PR_GET_PDEATHSIG  2 +#define PR_GET_DUMPABLE   3 +#define PR_SET_DUMPABLE   4 +#define PR_GET_UNALIGN   5 +#define PR_SET_UNALIGN   6 +#define PR_UNALIGN_NOPRINT 1 +#define PR_UNALIGN_SIGBUS 2 +#define PR_GET_KEEPCAPS   7 +#define PR_SET_KEEPCAPS   8 +#define PR_GET_FPEMU  9 +#define PR_SET_FPEMU 10 +#define PR_FPEMU_NOPRINT 1 +#define PR_FPEMU_SIGFPE 2 +#define PR_GET_FPEXC 11 +#define PR_SET_FPEXC 12 +#define PR_FP_EXC_SW_ENABLE 0x80 +#define PR_FP_EXC_DIV  0x010000 +#define PR_FP_EXC_OVF  0x020000 +#define PR_FP_EXC_UND  0x040000 +#define PR_FP_EXC_RES  0x080000 +#define PR_FP_EXC_INV  0x100000 +#define PR_FP_EXC_DISABLED 0 +#define PR_FP_EXC_NONRECOV 1 +#define PR_FP_EXC_ASYNC 2 +#define PR_FP_EXC_PRECISE 3 +#define PR_GET_TIMING   13 +#define PR_SET_TIMING   14 +#define PR_TIMING_STATISTICAL  0 +#define PR_TIMING_TIMESTAMP    1 +#define PR_SET_NAME    15 +#define PR_GET_NAME    16 +#define PR_GET_ENDIAN 19 +#define PR_SET_ENDIAN 20 +#define PR_ENDIAN_BIG +#define PR_ENDIAN_LITTLE +#define PR_ENDIAN_PPC_LITTLE +#define PR_GET_SECCOMP 21 +#define PR_SET_SECCOMP 22 +#define PR_CAPBSET_READ 23 +#define PR_CAPBSET_DROP 24 +#define PR_GET_TSC 25 +#define PR_SET_TSC 26 +#define PR_TSC_ENABLE 1 +#define PR_TSC_SIGSEGV 2 +#define PR_GET_SECUREBITS 27 +#define PR_SET_SECUREBITS 28 +#define PR_SET_TIMERSLACK 29 +#define PR_GET_TIMERSLACK 30 + +int prctl (int, ...); + +#ifdef __cplusplus +extern "C" { +#endif + +#endif diff --git a/include/sys/procfs.h b/include/sys/procfs.h new file mode 100644 index 00000000..20b4847c --- /dev/null +++ b/include/sys/procfs.h @@ -0,0 +1,81 @@ +#ifndef _SYS_PROCFS_H +#define _SYS_PROCFS_H +#ifdef __cplusplus +extern "C" { +#endif + +#include <sys/time.h> +#include <sys/types.h> +#include <sys/user.h> + +typedef unsigned long elf_greg_t; +#define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof(elf_greg_t)) +typedef elf_greg_t elf_gregset_t[ELF_NGREG]; + +#if __WORDSIZE == 32 +typedef struct user_fpregs_struct elf_fpregset_t; +typedef struct user_fpxregs_struct elf_fpxregset_t; +#else +typedef struct user_fpregs_struct elf_fpregset_t; +#endif + +struct elf_siginfo { +	int si_signo; +	int si_code; +	int si_errno; +}; + +struct elf_prstatus { +	struct elf_siginfo pr_info; +	short int pr_cursig; +	unsigned long int pr_sigpend; +	unsigned long int pr_sighold; +	pid_t pr_pid; +	pid_t pr_ppid; +	pid_t pr_pgrp; +	pid_t pr_sid; +	struct timeval pr_utime; +	struct timeval pr_stime; +	struct timeval pr_cutime; +	struct timeval pr_cstime; +	elf_gregset_t pr_reg; +	int pr_fpvalid; +}; + + +#define ELF_PRARGSZ 80 + +struct elf_prpsinfo +	{ +	char pr_state; +	char pr_sname; +	char pr_zomb; +	char pr_nice; +	unsigned long int pr_flag; +#if __WORDSIZE == 32 +	unsigned short int pr_uid; +	unsigned short int pr_gid; +#else +	unsigned int pr_uid; +	unsigned int pr_gid; +#endif +	int pr_pid, pr_ppid, pr_pgrp, pr_sid; +	char pr_fname[16]; +	char pr_psargs[ELF_PRARGSZ]; +}; + + +typedef void *psaddr_t; +typedef elf_gregset_t prgregset_t; +typedef elf_fpregset_t prfpregset_t; +typedef pid_t lwpid_t; +typedef struct elf_prstatus prstatus_t; +typedef struct elf_prpsinfo prpsinfo_t; + + + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/sys/ptrace.h b/include/sys/ptrace.h new file mode 100644 index 00000000..0459d1b6 --- /dev/null +++ b/include/sys/ptrace.h @@ -0,0 +1,77 @@ +#ifndef _SYS_PTRACE_H +#define _SYS_PTRACE_H +#ifdef __cplusplus +extern "C" { +#endif + +#define PTRACE_TRACEME 0 +#define PT_TRACE_ME PTRACE_TRACEME + +#define PTRACE_PEEKTEXT 1 +#define PTRACE_PEEKDATA 2 +#define PTRACE_PEEKUSER 3 +#define PTRACE_POKETEXT 4 +#define PTRACE_POKEDATA 5 +#define PTRACE_POKEUSER 6 +#define PTRACE_CONT 7 +#define PTRACE_KILL 8 +#define PTRACE_SINGLESTEP 9 +#define PTRACE_GETREGS 12 +#define PTRACE_SETREGS 13 +#define PTRACE_GETFPREGS 14 +#define PTRACE_SETFPREGS 15 +#define PTRACE_ATTACH 16 +#define PTRACE_DETACH 17 +#define PTRACE_GETFPXREGS 18 +#define PTRACE_SETFPXREGS 19 +#define PTRACE_SYSCALL 24 +#define PTRACE_SETOPTIONS 0x4200 +#define PTRACE_GETEVENTMSG 0x4201 +#define PTRACE_GETSIGINFO 0x4202 +#define PTRACE_SETSIGINFO 0x4203 + +#define PT_READ_I PTRACE_PEEKTEXT +#define PT_READ_D PTRACE_PEEKDATA +#define PT_READ_U PTRACE_PEEKUSER +#define PT_WRITE_I PTRACE_POKETEXT +#define PT_WRITE_D PTRACE_POKEDATA +#define PT_WRITE_U PTRACE_POKEUSER +#define PT_CONTINUE PTRACE_CONT +#define PT_KILL PTRACE_KILL +#define PT_STEP PTRACE_SINGLESTEP +#define PT_GETREGS PTRACE_GETREGS +#define PT_SETREGS PTRACE_SETREGS +#define PT_GETFPREGS PTRACE_GETFPREGS +#define PT_SETFPREGS PTRACE_SETFPREGS +#define PT_ATTACH PTRACE_ATTACH +#define PT_DETACH PTRACE_DETACH +#define PT_GETFPXREGS PTRACE_GETFPXREGS +#define PT_SETFPXREGS PTRACE_SETFPXREGS +#define PT_SYSCALL PTRACE_SYSCALL +#define PT_SETOPTIONS PTRACE_SETOPTIONS +#define PT_GETEVENTMSG PTRACE_GETEVENTMSG +#define PT_GETSIGINFO PTRACE_GETSIGINFO +#define PT_SETSIGINFO PTRACE_SETSIGINFO + +#define PTRACE_O_TRACESYSGOOD   0x00000001 +#define PTRACE_O_TRACEFORK      0x00000002 +#define PTRACE_O_TRACEVFORK     0x00000004 +#define PTRACE_O_TRACECLONE     0x00000008 +#define PTRACE_O_TRACEEXEC      0x00000010 +#define PTRACE_O_TRACEVFORKDONE 0x00000020 +#define PTRACE_O_TRACEEXIT      0x00000040 +#define PTRACE_O_MASK           0x0000007f + +#define PTRACE_EVENT_FORK 1 +#define PTRACE_EVENT_VFORK 2 +#define PTRACE_EVENT_CLONE 3 +#define PTRACE_EVENT_EXEC 4 +#define PTRACE_EVENT_VFORK_DONE 5 +#define PTRACE_EVENT_EXIT 6 + +long int ptrace(int, ...); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/sys/reboot.h b/include/sys/reboot.h new file mode 100644 index 00000000..26cc3088 --- /dev/null +++ b/include/sys/reboot.h @@ -0,0 +1,18 @@ +#ifndef _SYS_REBOOT_H +#define _SYS_REBOOT_H +#ifdef __cplusplus +extern "C" { +#endif + +#define RB_AUTOBOOT     0x01234567 +#define RB_HALT_SYSTEM  0xcdef0123 +#define RB_ENABLE_CAD   0x89abcdef +#define RB_DISABLE_CAD  0 +#define RB_POWER_OFF    0x4321fedc + +int reboot(int); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/sys/reg.h b/include/sys/reg.h new file mode 100644 index 00000000..ebf3fff4 --- /dev/null +++ b/include/sys/reg.h @@ -0,0 +1,9 @@ +#ifndef _SYS_USER_H +#define _SYS_USER_H + +#include <limits.h> +#include <unistd.h> + +#include <bits/reg.h> + +#endif diff --git a/include/sys/resource.h b/include/sys/resource.h new file mode 100644 index 00000000..99e383c4 --- /dev/null +++ b/include/sys/resource.h @@ -0,0 +1,74 @@ +#ifndef	_SYS_RESOURCE_H +#define	_SYS_RESOURCE_H + +#define __NEED_id_t +#define __NEED_time_t +#define __NEED_struct_timeval +#define __NEED_struct_rusage + +#include <bits/alltypes.h> + +typedef unsigned long long rlim_t; + +struct rlimit +{ +	rlim_t rlim_cur; +	rlim_t rlim_max; +}; + +struct rusage +{ +	struct timeval ru_utime; +	struct timeval ru_stime; +	/* linux extentions, but useful */ +	long	ru_maxrss; +	long	ru_ixrss; +	long	ru_idrss; +	long	ru_isrss; +	long	ru_minflt; +	long	ru_majflt; +	long	ru_nswap; +	long	ru_inblock; +	long	ru_oublock; +	long	ru_msgsnd; +	long	ru_msgrcv; +	long	ru_nsignals; +	long	ru_nvcsw; +	long	ru_nivcsw; +	/* room for more... */ +	long    __reserved[16]; +}; + +int getrlimit (int, struct rlimit *); +int setrlimit (int, const struct rlimit *); +int getrusage (int, struct rusage *); + +int getpriority (int, id_t); +int setpriority (int, id_t, int); + +#define PRIO_PROCESS 0 +#define PRIO_PGRP    1 +#define PRIO_USER    2 + +#define RUSAGE_SELF     0 +#define RUSAGE_CHILDREN 1 + +#define RLIM_INFINITY (~0ULL) +#define RLIM_SAVED_CUR RLIM_INFINITY +#define RLIM_SAVED_MAX RLIM_INFINITY + +#define RLIMIT_CPU     0 +#define RLIMIT_FSIZE   1 +#define RLIMIT_DATA    2 +#define RLIMIT_STACK   3 +#define RLIMIT_CORE    4 +#define RLIMIT_RSS     5 +#define RLIMIT_NOFILE  7 +#define RLIMIT_AS      9 +#define RLIMIT_NPROC   6 +#define RLIMIT_MEMLOCK 8 +#define RLIMIT_LOCKS   10 + + + +#endif diff --git a/include/sys/select.h b/include/sys/select.h new file mode 100644 index 00000000..c44eada4 --- /dev/null +++ b/include/sys/select.h @@ -0,0 +1,34 @@ +#ifndef _SYS_SELECT_H +#define _SYS_SELECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_size_t +#define __NEED_time_t +#define __NEED_struct_timeval +#define __NEED_struct_timespec +#define __NEED_sigset_t + +#include <bits/alltypes.h> + +#define FD_SETSIZE 1024 + +typedef struct +{ +	unsigned long fds_bits[FD_SETSIZE / 8 / sizeof(long)]; +} fd_set; + +#define FD_ZERO(s) do { int __i; unsigned long *__b=(s)->fds_bits; for(__i=sizeof (fd_set)/sizeof (long); __i; __i--) *__b++=0; } while(0) +#define FD_SET(d, s)   ((s)->fds_bits[(d)/(8*sizeof(long))] |= (1<<((d)%(8*sizeof(long))))) +#define FD_CLR(d, s)   ((s)->fds_bits[(d)/(8*sizeof(long))] &= ~(1<<((d)%(8*sizeof(long))))) +#define FD_ISSET(d, s) ((s)->fds_bits[(d)/(8*sizeof(long))] & (1<<((d)%(8*sizeof(long))))) + +int select (int, fd_set *, fd_set *, fd_set *, struct timeval *); +int pselect (int, fd_set *, fd_set *, fd_set *, const struct timespec *, const sigset_t *); + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/sys/sem.h b/include/sys/sem.h new file mode 100644 index 00000000..15d8b685 --- /dev/null +++ b/include/sys/sem.h @@ -0,0 +1,69 @@ +#ifndef _SYS_SEM_H +#define _SYS_SEM_H +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_size_t +#include <bits/alltypes.h> + +#include <sys/ipc.h> + +#define SEM_UNDO	0x1000 +#define GETPID		11 +#define GETVAL		12 +#define GETALL		13 +#define GETNCNT		14 +#define GETZCNT		15 +#define SETVAL		16 +#define SETALL		17 + +struct semid_ds { +	struct ipc_perm sem_perm; +	long sem_otime; +	unsigned long __unused1; +	long sem_ctime; +	unsigned long __unused2; +	unsigned long sem_nsems; +	unsigned long __unused3; +	unsigned long __unused4; +}; + +#define _SEM_SEMUN_UNDEFINED 1 + +#define SEM_STAT 18 +#define SEM_INFO 19 + +struct  seminfo { +	int semmap; +	int semmni; +	int semmns; +	int semmnu; +	int semmsl; +	int semopm; +	int semume; +	int semusz; +	int semvmx; +	int semaem; +}; + +struct sembuf { +	unsigned short sem_num; +	short sem_op; +	short sem_flg; +}; + +int semctl(int, int, int, ...); +int semget(key_t, int, int); +int semop(int, struct sembuf *, size_t); + +#ifdef _GNU_SOURCE +#define __NEED_struct_timespec +#include <bits/alltypes.h> +int semtimedop(int, struct sembuf *, size_t, const struct timespec *); +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/sys/shm.h b/include/sys/shm.h new file mode 100644 index 00000000..6ebb9412 --- /dev/null +++ b/include/sys/shm.h @@ -0,0 +1,18 @@ +#ifndef _SYS_SHM_H +#define _SYS_SHM_H + +#define __NEED_time_t +#define __NEED_size_t +#define __NEED_pid_t + +#include <bits/alltypes.h> + +#include <sys/ipc.h> +#include <bits/shm.h> + +void *shmat(int, const void *, int); +int shmctl(int, int, struct shmid_ds *); +int shmdt(const void *); +int shmget(key_t, size_t, int); + +#endif diff --git a/include/sys/signalfd.h b/include/sys/signalfd.h new file mode 100644 index 00000000..895664bf --- /dev/null +++ b/include/sys/signalfd.h @@ -0,0 +1,40 @@ +#ifndef _SYS_SIGNALFD_H +#define _SYS_SIGNALFD_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> + +#define __NEED_sigset_t + +#include <bits/alltypes.h> + +int signalfd(int, const sigset_t *, int); + +struct signalfd_siginfo { +	uint32_t  ssi_signo; +	int32_t   ssi_errno; +	int32_t   ssi_code; +	uint32_t  ssi_pid; +	uint32_t  ssi_uid; +	int32_t   ssi_fd; +	uint32_t  ssi_tid; +	uint32_t  ssi_band; +	uint32_t  ssi_overrun; +	uint32_t  ssi_trapno; +	int32_t   ssi_status; +	int32_t   ssi_int; +	uintptr_t ssi_ptr; +	uint64_t  ssi_utime; +	uint64_t  ssi_stime; +	uint64_t  ssi_addr; +	uint8_t   pad[128-12*4-sizeof(void *)-3*8]; +}; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/sys/socket.h b/include/sys/socket.h new file mode 100644 index 00000000..78c93056 --- /dev/null +++ b/include/sys/socket.h @@ -0,0 +1,64 @@ +#ifndef	_SYS_SOCKET_H +#define	_SYS_SOCKET_H +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_socklen_t +#define __NEED_sa_family_t +#define __NEED_size_t +#define __NEED_ssize_t +#define __NEED_uid_t +#define __NEED_pid_t +#define __NEED_gid_t + +#include <bits/alltypes.h> + +#include <bits/socket.h> + +struct sockaddr +{ +	sa_family_t sa_family; +	char sa_data[14]; +}; + +struct sockaddr_storage +{ +	sa_family_t ss_family; +	long long __ss_align; +	char __ss_padding[128 - sizeof(sa_family_t) - sizeof(long long)]; +}; + +int socket (int, int, int); +int socketpair (int, int, int, int [2]); + +int shutdown (int, int); + +int bind (int, const struct sockaddr *, socklen_t); +int connect (int, const struct sockaddr *, socklen_t); +int listen (int, int); +int accept (int, struct sockaddr *, socklen_t *); + +int getsockname (int, struct sockaddr *, socklen_t *); +int getpeername (int, struct sockaddr *, socklen_t *); + +ssize_t send (int, const void *, size_t, int); +ssize_t recv (int, void *, size_t, int); +ssize_t sendto (int, const void *, size_t, int, const struct sockaddr *, socklen_t); +ssize_t recvfrom (int, void *, size_t, int, struct sockaddr *, socklen_t *); +ssize_t sendmsg (int, const struct msghdr *, int); +ssize_t recvmsg (int, struct msghdr *, int); + +int getsockopt (int, int, int, void *, socklen_t *); +int setsockopt (int, int, int, const void *, socklen_t); + +int sockatmark (int); + +#define SHUT_RD 0 +#define SHUT_WR 1 +#define SHUT_RDWR 2 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/sys/soundcard.h b/include/sys/soundcard.h new file mode 100644 index 00000000..fade986f --- /dev/null +++ b/include/sys/soundcard.h @@ -0,0 +1 @@ +#include <linux/soundcard.h> diff --git a/include/sys/stat.h b/include/sys/stat.h new file mode 100644 index 00000000..36575b0e --- /dev/null +++ b/include/sys/stat.h @@ -0,0 +1,90 @@ +#ifndef	_SYS_STAT_H +#define	_SYS_STAT_H +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_dev_t +#define __NEED_ino_t +#define __NEED_mode_t +#define __NEED_nlink_t +#define __NEED_uid_t +#define __NEED_gid_t +#define __NEED_off_t +#define __NEED_time_t +#define __NEED_blksize_t +#define __NEED_blkcnt_t + +#include <bits/alltypes.h> + +#include <bits/stat.h> + +#define S_IFMT  0170000 + +#define S_IFDIR 0040000 +#define S_IFCHR 0020000 +#define S_IFBLK 0060000 +#define S_IFREG 0100000 +#define S_IFIFO 0010000 +#define S_IFLNK 0120000 +#define S_IFSOCK 0140000 + +#define S_TYPEISMQ(buf)  0 +#define S_TYPEISSEM(buf) 0 +#define S_TYPEISSHM(buf) 0 +#define S_TYPEISTMO(buf) 0 + +#define S_ISDIR(mode)  (((mode) & S_IFMT) == S_IFDIR) +#define S_ISCHR(mode)  (((mode) & S_IFMT) == S_IFCHR) +#define S_ISBLK(mode)  (((mode) & S_IFMT) == S_IFBLK) +#define S_ISREG(mode)  (((mode) & S_IFMT) == S_IFREG) +#define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO) +#define S_ISLNK(mode)  (((mode) & S_IFMT) == S_IFLNK) +#define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK) + +#define S_ISUID 04000 +#define S_ISGID 02000 +#define S_ISVTX 01000 + +#define S_IREAD  0400 +#define S_IWRITE 0200 +#define S_IEXEC  0100 + +#define S_IRUSR 0400 +#define S_IWUSR 0200 +#define S_IXUSR 0100 +#define S_IRWXU 0700 + +#define S_IRGRP 0040 +#define S_IWGRP 0020 +#define S_IXGRP 0010 +#define S_IRWXG 0070 + +#define S_IROTH 0004 +#define S_IWOTH 0002 +#define S_IXOTH 0001 +#define S_IRWXO 0007 + + +int stat(const char *, struct stat *); +int fstat(int, struct stat *); +int lstat(const char *, struct stat *); +int fstatat(int, const char *, struct stat *, int); +int chmod(const char *, mode_t); +int fchmod(int, mode_t); +int fchmodat(int, const char *, mode_t, int); +mode_t umask(mode_t); +int mkdir(const char *, mode_t); +int mknod(const char *, mode_t, dev_t); +int mkfifo(const char *, mode_t); +int mkdirat(int, const char *, mode_t); +int mknodat(int, const char *, mode_t, dev_t); +int mkfifoat(int, const char *, mode_t); + + +#ifdef __cplusplus +} +#endif +#endif + + diff --git a/include/sys/statfs.h b/include/sys/statfs.h new file mode 100644 index 00000000..7eaa7e7c --- /dev/null +++ b/include/sys/statfs.h @@ -0,0 +1,10 @@ +#ifndef	_SYS_STATFS_H +#define	_SYS_STATFS_H + +#include <sys/statvfs.h> + +#define statfs statvfs +#define fstatfs fstatvfs +#define f_namelen f_namemax + +#endif diff --git a/include/sys/statvfs.h b/include/sys/statvfs.h new file mode 100644 index 00000000..6479be6f --- /dev/null +++ b/include/sys/statvfs.h @@ -0,0 +1,30 @@ +#ifndef	_SYS_STATVFS_H +#define	_SYS_STATVFS_H + + +#define __NEED_fsblkcnt_t +#define __NEED_fsfilcnt_t +#include <bits/alltypes.h> + +#include <bits/statfs.h> + +int statvfs (const char *, struct statvfs *); +int fstatvfs (int, struct statvfs *); + +#define ST_RDONLY 1 +#define ST_NOSUID 2 + +#if 0 +#define ST_NODEV  4 +#define ST_NOEXEC 8 +#define ST_SYNCHRONOUS 16 +#define ST_MANDLOCK    64 +#define ST_WRITE       128 +#define ST_APPEND      256 +#define ST_IMMUTABLE   512 +#define ST_NOATIME     1024 +#define ST_NODIRATIME  2048 +#endif + + +#endif diff --git a/include/sys/stropts.h b/include/sys/stropts.h new file mode 100644 index 00000000..5b5bc02f --- /dev/null +++ b/include/sys/stropts.h @@ -0,0 +1 @@ +#include <stropts.h> diff --git a/include/sys/swap.h b/include/sys/swap.h new file mode 100644 index 00000000..c5824f1d --- /dev/null +++ b/include/sys/swap.h @@ -0,0 +1,11 @@ +#ifndef _SYS_SWAP_H +#define _SYS_SWAP_H + +#define	SWAP_FLAG_PREFER        0x8000 +#define	SWAP_FLAG_PRIO_MASK     0x7fff +#define	SWAP_FLAG_PRIO_SHIFT    0 + +int swapon (const char *, int); +int swapoff (const char *); + +#endif diff --git a/include/sys/sysctl.h b/include/sys/sysctl.h new file mode 100644 index 00000000..af5ca8ba --- /dev/null +++ b/include/sys/sysctl.h @@ -0,0 +1,9 @@ +#ifndef	_SYS_SYSCTL_H +#define	_SYS_SYSCTL_H + +#define __NEED_size_t +#include <bits/alltypes.h> + +int sysctl (int *, int, void *, size_t *, void *, size_t); + +#endif diff --git a/include/sys/sysinfo.h b/include/sys/sysinfo.h new file mode 100644 index 00000000..ca52088a --- /dev/null +++ b/include/sys/sysinfo.h @@ -0,0 +1,29 @@ +#ifndef _SYS_SYSINFO_H +#define _SYS_SYSINFO_H + +/* ?? */ +#define SI_LOAD_SHIFT 16 + +struct sysinfo { +	unsigned long long uptime; +	unsigned long loads[3]; +	unsigned long procs; +	unsigned long long totalram; +	unsigned long long freeram; +	unsigned long long sharedram; +	unsigned long long bufferram; +	unsigned long long totalswap; +	unsigned long long freeswap; +	unsigned long long totalhigh; +	unsigned long long freehigh; +	unsigned long mem_unit; +	char __reserved[256]; +}; + +int sysinfo (struct sysinfo *); +int get_nprocs_conf (void); +int get_nprocs (void); +long long get_phys_pages (void); +long long get_avphys_pages (void); + +#endif diff --git a/include/sys/sysmacros.h b/include/sys/sysmacros.h new file mode 100644 index 00000000..79eba3be --- /dev/null +++ b/include/sys/sysmacros.h @@ -0,0 +1,6 @@ +#ifndef _SYSMACROS_H +#define _SYSMACROS_H + +#include <bits/sysmacros.h> + +#endif diff --git a/include/sys/time.h b/include/sys/time.h new file mode 100644 index 00000000..9b3bfb99 --- /dev/null +++ b/include/sys/time.h @@ -0,0 +1,49 @@ +#ifndef _SYS_TIME_H +#define _SYS_TIME_H +#ifdef __cplusplus +extern "C" { +#endif + +/* All symbols from select.h except pselect are required anyway... */ +#include <sys/select.h> + +#define __NEED_time_t +#define __NEED_suseconds_t +#define __NEED_timeval + +#include <bits/alltypes.h> + + + +int gettimeofday (struct timeval *, void *); + +/* extensions */ +int settimeofday (const struct timeval *, void *); +int adjtime (const struct timeval *, struct timeval *); + + +#define ITIMER_REAL    0 +#define ITIMER_VIRTUAL 1 +#define ITIMER_PROF    2 + +struct itimerval +{ +	struct timeval it_interval; +	struct timeval it_value; +}; + +int getitimer (int, struct itimerval *); +int setitimer (int, const struct itimerval *, struct itimerval *); +int utimes (const char *, const struct timeval [2]); + +#ifdef _GNU_SOURCE +struct timezone { +	int tz_minuteswest; +	int tz_dsttime; +}; +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/sys/times.h b/include/sys/times.h new file mode 100644 index 00000000..aca743d3 --- /dev/null +++ b/include/sys/times.h @@ -0,0 +1,17 @@ +#ifndef	_SYS_TIMES_H +#define	_SYS_TIMES_H + +#define __NEED_clock_t +#include <bits/alltypes.h> + +struct tms +{ +	clock_t tms_utime; +	clock_t tms_stime; +	clock_t tms_cutime; +	clock_t tms_cstime; +}; + +clock_t times (struct tms *); + +#endif diff --git a/include/sys/types.h b/include/sys/types.h new file mode 100644 index 00000000..8be19e6b --- /dev/null +++ b/include/sys/types.h @@ -0,0 +1,56 @@ +#ifndef	_SYS_TYPES_H +#define	_SYS_TYPES_H +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_loff_t +#define __NEED_ino_t +#define __NEED_dev_t +#define __NEED_uid_t +#define __NEED_gid_t +#define __NEED_mode_t +#define __NEED_nlink_t +#define __NEED_off_t +#define __NEED_pid_t +#define __NEED_size_t +#define __NEED_ssize_t +#define __NEED_time_t +#define __NEED_timer_t +#define __NEED_clockid_t + +#define __NEED_int8_t +#define __NEED_int16_t +#define __NEED_int32_t +#define __NEED_int64_t + +#define __NEED_u_int8_t +#define __NEED_u_int16_t +#define __NEED_u_int32_t +#define __NEED_u_int64_t + +#define __NEED_register_t + +#define __NEED_blkcnt_t +#define __NEED_fsblkcnt_t +#define __NEED_fsfilcnt_t + +#define __NEED_id_t +#define __NEED_key_t +#define __NEED_clock_t +#define __NEED_useconds_t +#define __NEED_suseconds_t +#define __NEED_blksize_t + +#include <bits/alltypes.h> + +#ifdef _GNU_SOURCE +typedef unsigned long caddr_t; +#endif + +#ifdef __cplusplus +} +#endif +#endif + + diff --git a/include/sys/ucontext.h b/include/sys/ucontext.h new file mode 100644 index 00000000..5fdbd63d --- /dev/null +++ b/include/sys/ucontext.h @@ -0,0 +1 @@ +#include <ucontext.h> diff --git a/include/sys/uio.h b/include/sys/uio.h new file mode 100644 index 00000000..7b068c0c --- /dev/null +++ b/include/sys/uio.h @@ -0,0 +1,14 @@ +#ifndef _SYS_UIO_H +#define _SYS_UIO_H + +#define __NEED_size_t +#define __NEED_ssize_t + +#include <bits/alltypes.h> + +#include <bits/uio.h> + +ssize_t readv (int, const struct iovec *, int); +ssize_t writev (int, const struct iovec *, int); + +#endif diff --git a/include/sys/un.h b/include/sys/un.h new file mode 100644 index 00000000..769dac6b --- /dev/null +++ b/include/sys/un.h @@ -0,0 +1,13 @@ +#ifndef	_SYS_UN_H +#define	_SYS_UN_H + +#define __NEED_sa_family_t +#include <bits/alltypes.h> + +struct sockaddr_un +{ +	sa_family_t sun_family; +	char sun_path[108]; +}; + +#endif diff --git a/include/sys/user.h b/include/sys/user.h new file mode 100644 index 00000000..24ac9400 --- /dev/null +++ b/include/sys/user.h @@ -0,0 +1,15 @@ +#ifndef _SYS_USER_H +#define _SYS_USER_H +#ifdef __cplusplus +extern "C" { +#endif + +#include <limits.h> +#include <unistd.h> + +#include <bits/user.h> + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/sys/utsname.h b/include/sys/utsname.h new file mode 100644 index 00000000..383e8251 --- /dev/null +++ b/include/sys/utsname.h @@ -0,0 +1,21 @@ +#ifndef	_SYS_UTSNAME_H +#define	_SYS_UTSNAME_H + +struct utsname +{ +	char sysname[65]; +	char nodename[65]; +	char release[65]; +	char version[65]; +	char machine[65]; +#ifdef _GNU_SOURCE +	char domainname[65]; +#else +	char __domainname[65]; +#endif +}; + +int uname (struct utsname *); + + +#endif diff --git a/include/sys/vfs.h b/include/sys/vfs.h new file mode 100644 index 00000000..a899db27 --- /dev/null +++ b/include/sys/vfs.h @@ -0,0 +1 @@ +#include <sys/statfs.h> diff --git a/include/sys/vt.h b/include/sys/vt.h new file mode 100644 index 00000000..834abfbc --- /dev/null +++ b/include/sys/vt.h @@ -0,0 +1 @@ +#include <linux/vt.h> diff --git a/include/sys/wait.h b/include/sys/wait.h new file mode 100644 index 00000000..a1851530 --- /dev/null +++ b/include/sys/wait.h @@ -0,0 +1,28 @@ +#ifndef	_SYS_WAIT_H +#define	_SYS_WAIT_H +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_pid_t +#define __NEED_id_t +#define __NEED_time_t +#define __NEED_struct_timeval +#define __NEED_siginfo_t +#include <bits/alltypes.h> + +typedef int idtype_t; + +pid_t wait (int *); +int waitid (idtype_t, id_t, siginfo_t *, int); +pid_t waitpid (pid_t, int *, int ); +//pid_t wait3 (int *, int, struct rusage *); +//pid_t wait4 (pid_t, int *, int, struct rusage *); + +#include <bits/wait.h> +#include <bits/wexitstatus.h> + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/syslog.h b/include/syslog.h new file mode 100644 index 00000000..119c9bcb --- /dev/null +++ b/include/syslog.h @@ -0,0 +1,54 @@ +#ifndef _SYS_SYSLOG_H +#define _SYS_SYSLOG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define LOG_EMERG   0 +#define LOG_ALERT   1 +#define LOG_CRIT    2 +#define LOG_ERR     3 +#define LOG_WARNING 4 +#define LOG_NOTICE  5 +#define LOG_INFO    6 +#define LOG_DEBUG   7 + +#define LOG_MASK(p) (1<<(p)) + +#define LOG_KERN     (0<<3) +#define LOG_USER     (1<<3) +#define LOG_MAIL     (2<<3) +#define LOG_DAEMON   (3<<3) +#define LOG_AUTH     (4<<3) +#define LOG_SYSLOG   (5<<3) +#define LOG_LPR      (6<<3) +#define LOG_NEWS     (7<<3) +#define LOG_UUCP     (8<<3) +#define LOG_CRON     (9<<3) + +#define LOG_LOCAL0   (16<<3) +#define LOG_LOCAL1   (17<<3) +#define LOG_LOCAL2   (18<<3) +#define LOG_LOCAL3   (19<<3) +#define LOG_LOCAL4   (20<<3) +#define LOG_LOCAL5   (21<<3) +#define LOG_LOCAL6   (22<<3) +#define LOG_LOCAL7   (23<<3) + +#define LOG_PID    0x01 +#define LOG_CONS   0x02 +#define LOG_ODELAY 0x04 +#define LOG_NDELAY 0x08 +#define LOG_NOWAIT 0x10 + +void closelog (void); +void openlog (const char *, int, int); +int setlogmask (int); +void syslog (int, const char *, ...); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/tar.h b/include/tar.h new file mode 100644 index 00000000..be589842 --- /dev/null +++ b/include/tar.h @@ -0,0 +1,33 @@ +#ifndef	_TAR_H +#define	_TAR_H + +#define TSUID   04000 +#define TSGID   02000 +#define TSVTX   01000 +#define TUREAD  00400 +#define TUWRITE 00200 +#define TUEXEC  00100 +#define TGREAD  00040 +#define TGWRITE 00020 +#define TGEXEC  00010 +#define TOREAD  00004 +#define TOWRITE 00002 +#define TOEXEC  00001 + +#define REGTYPE  '0' +#define AREGTYPE '\0' +#define LNKTYPE  '1' +#define SYMTYPE  '2' +#define CHRTYPE  '3' +#define BLKTYPE  '4' +#define DIRTYPE  '5' +#define FIFOTYPE '6' +#define CONTTYPE '7' + +#define TMAGIC "ustar" +#define TMAGLEN 6 + +#define TVERSION "00" +#define TVERSLEN 2 + +#endif diff --git a/include/termios.h b/include/termios.h new file mode 100644 index 00000000..4c465627 --- /dev/null +++ b/include/termios.h @@ -0,0 +1,39 @@ +#ifndef	_TERMIOS_H +#define	_TERMIOS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_pid_t + +#include <bits/alltypes.h> + +typedef unsigned char cc_t; +typedef unsigned int speed_t; +typedef unsigned int tcflag_t; + +#define NCCS 32 + +#include <bits/termios.h> + +speed_t cfgetospeed (const struct termios *); +speed_t cfgetispeed (const struct termios *); +int cfsetospeed (struct termios *, speed_t); +int cfsetispeed (struct termios *, speed_t); + +int tcgetattr (int, struct termios *); +int tcsetattr (int, int, const struct termios *); + +int tcsendbreak (int, int); +int tcdrain (int); +int tcflush (int, int); +int tcflow (int, int); + +pid_t tcgetsid (int); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/time.h b/include/time.h new file mode 100644 index 00000000..e6cfb73d --- /dev/null +++ b/include/time.h @@ -0,0 +1,113 @@ +#ifndef	_TIME_H +#define _TIME_H + +#ifdef __cplusplus +extern "C" { +#endif + +#undef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void*)0) +#endif + + +#define __NEED_time_t +#define __NEED_struct_timespec +#define __NEED_clock_t +#define __NEED_clockid_t +#define __NEED_timer_t +#define __NEED_size_t +#define __NEED_pid_t + +#include <bits/alltypes.h> + + +struct tm +{ +	int tm_sec; +	int tm_min; +	int tm_hour; +	int tm_mday; +	int tm_mon; +	int tm_year; +	int tm_wday; +	int tm_yday; +	int tm_isdst; +	long __tm_gmtoff; +	const char *__tm_zone; +}; + +struct itimerspec +{ +	struct timespec it_interval; +	struct timespec it_value; +}; + +#define CLOCKS_PER_SEC 1000000UL + +#define CLOCK_REALTIME           0 +#define CLOCK_MONOTONIC          1 +#define CLOCK_PROCESS_CPUTIME_ID 2 +#define CLOCK_THREAD_CPUTIME_ID  3 + +#define TIMER_ABSTIME 1 + + + +clock_t clock (void); +time_t time (time_t *); +double difftime (time_t, time_t); +time_t mktime (struct tm *); +size_t strftime (char *, size_t, const char *, const struct tm *); +char *strptime (const char *, const char *, struct tm *); + +struct tm *gmtime (const time_t *); +struct tm *gmtime_r (const time_t *, struct tm *); +struct tm *localtime (const time_t *); +struct tm *localtime_r (const time_t *, struct tm *); + +char *asctime (const struct tm *); +char *asctime_r (const struct tm *, char *); +char *ctime (const time_t *); +char *ctime_r (const time_t *, char *); + + +extern int daylight; +extern long timezone; +extern char *tzname[2]; + +void tzset (void); + + + +int nanosleep (const struct timespec *, struct timespec *); + + +int clock_getres (clockid_t, struct timespec *); +int clock_gettime (clockid_t, struct timespec *); +int clock_settime (clockid_t, const struct timespec *); + +int clock_nanosleep (clockid_t, int, const struct timespec *, struct timespec *); +int clock_getcpuclockid (pid_t, clockid_t *); + +/* FIXME */ +struct sigevent; +int timer_create (clockid_t, struct sigevent *, timer_t *); +int timer_delete (timer_t); + +int timer_settime (timer_t, int, const struct itimerspec *, struct itimerspec *); +int timer_gettime (timer_t, struct itimerspec *); +int timer_getoverrun (timer_t); + + +extern int getdate_err; +extern struct tm *getdate (const char *); + +#ifdef __cplusplus +} +#endif + + +#endif diff --git a/include/ucontext.h b/include/ucontext.h new file mode 100644 index 00000000..db335677 --- /dev/null +++ b/include/ucontext.h @@ -0,0 +1,38 @@ +#ifndef _UCONTEXT_H +#define _UCONTEXT_H +#ifdef __cplusplus +extern "C" { +#endif + +#include <signal.h> + +struct __fpstate { +	unsigned long __x[7]; +	unsigned char __y[80]; +	unsigned long __z; +}; + +typedef struct { +	unsigned long __gregs[19]; +	void *__fpregs; +	unsigned long __oldmask, __cr2; +} mcontext_t; + +typedef struct __ucontext { +	unsigned long uc_flags; +	struct __ucontext *uc_link; +	stack_t uc_stack; +	mcontext_t uc_mcontext; +	sigset_t uc_sigmask; +	struct __fpstate __fpregs_mem; +} ucontext_t; + +int  getcontext(ucontext_t *); +void makecontext(ucontext_t *, void (*)(void), int, ...); +int  setcontext(const ucontext_t *); +int  swapcontext(ucontext_t *, const ucontext_t *); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/ulimit.h b/include/ulimit.h new file mode 100644 index 00000000..efdcd311 --- /dev/null +++ b/include/ulimit.h @@ -0,0 +1,17 @@ +#ifndef _ULIMIT_H +#define _ULIMIT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define UL_GETFSIZE 1 +#define UL_SETFSIZE 2 + +long ulimit (int, ...); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/unistd.h b/include/unistd.h new file mode 100644 index 00000000..5ad0704b --- /dev/null +++ b/include/unistd.h @@ -0,0 +1,464 @@ +#ifndef	_UNISTD_H +#define	_UNISTD_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define STDIN_FILENO  0 +#define STDOUT_FILENO 1 +#define STDERR_FILENO 2 + +#undef SEEK_SET +#undef SEEK_CUR +#undef SEEK_END +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 + +#undef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void*)0) +#endif + +#define __NEED_size_t +#define __NEED_ssize_t +#define __NEED_uid_t +#define __NEED_gid_t +#define __NEED_off_t +#define __NEED_pid_t +#define __NEED_useconds_t +#define __NEED_intptr_t + +#include <bits/alltypes.h> + +int pipe(int [2]); +int close(int); +int dup(int); +int dup2(int, int); +off_t lseek(int, off_t, int); +int fsync(int); +void sync(void); +int fdatasync(int); + +ssize_t read(int, void *, size_t); +ssize_t write(int, const void *, size_t); +ssize_t pread(int, void *, size_t, off_t); +ssize_t pwrite(int, const void *, size_t, off_t); + +#define F_ULOCK 0 +#define F_LOCK  1 +#define F_TLOCK 2 +#define F_TEST  3 +int lockf(int, int, off_t); + +int chown(const char *, uid_t, gid_t); +int fchown(int, uid_t, gid_t); +int lchown(const char *, uid_t, gid_t); +int fchownat(int, const char *, uid_t, gid_t, int); + +int link(const char *, const char *); +int linkat(int, const char *, int, const char *, int); +int symlink(const char *, const char *); +int symlinkat(const char *, int, const char *); +int readlink(const char *, char *, size_t); +int readlinkat(int, const char *, char *, size_t); +int unlink(const char *); +int unlinkat(int, const char *, int); +int rmdir(const char *); +int truncate(const char *, off_t); +int ftruncate(int, off_t); + +#define F_OK 0 +#define R_OK 4 +#define W_OK 2 +#define X_OK 1 +int access(const char *, int); +int faccessat(int, const char *, int, int); + +int chdir(const char *); +int fchdir(int); +char *getcwd(char *, size_t); +int chroot(const char *); /* dropped */ + +unsigned alarm(unsigned); +useconds_t ualarm(useconds_t, useconds_t); +unsigned sleep(unsigned); +int usleep(useconds_t); +int pause(void); +int nice(int); + +pid_t fork(void); +pid_t vfork(void); +int execve(const char *, char *const [], char *const []); +int execv(const char *, char *const []); +int execle(const char *, ...); +int execl(const char *, ...); +int execvp(const char *, char *const []); +int execlp(const char *, ...); +void _exit(int); + +pid_t getpid(void); +pid_t getppid(void); +pid_t getpgrp(void); +pid_t getpgid(pid_t); +int setpgid(pid_t, pid_t); +int setpgrp(void); +pid_t setsid(void); +pid_t getsid(pid_t); +char *ttyname(int); +int ttyname_r(int, char *, size_t); +int isatty(int); +pid_t tcgetpgrp(int); +int tcsetpgrp(int, pid_t); + +uid_t getuid(void); +uid_t geteuid(void); +gid_t getgid(void); +gid_t getegid(void); +int getgroups(int, gid_t []); +int setuid(uid_t); +int setreuid(uid_t, uid_t); +int seteuid(uid_t); +int setgid(gid_t); +int setregid(gid_t, gid_t); +int setegid(gid_t); + +char *getlogin(void); +int getlogin_r(char *, size_t); +long gethostid(void); +int gethostname(char *, size_t); +int sethostname(const char *, size_t); +int getpagesize(void); +char *ctermid(char *); + +int vhangup(void); /* dropped */ + +int getopt(int, char * const [], const char *); +extern char *optarg; +extern int optind, opterr, optopt; + +char *crypt(const char *, const char *); +void encrypt(char *, int); + +void swab(const void *, void *, ssize_t); + +long pathconf(const char *, int); +long fpathconf(int, int); +long sysconf(int); +size_t confstr(int, char *, size_t); + +#define _XOPEN_VERSION          700 +#define _XOPEN_UNIX             1 +#define _XOPEN_ENH_I18N         1 + +#define _POSIX_VERSION          200809L +#define _POSIX2_VERSION         _POSIX_VERSION + +#define _POSIX_CHOWN_RESTRICTED 1 +#define _POSIX_IPV6             _POSIX_VERSION +#define _POSIX_JOB_CONTROL      1 +#define _POSIX_MAPPED_FILES     _POSIX_VERSION +#define _POSIX_MEMLOCK          _POSIX_VERSION +#define _POSIX_MEMLOCK_RANGE    _POSIX_VERSION +#define _POSIX_MEMORY_PROTECTION _POSIX_VERSION +#define _POSIX_NO_TRUNC         1 +#define _POSIX_RAW_SOCKETS      _POSIX_VERSION +#define _POSIX_REALTIME_SIGNALS _POSIX_VERSION +#define _POSIX_REGEXP           1 +#define _POSIX_SAVED_IDS        1 +#define _POSIX_SHELL            1 +#define _POSIX_VDISABLE         0 + +#define _POSIX_THREADS          _POSIX_VERSION +#define _POSIX_THREAD_PROCESS_SHARED _POSIX_VERSION +#define _POSIX_THREAD_SAFE_FUNCTIONS _POSIX_VERSION +#define _POSIX_TIMERS           _POSIX_VERSION +#define _POSIX_TIMEOUTS         _POSIX_VERSION +#define _POSIX_MONOTONIC_CLOCK  _POSIX_VERSION +#define _POSIX_CPUTIME          _POSIX_VERSION +#define _POSIX_CLOCK_SELECTION  _POSIX_VERSION +#define _POSIX_BARRIERS         _POSIX_VERSION +#define _POSIX_SPIN_LOCKS       _POSIX_VERSION +#define _POSIX_READER_WRITER_LOCKS _POSIX_VERSION +#define _POSIX_ASYNCHRONOUS_IO  _POSIX_VERSION +#define _POSIX_SEMAPHORES       _POSIX_VERSION + +#define _POSIX2_C_BIND          _POSIX_VERSION + +#include <bits/posix.h> + + + +#define _PC_LINK_MAX	0 +#define _PC_MAX_CANON	1 +#define _PC_MAX_INPUT	2 +#define _PC_NAME_MAX	3 +#define _PC_PATH_MAX	4 +#define _PC_PIPE_BUF	5 +#define _PC_CHOWN_RESTRICTED	6 +#define _PC_NO_TRUNC	7 +#define _PC_VDISABLE	8 +#define _PC_SYNC_IO	9 +#define _PC_ASYNC_IO	10 +#define _PC_PRIO_IO	11 +#define _PC_SOCK_MAXBUF	12 +#define _PC_FILESIZEBITS	13 +#define _PC_REC_INCR_XFER_SIZE	14 +#define _PC_REC_MAX_XFER_SIZE	15 +#define _PC_REC_MIN_XFER_SIZE	16 +#define _PC_REC_XFER_ALIGN	17 +#define _PC_ALLOC_SIZE_MIN	18 +#define _PC_SYMLINK_MAX	19 +#define _PC_2_SYMLINKS	20 + +#define _SC_ARG_MAX	0 +#define _SC_CHILD_MAX	1 +#define _SC_CLK_TCK	2 +#define _SC_NGROUPS_MAX	3 +#define _SC_OPEN_MAX	4 +#define _SC_STREAM_MAX	5 +#define _SC_TZNAME_MAX	6 +#define _SC_JOB_CONTROL	7 +#define _SC_SAVED_IDS	8 +#define _SC_REALTIME_SIGNALS	9 +#define _SC_PRIORITY_SCHEDULING	10 +#define _SC_TIMERS	11 +#define _SC_ASYNCHRONOUS_IO	12 +#define _SC_PRIORITIZED_IO	13 +#define _SC_SYNCHRONIZED_IO	14 +#define _SC_FSYNC	15 +#define _SC_MAPPED_FILES	16 +#define _SC_MEMLOCK	17 +#define _SC_MEMLOCK_RANGE	18 +#define _SC_MEMORY_PROTECTION	19 +#define _SC_MESSAGE_PASSING	20 +#define _SC_SEMAPHORES	21 +#define _SC_SHARED_MEMORY_OBJECTS	22 +#define _SC_AIO_LISTIO_MAX	23 +#define _SC_AIO_MAX	24 +#define _SC_AIO_PRIO_DELTA_MAX	25 +#define _SC_DELAYTIMER_MAX	26 +#define _SC_MQ_OPEN_MAX	27 +#define _SC_MQ_PRIO_MAX	28 +#define _SC_VERSION	29 +#define _SC_PAGE_SIZE	30 +#define _SC_PAGESIZE	30 /* !! */ +#define _SC_RTSIG_MAX	31 +#define _SC_SEM_NSEMS_MAX	32 +#define _SC_SEM_VALUE_MAX	33 +#define _SC_SIGQUEUE_MAX	34 +#define _SC_TIMER_MAX	35 +#define _SC_BC_BASE_MAX	36 +#define _SC_BC_DIM_MAX	37 +#define _SC_BC_SCALE_MAX	38 +#define _SC_BC_STRING_MAX	39 +#define _SC_COLL_WEIGHTS_MAX	40 +#define _SC_EQUIV_CLASS_MAX	41 +#define _SC_EXPR_NEST_MAX	42 +#define _SC_LINE_MAX	43 +#define _SC_RE_DUP_MAX	44 +#define _SC_CHARCLASS_NAME_MAX	45 +#define _SC_2_VERSION	46 +#define _SC_2_C_BIND	47 +#define _SC_2_C_DEV	48 +#define _SC_2_FORT_DEV	49 +#define _SC_2_FORT_RUN	50 +#define _SC_2_SW_DEV	51 +#define _SC_2_LOCALEDEF	52 +#define _SC_PII	53 +#define _SC_PII_XTI	54 +#define _SC_PII_SOCKET	55 +#define _SC_PII_INTERNET	56 +#define _SC_PII_OSI	57 +#define _SC_POLL	58 +#define _SC_SELECT	59 +#define _SC_UIO_MAXIOV	60 /* !! */ +#define _SC_IOV_MAX	60 +#define _SC_PII_INTERNET_STREAM	61 +#define _SC_PII_INTERNET_DGRAM	62 +#define _SC_PII_OSI_COTS	63 +#define _SC_PII_OSI_CLTS	64 +#define _SC_PII_OSI_M	65 +#define _SC_T_IOV_MAX	66 +#define _SC_THREADS	67 +#define _SC_THREAD_SAFE_FUNCTIONS	68 +#define _SC_GETGR_R_SIZE_MAX	69 +#define _SC_GETPW_R_SIZE_MAX	70 +#define _SC_LOGIN_NAME_MAX	71 +#define _SC_TTY_NAME_MAX	72 +#define _SC_THREAD_DESTRUCTOR_ITERATIONS	73 +#define _SC_THREAD_KEYS_MAX	74 +#define _SC_THREAD_STACK_MIN	75 +#define _SC_THREAD_THREADS_MAX	76 +#define _SC_THREAD_ATTR_STACKADDR	77 +#define _SC_THREAD_ATTR_STACKSIZE	78 +#define _SC_THREAD_PRIORITY_SCHEDULING	79 +#define _SC_THREAD_PRIO_INHERIT	80 +#define _SC_THREAD_PRIO_PROTECT	81 +#define _SC_THREAD_PROCESS_SHARED	82 +#define _SC_NPROCESSORS_CONF	83 +#define _SC_NPROCESSORS_ONLN	84 +#define _SC_PHYS_PAGES	85 +#define _SC_AVPHYS_PAGES	86 +#define _SC_ATEXIT_MAX	87 +#define _SC_PASS_MAX	88 +#define _SC_XOPEN_VERSION	89 +#define _SC_XOPEN_XCU_VERSION	90 +#define _SC_XOPEN_UNIX	91 +#define _SC_XOPEN_CRYPT	92 +#define _SC_XOPEN_ENH_I18N	93 +#define _SC_XOPEN_SHM	94 +#define _SC_2_CHAR_TERM	95 +#define _SC_2_C_VERSION	96 +#define _SC_2_UPE	97 +#define _SC_XOPEN_XPG2	98 +#define _SC_XOPEN_XPG3	99 +#define _SC_XOPEN_XPG4	100 +#define _SC_CHAR_BIT	101 +#define _SC_CHAR_MAX	102 +#define _SC_CHAR_MIN	103 +#define _SC_INT_MAX	104 +#define _SC_INT_MIN	105 +#define _SC_LONG_BIT	106 +#define _SC_WORD_BIT	107 +#define _SC_MB_LEN_MAX	108 +#define _SC_NZERO	109 +#define _SC_SSIZE_MAX	110 +#define _SC_SCHAR_MAX	111 +#define _SC_SCHAR_MIN	112 +#define _SC_SHRT_MAX	113 +#define _SC_SHRT_MIN	114 +#define _SC_UCHAR_MAX	115 +#define _SC_UINT_MAX	116 +#define _SC_ULONG_MAX	117 +#define _SC_USHRT_MAX	118 +#define _SC_NL_ARGMAX	119 +#define _SC_NL_LANGMAX	120 +#define _SC_NL_MSGMAX	121 +#define _SC_NL_NMAX	122 +#define _SC_NL_SETMAX	123 +#define _SC_NL_TEXTMAX	124 +#define _SC_XBS5_ILP32_OFF32	125 +#define _SC_XBS5_ILP32_OFFBIG	126 +#define _SC_XBS5_LP64_OFF64	127 +#define _SC_XBS5_LPBIG_OFFBIG	128 +#define _SC_XOPEN_LEGACY	129 +#define _SC_XOPEN_REALTIME	130 +#define _SC_XOPEN_REALTIME_THREADS	131 +#define _SC_ADVISORY_INFO	132 +#define _SC_BARRIERS	133 +#define _SC_BASE	134 +#define _SC_C_LANG_SUPPORT	135 +#define _SC_C_LANG_SUPPORT_R	136 +#define _SC_CLOCK_SELECTION	137 +#define _SC_CPUTIME	138 +#define _SC_THREAD_CPUTIME	139 +#define _SC_DEVICE_IO	140 +#define _SC_DEVICE_SPECIFIC	141 +#define _SC_DEVICE_SPECIFIC_R	142 +#define _SC_FD_MGMT	143 +#define _SC_FIFO	144 +#define _SC_PIPE	145 +#define _SC_FILE_ATTRIBUTES	146 +#define _SC_FILE_LOCKING	147 +#define _SC_FILE_SYSTEM	148 +#define _SC_MONOTONIC_CLOCK	149 +#define _SC_MULTI_PROCESS	150 +#define _SC_SINGLE_PROCESS	151 +#define _SC_NETWORKING	152 +#define _SC_READER_WRITER_LOCKS	153 +#define _SC_SPIN_LOCKS	154 +#define _SC_REGEXP	155 +#define _SC_REGEX_VERSION	156 +#define _SC_SHELL	157 +#define _SC_SIGNALS	158 +#define _SC_SPAWN	159 +#define _SC_SPORADIC_SERVER	160 +#define _SC_THREAD_SPORADIC_SERVER	161 +#define _SC_SYSTEM_DATABASE	162 +#define _SC_SYSTEM_DATABASE_R	163 +#define _SC_TIMEOUTS	164 +#define _SC_TYPED_MEMORY_OBJECTS	165 +#define _SC_USER_GROUPS	166 +#define _SC_USER_GROUPS_R	167 +#define _SC_2_PBS	168 +#define _SC_2_PBS_ACCOUNTING	169 +#define _SC_2_PBS_LOCATE	170 +#define _SC_2_PBS_MESSAGE	171 +#define _SC_2_PBS_TRACK	172 +#define _SC_SYMLOOP_MAX	173 +#define _SC_STREAMS	174 +#define _SC_2_PBS_CHECKPOINT	175 +#define _SC_V6_ILP32_OFF32	176 +#define _SC_V6_ILP32_OFFBIG	177 +#define _SC_V6_LP64_OFF64	178 +#define _SC_V6_LPBIG_OFFBIG	179 +#define _SC_HOST_NAME_MAX	180 +#define _SC_TRACE	181 +#define _SC_TRACE_EVENT_FILTER	182 +#define _SC_TRACE_INHERIT	183 +#define _SC_TRACE_LOG	184 + +#define _SC_IPV6	235 +#define _SC_RAW_SOCKETS	236 +#define _SC_V7_ILP32_OFF32	237 +#define _SC_V7_ILP32_OFFBIG	238 +#define _SC_V7_LP64_OFF64	239 +#define _SC_V7_LPBIG_OFFBIG	240 +#define _SC_SS_REPL_MAX	241 +#define _SC_TRACE_EVENT_NAME_MAX	242 +#define _SC_TRACE_NAME_MAX	243 +#define _SC_TRACE_SYS_MAX	244 +#define _SC_TRACE_USER_EVENT_MAX	245 +#define _SC_XOPEN_STREAMS	246 +#define _SC_THREAD_ROBUST_PRIO_INHERIT	247 +#define _SC_THREAD_ROBUST_PRIO_PROTECT	248 + +#define _CS_PATH	0 +#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS	1 +#define _CS_GNU_LIBC_VERSION	2 +#define _CS_GNU_LIBPTHREAD_VERSION	3 +#define _CS_POSIX_V5_WIDTH_RESTRICTED_ENVS	4 +#define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS	5 + +#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS	1116 +#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS	1117 +#define _CS_POSIX_V6_ILP32_OFF32_LIBS	1118 +#define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS	1119 +#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS	1120 +#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS	1121 +#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS	1122 +#define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS	1123 +#define _CS_POSIX_V6_LP64_OFF64_CFLAGS	1124 +#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS	1125 +#define _CS_POSIX_V6_LP64_OFF64_LIBS	1126 +#define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS	1127 +#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS	1128 +#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS	1129 +#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS	1130 +#define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS	1131 +#define _CS_POSIX_V7_ILP32_OFF32_CFLAGS	1132 +#define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS	1133 +#define _CS_POSIX_V7_ILP32_OFF32_LIBS	1134 +#define _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS	1135 +#define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS	1136 +#define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS	1137 +#define _CS_POSIX_V7_ILP32_OFFBIG_LIBS	1138 +#define _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS	1139 +#define _CS_POSIX_V7_LP64_OFF64_CFLAGS	1140 +#define _CS_POSIX_V7_LP64_OFF64_LDFLAGS	1141 +#define _CS_POSIX_V7_LP64_OFF64_LIBS	1142 +#define _CS_POSIX_V7_LP64_OFF64_LINTFLAGS	1143 +#define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS	1144 +#define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS	1145 +#define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS	1146 +#define _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS	1147 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/utime.h b/include/utime.h new file mode 100644 index 00000000..ec82e0f3 --- /dev/null +++ b/include/utime.h @@ -0,0 +1,24 @@ +#ifndef	_UTIME_H +#define	_UTIME_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_time_t + +#include <bits/alltypes.h> + +struct utimbuf +{ +	time_t actime; +	time_t modtime; +}; + +int utime (const char *, const struct utimbuf *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/utmp.h b/include/utmp.h new file mode 100644 index 00000000..f60ff883 --- /dev/null +++ b/include/utmp.h @@ -0,0 +1,23 @@ +#ifndef _UTMP_H +#define _UTMP_H + +#include <utmpx.h> + +#define ut_time ut_tv.tv_sec +#define ut_name ut_user +#define ut_exit __ut_exit +#define e_termination __e_termination +#define e_exit __e_exit +#define utmp utmpx +#define endutent endutxent +#define getutent getutxent +#define setutent setutxent +#define getutid getutxid +#define getutline getutxline +#define pututline pututxline +#define utmpname(x) (-1) + +#define _PATH_UTMP "/dev/null" +#define _PATH_WTMP "/dev/null" + +#endif diff --git a/include/utmpx.h b/include/utmpx.h new file mode 100644 index 00000000..9a2e3075 --- /dev/null +++ b/include/utmpx.h @@ -0,0 +1,52 @@ +#ifndef _UTMPX_H +#define _UTMPX_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_pid_t +#define __NEED_time_t +#define __NEED_struct_timeval + +#include <bits/alltypes.h> + +struct utmpx +{ +	short ut_type; +	pid_t ut_pid; +	char ut_line[32]; +	char ut_id[4]; +	char ut_user[32]; +	char ut_host[256]; +	struct { +		short __e_termination; +		short __e_exit; +	} __ut_exit; +	long ut_session; +	struct timeval ut_tv; +	unsigned ut_addr_v6[4]; +	char __unused[20]; +}; + +void          endutxent(void); +struct utmpx *getutxent(void); +struct utmpx *getutxid(const struct utmpx *); +struct utmpx *getutxline(const struct utmpx *); +struct utmpx *pututxline(const struct utmpx *); +void          setutxent(void); + +#define EMPTY           0 +#define BOOT_TIME       2 +#define NEW_TIME        3 +#define OLD_TIME        4 +#define INIT_PROCESS    5 +#define LOGIN_PROCESS   6 +#define USER_PROCESS    7 +#define DEAD_PROCESS    8 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/wchar.h b/include/wchar.h new file mode 100644 index 00000000..3f325bff --- /dev/null +++ b/include/wchar.h @@ -0,0 +1,152 @@ +#ifndef _WCHAR_H +#define _WCHAR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_FILE +#define __NEED_va_list +#define __NEED_size_t +#define __NEED_wchar_t +#define __NEED_wint_t +#define __NEED_wctype_t + +#include <bits/alltypes.h> + +#undef NULL +#define NULL ((void*)0) + +#undef WCHAR_MIN +#undef WCHAR_MAX +#define WCHAR_MIN (-1-0x7fffffff) +#define WCHAR_MAX (0x7fffffff) + +#undef WEOF +#define WEOF (-1) + + +typedef struct +{ +	unsigned __opaque1, __opaque2; +} mbstate_t; + +wchar_t *wcscpy (wchar_t *, const wchar_t *); +wchar_t *wcsncpy (wchar_t *, const wchar_t *, size_t); + +wchar_t *wcscat (wchar_t *, const wchar_t *); +wchar_t *wcsncat (wchar_t *, const wchar_t *, size_t); + +int wcscmp (const wchar_t *, const wchar_t *); +int wcsncmp (const wchar_t *, const wchar_t *, size_t); + +size_t wcsxfrm (wchar_t *, const wchar_t *, size_t n); + +wchar_t *wcschr (const wchar_t *, wchar_t); +wchar_t *wcsrchr (const wchar_t *, wchar_t); + +size_t wcscspn (const wchar_t *, const wchar_t *); +size_t wcsspn (const wchar_t *, const wchar_t *); +wchar_t *wcspbrk (const wchar_t *, const wchar_t *); + +wchar_t *wcstok (wchar_t *, const wchar_t *, wchar_t **); + +size_t wcslen (const wchar_t *); + +wchar_t *wcsstr (const wchar_t *, const wchar_t *); +wchar_t *wcswcs (const wchar_t *, const wchar_t *); + +wchar_t *wmemchr (const wchar_t *, wchar_t, size_t); +int wmemcmp (const wchar_t *, const wchar_t *, size_t); +wchar_t *wmemcpy (wchar_t *, const wchar_t *, size_t); +wchar_t *wmemmove (wchar_t *, const wchar_t *, size_t); +wchar_t *wmemset (wchar_t *, wchar_t, size_t); + +wint_t btowc (int); +int wctob (wint_t); + +int mbsinit (const mbstate_t *); +size_t mbrtowc (wchar_t *, const char *, size_t, mbstate_t *); +size_t wcrtomb (char *, wchar_t, mbstate_t *); + +size_t mbrlen (const char *, size_t, mbstate_t *); + +size_t mbsrtowcs (wchar_t *, const char **, size_t, mbstate_t *); +size_t wcsrtombs (char *, const wchar_t **, size_t, mbstate_t *); + +int wcwidth (wchar_t); +int wcswidth (const wchar_t *, size_t); + +float wcstof (const wchar_t *, wchar_t **); +double wcstod (const wchar_t *, wchar_t **); +long double wcstold (const wchar_t *, wchar_t **); + +long wcstol (const wchar_t *, wchar_t **, int); +unsigned long wcstoul (const wchar_t *, wchar_t **, int); + +long long wcstoll (const wchar_t *, wchar_t **, int); +unsigned long long wcstoull (const wchar_t *, wchar_t **, int); + + + +int fwide (FILE *, int); + + +int wprintf (const wchar_t *, ...); +int fwprintf (FILE *, const wchar_t *, ...); +int swprintf (wchar_t *, const wchar_t *, ...); + +int vwprintf (const wchar_t *, va_list); +int vfwprintf (FILE *, const wchar_t *, va_list); +int vswprintf (wchar_t *, const wchar_t *, va_list); + +int wscanf (const wchar_t *, ...); +int fwscanf (FILE *, const wchar_t *, ...); +int swscanf (const wchar_t *, const wchar_t *, ...); + +int vwscanf (const wchar_t *, va_list); +int vfwscanf (FILE *, const wchar_t *, va_list); +int vswscanf (const wchar_t *, const wchar_t *, va_list); + +wint_t fgetwc (FILE *); +wint_t getwc (FILE *); +wint_t getwchar (void); + +wint_t fputwc (wchar_t, FILE *); +wint_t putwc (wchar_t, FILE *); +wint_t putwchar (wchar_t); + +wchar_t *fgetws (wchar_t *, int, FILE *); +int fputws (const wchar_t *, FILE *); + +wint_t ungetwc (wint_t, FILE *); + +struct tm; +size_t wcsftime (wchar_t *, size_t, const wchar_t *, const struct tm *); + +#undef iswdigit + +int       iswalnum(wint_t); +int       iswalpha(wint_t); +int       iswblank(wint_t); +int       iswcntrl(wint_t); +int       iswdigit(wint_t); +int       iswgraph(wint_t); +int       iswlower(wint_t); +int       iswprint(wint_t); +int       iswpunct(wint_t); +int       iswspace(wint_t); +int       iswupper(wint_t); +int       iswxdigit(wint_t); +int       iswctype(wint_t, wctype_t); +wint_t    towlower(wint_t); +wint_t    towupper(wint_t); +wctype_t  wctype(const char *); + +#define iswdigit(a) ((unsigned)(a)-'0' < 10) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/wctype.h b/include/wctype.h new file mode 100644 index 00000000..8b6c9d9d --- /dev/null +++ b/include/wctype.h @@ -0,0 +1,44 @@ +#ifndef _WCTYPE_H +#define _WCTYPE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_wint_t +#define __NEED_wctrans_t +#define __NEED_wctype_t + +#include <bits/alltypes.h> + +#undef WEOF +#define WEOF (-1) + +#undef iswdigit + +int       iswalnum(wint_t); +int       iswalpha(wint_t); +int       iswblank(wint_t); +int       iswcntrl(wint_t); +int       iswdigit(wint_t); +int       iswgraph(wint_t); +int       iswlower(wint_t); +int       iswprint(wint_t); +int       iswpunct(wint_t); +int       iswspace(wint_t); +int       iswupper(wint_t); +int       iswxdigit(wint_t); +int       iswctype(wint_t, wctype_t); +wint_t    towctrans(wint_t, wctrans_t); +wint_t    towlower(wint_t); +wint_t    towupper(wint_t); +wctrans_t wctrans(const char *); +wctype_t  wctype(const char *); + +#define iswdigit(a) ((unsigned)((a)-L'0') < 10) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/wordexp.h b/include/wordexp.h new file mode 100644 index 00000000..91995c44 --- /dev/null +++ b/include/wordexp.h @@ -0,0 +1,40 @@ +#ifndef	_WORDEXP_H +#define	_WORDEXP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_size_t + +#include <bits/alltypes.h> + +#define WRDE_DOOFFS  1 +#define WRDE_APPEND  2 +#define WRDE_NOCMD   4 +#define WRDE_REUSE   8 +#define WRDE_SHOWERR 16 +#define WRDE_UNDEF   32 + +typedef struct +{ +	size_t we_wordc; +	char **wc_wordv; +	size_t we_offs; +} wordexp_t; + +#define WRDE_NOSYS   -1 +#define WRDE_NOSPACE 1 +#define WRDE_BADCHAR 2 +#define WRDE_BADVAL  3 +#define WRDE_CMDSUB  4 +#define WRDE_SYNTAX  5 + +int wordexp (const char *, wordexp_t *, int); +void wordfree (wordexp_t *); + +#ifdef __cplusplus +} +#endif + +#endif | 
