111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************************
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   This header was automatically generated from a Linux kernel header
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   of the same name, to make information necessary for userspace to
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   call into the kernel available to libc.  It contains only constants,
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   structures, and macros generated from the original header, and thus,
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   contains no copyrightable information.
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef __A_OUT_GNU_H__
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define __A_OUT_GNU_H__
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define __GNU_EXEC_MACROS__
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef __STRUCT_EXEC_OVERRIDE__
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <asm/a.out.h>
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum machine_type {
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef M_OLDSUN2
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert M__OLDSUN2 = M_OLDSUN2,
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert M_OLDSUN2 = 0,
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef M_68010
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert M__68010 = M_68010,
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert M_68010 = 1,
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef M_68020
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert M__68020 = M_68020,
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert M_68020 = 2,
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef M_SPARC
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert M__SPARC = M_SPARC,
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert M_SPARC = 3,
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert M_386 = 100,
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert M_MIPS1 = 151,
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert M_MIPS2 = 152
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_MAGIC
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_MAGIC(exec) ((exec).a_info & 0xffff)
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff))
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff)
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_SET_INFO(exec, magic, type, flags)   ((exec).a_info = ((magic) & 0xffff)   | (((int)(type) & 0xff) << 16)   | (((flags) & 0xff) << 24))
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_SET_MAGIC(exec, magic)   ((exec).a_info = (((exec).a_info & 0xffff0000) | ((magic) & 0xffff)))
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_SET_MACHTYPE(exec, machtype)   ((exec).a_info =   ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16))
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_SET_FLAGS(exec, flags)   ((exec).a_info =   ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24))
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define OMAGIC 0407
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NMAGIC 0410
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ZMAGIC 0413
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define QMAGIC 0314
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CMAGIC 0421
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_BADMAG
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_BADMAG(x) (N_MAGIC(x) != OMAGIC   && N_MAGIC(x) != NMAGIC   && N_MAGIC(x) != ZMAGIC   && N_MAGIC(x) != QMAGIC)
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _N_HDROFF(x) (1024 - sizeof (struct exec))
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_TXTOFF
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_TXTOFF(x)   (N_MAGIC(x) == ZMAGIC ? _N_HDROFF((x)) + sizeof (struct exec) :   (N_MAGIC(x) == QMAGIC ? 0 : sizeof (struct exec)))
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_DATOFF
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_DATOFF(x) (N_TXTOFF(x) + (x).a_text)
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_TRELOFF
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_TRELOFF(x) (N_DATOFF(x) + (x).a_data)
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_DRELOFF
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_DRELOFF(x) (N_TRELOFF(x) + N_TRSIZE(x))
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_SYMOFF
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_SYMOFF(x) (N_DRELOFF(x) + N_DRSIZE(x))
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_STROFF
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_STROFF(x) (N_SYMOFF(x) + N_SYMSIZE(x))
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_TXTADDR
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_TXTADDR(x) (N_MAGIC(x) == QMAGIC ? PAGE_SIZE : 0)
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined(vax) || defined(hp300) || defined(pyr)
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SEGMENT_SIZE page_size
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef sony
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SEGMENT_SIZE 0x2000
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef is68k
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SEGMENT_SIZE 0x20000
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined(m68k) && defined(PORTAR)
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define PAGE_SIZE 0x400
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SEGMENT_SIZE PAGE_SIZE
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef linux
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <asm/page.h>
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined(__i386__) || defined(__mc68000__)
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SEGMENT_SIZE 1024
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef SEGMENT_SIZE
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SEGMENT_SIZE PAGE_SIZE
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _N_SEGMENT_ROUND(x) ALIGN(x, SEGMENT_SIZE)
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _N_TXTENDADDR(x) (N_TXTADDR(x)+(x).a_text)
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_DATADDR
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_DATADDR(x)   (N_MAGIC(x)==OMAGIC? (_N_TXTENDADDR(x))   : (_N_SEGMENT_ROUND (_N_TXTENDADDR(x))))
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_BSSADDR
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_BSSADDR(x) (N_DATADDR(x) + (x).a_data)
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_NLIST_DECLARED
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nlist {
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union {
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char *n_name;
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nlist *n_next;
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert long n_strx;
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } n_un;
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char n_type;
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char n_other;
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert short n_desc;
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long n_value;
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_UNDF
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_UNDF 0
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_ABS
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_ABS 2
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_TEXT
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_TEXT 4
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_DATA
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_DATA 6
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_BSS
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_BSS 8
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_FN
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_FN 15
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_EXT
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_EXT 1
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_TYPE
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_TYPE 036
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_STAB
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_STAB 0340
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_INDR 0xa
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_SETA 0x14
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_SETT 0x16
19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_SETD 0x18
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_SETB 0x1A
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define N_SETV 0x1C
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef N_RELOCATION_INFO_DECLARED
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct relocation_info
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int r_address;
20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int r_symbolnum:24;
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int r_pcrel:1;
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int r_length:2;
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int r_extern:1;
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef NS32K
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned r_bsr:1;
21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned r_disp:1;
21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned r_pad:2;
21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int r_pad:4;
21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
221