1 .\" Copyright (c) 2006,2007 Joseph Koshy. All rights reserved.
3 .\" Redistribution and use in source and binary forms, with or without
4 .\" modification, are permitted provided that the following conditions
6 .\" 1. Redistributions of source code must retain the above copyright
7 .\" notice, this list of conditions and the following disclaimer.
8 .\" 2. Redistributions in binary form must reproduce the above copyright
9 .\" notice, this list of conditions and the following disclaimer in the
10 .\" documentation and/or other materials provided with the distribution.
12 .\" This software is provided by Joseph Koshy ``as is'' and
13 .\" any express or implied warranties, including, but not limited to, the
14 .\" implied warranties of merchantability and fitness for a particular purpose
15 .\" are disclaimed. in no event shall Joseph Koshy be liable
16 .\" for any direct, indirect, incidental, special, exemplary, or consequential
17 .\" damages (including, but not limited to, procurement of substitute goods
18 .\" or services; loss of use, data, or profits; or business interruption)
19 .\" however caused and on any theory of liability, whether in contract, strict
20 .\" liability, or tort (including negligence or otherwise) arising in any way
21 .\" out of the use of this software, even if advised of the possibility of
33 .Nd retrieve or allocate the object file header
39 .Fn elf32_newehdr "Elf *elf"
41 .Fn elf64_newehdr "Elf *elf"
44 .Fn gelf_newehdr "Elf *elf" "int elfclass"
46 These functions retrieve the ELF header from the ELF descriptor
48 allocating a new header if needed.
49 File data structures are translated to their in-memory representations
55 returns a pointer to a 32 bit
60 returns a pointer to a 64 bit
70 returns the value returned by
71 .Fn elf32_newehdr "elf" .
76 it returns the value returned by
77 .Fn elf64_newehdr "elf" .
79 If a fresh header structure is allocated, the members of the
80 structure are initialized as follows:
81 .Bl -tag -width indent
82 .It Va "e_ident[EI_MAG0..EI_MAG3]"
83 Identification bytes at offsets
89 are set to the ELF signature.
90 .It Va "e_ident[EI_CLASS]"
91 The identification byte at offset
93 is set to the ELF class associated with the function being called
98 .It Va "e_ident[EI_DATA]"
99 The identification byte at offset
103 .It Va "e_ident[EI_VERSION]"
104 The identification byte at offset
106 is set to the ELF library's operating version set by a prior call to
115 is set to the ELF library's operating version set by a prior call to
119 Other members of the header are set to zero.
120 The application is responsible for changing these values
121 as needed before calling
124 If successful, these three functions set the
126 flag on ELF descriptor
129 These functions return a pointer to a translated header descriptor
130 if successful, or NULL on failure.
132 These functions can fail with the following errors:
133 .Bl -tag -width "[ELF_E_RESOURCE]"
134 .It Bq Er ELF_E_ARGUMENT
138 .It Bq Er ELF_E_ARGUMENT
141 was not a descriptor for an ELF object.
142 .It Bq Er ELF_E_ARGUMENT
145 had an unsupported value.
146 .It Bq Er ELF_E_ARGUMENT
147 The class of the ELF descriptor
149 did not match that of the requested operation.
150 .It Bq Er ELF_E_ARGUMENT
153 the class of argument
157 and did not match the argument
159 .It Bq Er ELF_E_CLASS
160 The ELF class of descriptor
162 did not match that of the API function being called.
163 .It Bq Er ELF_E_HEADER
164 A malformed ELF header was detected.
165 .It Bq Er ELF_E_RESOURCE
166 An out of memory condition was detected during execution.
167 .It Bq Er ELF_E_SECTION
168 The ELF descriptor in argument
170 did not adhere to the conventions used for extended numbering.
171 .It Bq Er ELF_E_VERSION
174 had an unsupported ELF version number.
178 .Xr elf32_getehdr 3 ,
179 .Xr elf64_getehdr 3 ,