18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* a.out.h
28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   Copyright 1997, 1998, 1999, 2001 Red Hat, Inc.
48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectThis file is part of Cygwin.
68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectThis software is a copyrighted work licensed under the terms of the
88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectCygwin license.  Please consult the file "CYGWIN_LICENSE" for
98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectdetails. */
108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef _A_OUT_H_
128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define _A_OUT_H_
138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef __cplusplus
158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern "C" {
168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define COFF_IMAGE_WITH_PE
188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define COFF_LONG_SECTION_NAMES
198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*** coff information for Intel 386/486.  */
218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/********************** FILE HEADER **********************/
248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct external_filehdr {
268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  short f_magic;	/* magic number			*/
278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  short f_nscns;	/* number of sections		*/
288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong f_timdat;	/* time & date stamp		*/
298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong f_symptr;	/* file pointer to symtab	*/
308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong f_nsyms;	/* number of symtab entries	*/
318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  short f_opthdr;	/* sizeof(optional hdr)		*/
328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  short f_flags;	/* flags			*/
338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Bits for f_flags:
368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *	F_RELFLG	relocation info stripped from file
378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *	F_EXEC		file is executable (no unresolved external references)
388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *	F_LNNO		line numbers stripped from file
398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *	F_LSYMS		local symbols stripped from file
408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *	F_AR32WR	file has byte ordering of an AR32WR machine (e.g. vax)
418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define F_RELFLG	(0x0001)
448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define F_EXEC		(0x0002)
458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define F_LNNO		(0x0004)
468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define F_LSYMS		(0x0008)
478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	I386MAGIC	0x14c
518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define I386PTXMAGIC	0x154
528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define I386AIXMAGIC	0x175
538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This is Lynx's all-platform magic number for executables. */
558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define LYNXCOFFMAGIC	0415
578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define I386BADMAG(x) (((x).f_magic != I386MAGIC) \
598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project		       && (x).f_magic != I386AIXMAGIC \
608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project		       && (x).f_magic != I386PTXMAGIC \
618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project		       && (x).f_magic != LYNXCOFFMAGIC)
628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	FILHDR	struct external_filehdr
648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	FILHSZ	20
658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/********************** AOUT "OPTIONAL HEADER"=
688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project **********************/
698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct
728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short magic;		/* type of file				*/
748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short vstamp;	/* version stamp			*/
758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong	tsize;		/* text size in bytes, padded to FW bdry*/
768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong	dsize;		/* initialized data "  "		*/
778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong	bsize;		/* uninitialized data "   "		*/
788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong	entry;		/* entry pt.				*/
798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong text_start;	/* base of text used for this file */
808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong data_start;	/* base of data used for this file=
818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectAOUTHDR;
848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AOUTSZ 28
868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AOUTHDRSZ 28
878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define OMAGIC          0404    /* object files, eg as output */
898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ZMAGIC          0413    /* demand load format, eg normal ld output */
908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STMAGIC		0401	/* target shlib */
918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SHMAGIC		0443	/* host   shlib */
928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* define some NT default values */
958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*  #define NT_IMAGE_BASE        0x400000 moved to internal.h */
968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NT_SECTION_ALIGNMENT 0x1000
978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NT_FILE_ALIGNMENT    0x200
988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NT_DEF_RESERVE       0x100000
998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NT_DEF_COMMIT        0x1000
1008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/********************** SECTION HEADER **********************/
1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct external_scnhdr {
1058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  char		s_name[8];	/* section name			*/
1068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong	s_paddr;	/* physical address, offset
1078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project				   of last addr in scn */
1088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong	s_vaddr;	/* virtual address		*/
1098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong	s_size;		/* section size			*/
1108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong	s_scnptr;	/* file ptr to raw data for section */
1118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong	s_relptr;	/* file ptr to relocation	*/
1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong	s_lnnoptr;	/* file ptr to line numbers	*/
1138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short s_nreloc;	/* number of relocation entries	*/
1148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short s_nlnno;	/* number of line number entries*/
1158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong	s_flags;	/* flags			*/
1168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
1178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	SCNHDR	struct external_scnhdr
1198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	SCNHSZ	40
1208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
1228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * names of "special" sections
1238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
1248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define _TEXT	".text"
1258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define _DATA	".data"
1268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define _BSS	".bss"
1278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define _COMMENT ".comment"
1288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define _LIB ".lib"
1298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/********************** LINE NUMBERS **********************/
1318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 1 line number entry for every "breakpointable" source line in a section.
1338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Line numbers are grouped on a per function basis; first entry in a function
1348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * grouping will have l_lnno = 0 and in place of physical address will be the
1358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * symbol table index of the function name.
1368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
1378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct external_lineno {
1388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  union {
1398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    host_ulong l_symndx; /* function name symbol index, iff l_lnno 0 */
1408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    host_ulong l_paddr;	/* (physical) address of line number	*/
1418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  } l_addr;
1428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short l_lnno;	/* line number		*/
1438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
1448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	LINENO	struct external_lineno
1468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	LINESZ	6
1478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/********************** SYMBOLS **********************/
1498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define E_SYMNMLEN	8	/* # characters in a symbol name	*/
1518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define E_FILNMLEN	14	/* # characters in a file name		*/
1528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define E_DIMNUM	4	/* # array dimensions in auxiliary entry */
1538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct __attribute__((packed)) external_syment
1558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  union {
1578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    char e_name[E_SYMNMLEN];
1588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    struct {
1598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      host_ulong e_zeroes;
1608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      host_ulong e_offset;
1618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    } e;
1628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  } e;
1638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong e_value;
1648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_scnum;
1658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_type;
1668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  char e_sclass[1];
1678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  char e_numaux[1];
1688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
1698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define N_BTMASK	(0xf)
1718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define N_TMASK		(0x30)
1728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define N_BTSHFT	(4)
1738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define N_TSHIFT	(2)
1748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectunion external_auxent {
1768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  struct {
1778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    host_ulong x_tagndx;	/* str, un, or enum tag indx */
1788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    union {
1798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      struct {
1808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	unsigned short  x_lnno; /* declaration line number */
1818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	unsigned short  x_size; /* str/union/array size */
1828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      } x_lnsz;
1838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      host_ulong x_fsize;	/* size of function */
1848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    } x_misc;
1858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    union {
1868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      struct {			/* if ISFCN, tag, or .bb */
1878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	host_ulong x_lnnoptr;/* ptr to fcn line # */
1888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	host_ulong x_endndx;	/* entry ndx past block end */
1898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      } x_fcn;
1908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      struct {			/* if ISARY, up to 4 dimen. */
1918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	char x_dimen[E_DIMNUM][2];
1928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      } x_ary;
1938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    } x_fcnary;
1948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    unsigned short x_tvndx;	/* tv index */
1958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  } x_sym;
1968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  union {
1988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    char x_fname[E_FILNMLEN];
1998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    struct {
2008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      host_ulong x_zeroes;
2018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      host_ulong x_offset;
2028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    } x_n;
2038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  } x_file;
2048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  struct {
2068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    host_ulong x_scnlen;	/* section length */
2078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    unsigned short x_nreloc;	/* # relocation entries */
2088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    unsigned short x_nlinno;	/* # line numbers */
2098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    host_ulong x_checksum;	/* section COMDAT checksum */
2108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    unsigned short x_associated;/* COMDAT associated section index */
2118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    char x_comdat[1];		/* COMDAT selection number */
2128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  } x_scn;
2138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  struct {
2158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    host_ulong x_tvfill;	/* tv fill value */
2168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    unsigned short x_tvlen;	/* length of .tv */
2178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    char x_tvran[2][2];		/* tv range */
2188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  } x_tv;	/* info about .tv section (in auxent of symbol .tv)) */
2198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
2218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	SYMENT	struct external_syment
2238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	SYMESZ	18
2248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	AUXENT	union external_auxent
2258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define	AUXESZ	18
2268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define _ETEXT	"etext"
2288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/********************** RELOCATION DIRECTIVES **********************/
2308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct external_reloc {
2328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  char r_vaddr[4];
2338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  char r_symndx[4];
2348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  char r_type[2];
2358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
2368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RELOC struct external_reloc
2388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RELSZ 10
2398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* end of coff/i386.h */
2418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* PE COFF header information */
2438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef _PE_H
2458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define _PE_H
2468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* NT specific file attributes */
2488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_FILE_RELOCS_STRIPPED           0x0001
2498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_FILE_EXECUTABLE_IMAGE          0x0002
2508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_FILE_LINE_NUMS_STRIPPED        0x0004
2518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_FILE_LOCAL_SYMS_STRIPPED       0x0008
2528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_FILE_BYTES_REVERSED_LO         0x0080
2538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_FILE_32BIT_MACHINE             0x0100
2548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_FILE_DEBUG_STRIPPED            0x0200
2558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_FILE_SYSTEM                    0x1000
2568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_FILE_DLL                       0x2000
2578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_FILE_BYTES_REVERSED_HI         0x8000
2588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* additional flags to be set for section headers to allow the NT loader to
2608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   read and write to the section data (to replace the addresses of data in
2618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   dlls for one thing); also to execute the section in .text's case=
2628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
2638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000
2648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_MEM_EXECUTE     0x20000000
2658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_MEM_READ        0x40000000
2668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_MEM_WRITE       0x80000000
2678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
2698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Section characteristics added for ppc-nt
2708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
2718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_TYPE_NO_PAD                0x00000008  /* Reserved.  */
2738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_CNT_CODE                   0x00000020  /* Section contains code. */
2758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_CNT_INITIALIZED_DATA       0x00000040  /* Section contains initialized data. */
2768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_CNT_UNINITIALIZED_DATA     0x00000080  /* Section contains uninitialized data. */
2778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_LNK_OTHER                  0x00000100  /* Reserved.  */
2798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_LNK_INFO                   0x00000200  /* Section contains comments or some other type of information. */
2808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_LNK_REMOVE                 0x00000800  /* Section contents will not become part of image. */
2818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_LNK_COMDAT                 0x00001000  /* Section contents comdat. */
2828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_MEM_FARDATA                0x00008000
2848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_MEM_PURGEABLE              0x00020000
2868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_MEM_16BIT                  0x00020000
2878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_MEM_LOCKED                 0x00040000
2888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_MEM_PRELOAD                0x00080000
2898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_ALIGN_1BYTES               0x00100000
2918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_ALIGN_2BYTES               0x00200000
2928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_ALIGN_4BYTES               0x00300000
2938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_ALIGN_8BYTES               0x00400000
2948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_ALIGN_16BYTES              0x00500000  /* Default alignment if no others are specified. */
2958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_ALIGN_32BYTES              0x00600000
2968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_ALIGN_64BYTES              0x00700000
2978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_LNK_NRELOC_OVFL            0x01000000  /* Section contains extended relocations. */
3008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_MEM_NOT_CACHED             0x04000000  /* Section is not cachable.               */
3018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_MEM_NOT_PAGED              0x08000000  /* Section is not pageable.               */
3028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_SCN_MEM_SHARED                 0x10000000  /* Section is shareable.                  */
3038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* COMDAT selection codes.  */
3058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_COMDAT_SELECT_NODUPLICATES     (1) /* Warn if duplicates.  */
3078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_COMDAT_SELECT_ANY		     (2) /* No warning.  */
3088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_COMDAT_SELECT_SAME_SIZE	     (3) /* Warn if different size.  */
3098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_COMDAT_SELECT_EXACT_MATCH	     (4) /* Warn if different.  */
3108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IMAGE_COMDAT_SELECT_ASSOCIATIVE	     (5) /* Base on other section.  */
3118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Magic values that are true for all dos/nt implementations */
3138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DOSMAGIC       0x5a4d
3148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NT_SIGNATURE   0x00004550
3158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* NT allows long filenames, we want to accommodate this.  This may break
3178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     some of the bfd functions */
3188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef  FILNMLEN
3198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define FILNMLEN	18	/* # characters in a file name		*/
3208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef COFF_IMAGE_WITH_PE
3238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The filehdr is only weired in images */
3248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef FILHDR
3268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct external_PE_filehdr
3278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
3288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* DOS header fields */
3298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_magic;	/* Magic number, 0x5a4d */
3308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_cblp;	/* Bytes on last page of file, 0x90 */
3318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_cp;		/* Pages in file, 0x3 */
3328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_crlc;	/* Relocations, 0x0 */
3338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_cparhdr;	/* Size of header in paragraphs, 0x4 */
3348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_minalloc;	/* Minimum extra paragraphs needed, 0x0 */
3358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_maxalloc;	/* Maximum extra paragraphs needed, 0xFFFF */
3368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_ss;		/* Initial (relative) SS value, 0x0 */
3378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_sp;		/* Initial SP value, 0xb8 */
3388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_csum;	/* Checksum, 0x0 */
3398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_ip;		/* Initial IP value, 0x0 */
3408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_cs;		/* Initial (relative) CS value, 0x0 */
3418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_lfarlc;	/* File address of relocation table, 0x40 */
3428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_ovno;	/* Overlay number, 0x0 */
3438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  char e_res[4][2];		/* Reserved words, all 0x0 */
3448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_oemid;	/* OEM identifier (for e_oeminfo), 0x0 */
3458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short e_oeminfo;	/* OEM information; e_oemid specific, 0x0 */
3468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  char e_res2[10][2];		/* Reserved words, all 0x0 */
3478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong e_lfanew;	/* File address of new exe header, 0x80 */
3488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  char dos_message[16][4];	/* other stuff, always follow DOS header */
3498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned int nt_signature;	/* required NT signature, 0x4550 */
3508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* From standard header */
3528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short f_magic;	/* magic number			*/
3548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short f_nscns;	/* number of sections		*/
3558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong f_timdat;	/* time & date stamp		*/
3568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong f_symptr;	/* file pointer to symtab	*/
3578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong f_nsyms;	/* number of symtab entries	*/
3588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short f_opthdr;	/* sizeof(optional hdr)		*/
3598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short f_flags;	/* flags			*/
3608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
3618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define FILHDR struct external_PE_filehdr
3648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef FILHSZ
3658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define FILHSZ 152
3668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
3688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct
3708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
3718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short magic;		/* type of file				*/
3728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short vstamp;	/* version stamp			*/
3738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong	tsize;		/* text size in bytes, padded to FW bdry*/
3748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong	dsize;		/* initialized data "  "		*/
3758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong	bsize;		/* uninitialized data "   "		*/
3768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong	entry;		/* entry pt.				*/
3778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong text_start;	/* base of text used for this file */
3788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong data_start;	/* base of all data used for this file */
3798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* NT extra fields; see internal.h for descriptions */
3818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong  ImageBase;
3828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong  SectionAlignment;
3838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong  FileAlignment;
3848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short  MajorOperatingSystemVersion;
3858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short  MinorOperatingSystemVersion;
3868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short  MajorImageVersion;
3878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short  MinorImageVersion;
3888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short  MajorSubsystemVersion;
3898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short  MinorSubsystemVersion;
3908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  char  Reserved1[4];
3918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong  SizeOfImage;
3928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong  SizeOfHeaders;
3938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong  CheckSum;
3948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short Subsystem;
3958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned short DllCharacteristics;
3968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong  SizeOfStackReserve;
3978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong  SizeOfStackCommit;
3988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong  SizeOfHeapReserve;
3998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong  SizeOfHeapCommit;
4008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong  LoaderFlags;
4018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  host_ulong  NumberOfRvaAndSizes;
4028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; */
4038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  char  DataDirectory[16][2][4]; /* 16 entries, 2 elements/entry, 4 chars */
4048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} PEAOUTHDR;
4068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef AOUTSZ
4098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AOUTSZ (AOUTHDRSZ + 196)
4108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef  E_FILNMLEN
4128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define E_FILNMLEN	18	/* # characters in a file name		*/
4138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
4148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* end of coff/pe.h */
4168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_NON		(0)	/* no derived type */
4188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_PTR		(1)	/* pointer */
4198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_FCN		(2)	/* function */
4208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DT_ARY		(3)	/* array */
4218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ISPTR(x)	(((x) & N_TMASK) == (DT_PTR << N_BTSHFT))
4238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ISFCN(x)	(((x) & N_TMASK) == (DT_FCN << N_BTSHFT))
4248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ISARY(x)	(((x) & N_TMASK) == (DT_ARY << N_BTSHFT))
4258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef __cplusplus
4278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
4288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
4298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* _A_OUT_H_ */
431