'\"macro stdmacro
.if n .pH g3e.elf_getehdr @(#)elf_getehdr	40.12 of 10/27/89
.\" Copyright 1989 AT&T
.\"#ident	"@(#)ci5-doc:req/libelf/getehdr.man	1.3"
.nr X
.if \nX=0 .ds x} elf_getehdr 3E "ELF Library" "\&"
.if \nX=1 .ds x} elf_getehdr 3E "ELF Library"
.if \nX=2 .ds x} elf_getehdr 3E "" "\&"
.if \nX=3 .ds x} elf_getehdr "" "" "\&"
.TH \*(x}
.SH NAME
\f4elf_getehdr\f1: \f4elf32_getehdr\f1, \f4elf32_newehdr\f1 \- retrieve class-dependent object file header
.SH SYNOPSIS
\f4cc\f1
[\f2flag\fP \|.\|.\|.] \f2file\fP \|.\|.\|.
\f4\-lelf\f1
[\f2library\fP \|.\|.\|.]
.PP
.nf
.na
.ft 4
#include <libelf.h>
.sp 0.5
Elf32_Ehdr \(**elf32_getehdr(Elf \(**elf);
.sp 0.5
Elf32_Ehdr \(**elf32_newehdr(Elf \(**elf);
.ft 1
.ad
.fi
.SH DESCRIPTION
For a 32-bit class file,
\f4elf32_getehdr\fP
returns a pointer to an
.SM ELF
header,
if one is available for the
.SM ELF
descriptor
.IR elf .
If no header exists for the descriptor,
\f4elf32_newehdr\fP
allocates a ``clean'' one, but it otherwise behaves the same as
\f4elf32_getehdr\fP.
It does not allocate a new header if one exists already.
If no header exists (for
\f4elf_getehdr\fP),
one cannot be created (for
\f4elf_newehdr\fP),
a system error occurs,
the file is not a 32-bit class file, or
.I elf
is null, both functions return a null pointer.
.P
The header includes the following members.
.P
.RS .5i
.DT
.nf
.ft 4
.ta 8u*\w' 'u +8u*\w' 'u +8u*\w' 'u +8u*\w' 'u +8u*\w' 'u +8u*\w' 'u
.ne 17
	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;
.fi
.RE
.P
\f4elf32_newehdr\fP
automatically sets the
\f4ELF_F_DIRTY\f1
bit [see
\f4elf_flag\fP(3E)].
A program may use
\f4elf_getident\fP
to inspect the identification bytes from a file.
.SH "SEE ALSO"
.na
\f4elf\fP(3E),
\f4elf_begin\fP(3E),
\f4elf_flag\fP(3E),
\f4elf_getident\fP(3E).
