ReactOS
0.4.15-dev-7924-g5949c20
elf-powerpc.h
Go to the documentation of this file.
1
/*-
2
* Copyright (c) 1996-1997 John D. Polstra.
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
*
14
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24
* SUCH DAMAGE.
25
*
26
* $FreeBSD: src/sys/powerpc/include/elf.h,v 1.16 2004/08/02 19:12:17 dfr Exp $
27
*/
28
29
#ifndef _MACHINE_ELF_H_
30
#define _MACHINE_ELF_H_ 1
31
32
/*
33
* ELF definitions for the powerpc architecture.
34
*/
35
36
#ifdef _REACTOS_ELF_MACHINE_IS_TARGET
37
38
#ifndef __ELF_WORD_SIZE
39
#define __ELF_WORD_SIZE 32
/* Used by <elf/generic.h> */
40
#endif
41
42
#include <
elf/generic.h
>
43
44
#define ELF_ARCH EM_386
45
46
#define ELF_MACHINE_OK(x) ((x) == EM_386 || (x) == EM_486)
47
48
/*
49
* Auxiliary vector entries for passing information to the interpreter.
50
*
51
* The powerpc supplement to the SVR4 ABI specification names this "auxv_t",
52
* but POSIX lays claim to all symbols ending with "_t".
53
*/
54
55
typedef
struct
{
/* Auxiliary vector entry on initial stack */
56
int
a_type;
/* Entry type. */
57
union
{
58
long
a_val;
/* Integer value. */
59
void
*a_ptr;
/* Address. */
60
void
(*a_fcn)(
void
);
/* Function pointer (not used). */
61
} a_un;
62
} Elf32_Auxinfo;
63
64
#if __ELF_WORD_SIZE == 64
65
/* Fake for amd64 loader support */
66
typedef
struct
{
67
int
fake;
68
} Elf64_Auxinfo;
69
#endif
70
71
__ElfType
(Auxinfo);
72
73
/* Values for a_type. */
74
#define AT_NULL 0
/* Terminates the vector. */
75
#define AT_IGNORE 1
/* Ignored entry. */
76
#define AT_EXECFD 2
/* File descriptor of program to load. */
77
#define AT_PHDR 3
/* Program header of program already loaded. */
78
#define AT_PHENT 4
/* Size of each program header entry. */
79
#define AT_PHNUM 5
/* Number of program header entries. */
80
#define AT_PAGESZ 6
/* Page size in bytes. */
81
#define AT_BASE 7
/* Interpreter's base address. */
82
#define AT_FLAGS 8
/* Flags (unused for powerpc). */
83
#define AT_ENTRY 9
/* Where interpreter should transfer control. */
84
85
/*
86
* The following non-standard values are used for passing information
87
* from John Polstra's testbed program to the dynamic linker. These
88
* are expected to go away soon.
89
*
90
* Unfortunately, these overlap the Linux non-standard values, so they
91
* must not be used in the same context.
92
*/
93
#define AT_BRK 10
/* Starting point for sbrk and brk. */
94
#define AT_DEBUG 11
/* Debugging level. */
95
96
/*
97
* The following non-standard values are used in Linux ELF binaries.
98
*/
99
#define AT_NOTELF 10
/* Program is not ELF ?? */
100
#define AT_UID 11
/* Real uid. */
101
#define AT_EUID 12
/* Effective uid. */
102
#define AT_GID 13
/* Real gid. */
103
#define AT_EGID 14
/* Effective gid. */
104
105
#define AT_COUNT 15
/* Count of defined aux entry types. */
106
107
/* Define "machine" characteristics */
108
#define ELF_TARG_CLASS ELFCLASS32
109
#define ELF_TARG_DATA ELFDATA2LSB
110
#define ELF_TARG_MACH EM_386
111
#define ELF_TARG_VER 1
112
113
#endif
/* _REACTOS_ELF_MACHINE_IS_TARGET */
114
115
/*
116
* Relocation types.
117
*/
118
119
#define R_PPC_NONE 0
120
#define R_PPC_ADDR32 1
121
#define R_PPC_ADDR24 2
122
#define R_PPC_ADDR16 3
123
#define R_PPC_ADDR16_LO 4
124
#define R_PPC_ADDR16_HI 5
125
#define R_PPC_ADDR16_HA 6
126
#define R_PPC_ADDR14 7
127
#define R_PPC_ADDR14_BRTAKEN 8
128
#define R_PPC_ADDR14_BRNTAKEN 9
129
#define R_PPC_REL24 10
130
#define R_PPC_REL14 11
131
#define R_PPC_REL14_BRTAKEN 12
132
#define R_PPC_REL14_BRNTAKEN 13
133
#define R_PPC_GOT16 14
134
#define R_PPC_GOT16_LO 15
135
#define R_PPC_GOT16_HI 16
136
#define R_PPC_GOT16_HA 17
137
#define R_PPC_PLTREL24 18
138
#define R_PPC_COPY 19
139
#define R_PPC_GLOB_DAT 20
140
#define R_PPC_JMP_SLOT 21
141
#define R_PPC_RELATIVE 22
142
#define R_PPC_LOCAL24PC 23
143
#define R_PPC_UADDR32 24
144
#define R_PPC_UADDR16 25
145
#define R_PPC_REL32 26
146
#define R_PPC_PLT32 27
147
#define R_PPC_PLTREL32 28
148
#define R_PPC_PLT16_LO 29
149
#define R_PPC_PLT16_HI 30
150
#define R_PPC_PLT16_HA 31
151
#define R_PPC_SDAREL16 32
152
#define R_PPC_SECTOFF 33
153
#define R_PPC_SECTOFF_LO 34
154
#define R_PPC_SECTOFF_HI 35
155
#define R_PPC_SECTOFF_HA 36
156
#define R_PPC_COUNT 37
157
158
#endif
/* !_MACHINE_ELF_H_ */
generic.h
__ElfType
#define __ElfType(x)
Definition:
generic.h:63
void
Definition:
nsiface.idl:2307
sdk
include
reactos
elf
elf-powerpc.h
Generated on Fri Apr 19 2024 06:12:17 for ReactOS by
1.9.6