Line 1... |
Line 1... |
/* ELF support for BFD.
|
/* ELF support for BFD.
|
Copyright 1991, 1992, 1993, 1994, 1995, 1997, 1998, 2000, 2001, 2002,
|
Copyright 1991, 1992, 1993, 1994, 1995, 1997, 1998, 2000, 2001, 2002,
|
2003, 2006, 2007 Free Software Foundation, Inc.
|
2003, 2006, 2007, 2008 Free Software Foundation, Inc.
|
|
|
Written by Fred Fish @ Cygnus Support, from information published
|
Written by Fred Fish @ Cygnus Support, from information published
|
in "UNIX System V Release 4, Programmers Guide: ANSI C and
|
in "UNIX System V Release 4, Programmers Guide: ANSI C and
|
Programming Support Tools".
|
Programming Support Tools".
|
|
|
Line 35... |
Line 35... |
packing under various circumstances. */
|
packing under various circumstances. */
|
|
|
#ifndef _ELF_INTERNAL_H
|
#ifndef _ELF_INTERNAL_H
|
#define _ELF_INTERNAL_H
|
#define _ELF_INTERNAL_H
|
|
|
|
/* Special section indices, which may show up in st_shndx fields, among
|
|
other places. */
|
|
|
|
#undef SHN_UNDEF
|
|
#undef SHN_LORESERVE
|
|
#undef SHN_LOPROC
|
|
#undef SHN_HIPROC
|
|
#undef SHN_LOOS
|
|
#undef SHN_HIOS
|
|
#undef SHN_ABS
|
|
#undef SHN_COMMON
|
|
#undef SHN_XINDEX
|
|
#undef SHN_HIRESERVE
|
|
#define SHN_UNDEF 0 /* Undefined section reference */
|
|
#define SHN_LORESERVE (-0x100u) /* Begin range of reserved indices */
|
|
#define SHN_LOPROC (-0x100u) /* Begin range of appl-specific */
|
|
#define SHN_HIPROC (-0xE1u) /* End range of appl-specific */
|
|
#define SHN_LOOS (-0xE0u) /* OS specific semantics, lo */
|
|
#define SHN_HIOS (-0xC1u) /* OS specific semantics, hi */
|
|
#define SHN_ABS (-0xFu) /* Associated symbol is absolute */
|
|
#define SHN_COMMON (-0xEu) /* Associated symbol is in common */
|
|
#define SHN_XINDEX (-0x1u) /* Section index is held elsewhere */
|
|
#define SHN_HIRESERVE (-0x1u) /* End range of reserved indices */
|
|
#define SHN_BAD (-0x101u) /* Used internally by bfd */
|
|
|
/* ELF Header */
|
/* ELF Header */
|
|
|
#define EI_NIDENT 16 /* Size of e_ident[] */
|
#define EI_NIDENT 16 /* Size of e_ident[] */
|
|
|
typedef struct elf_internal_ehdr {
|
typedef struct elf_internal_ehdr {
|
Line 78... |
Line 103... |
typedef struct elf_internal_shdr {
|
typedef struct elf_internal_shdr {
|
unsigned int sh_name; /* Section name, index in string tbl */
|
unsigned int sh_name; /* Section name, index in string tbl */
|
unsigned int sh_type; /* Type of section */
|
unsigned int sh_type; /* Type of section */
|
bfd_vma sh_flags; /* Miscellaneous section attributes */
|
bfd_vma sh_flags; /* Miscellaneous section attributes */
|
bfd_vma sh_addr; /* Section virtual addr at execution */
|
bfd_vma sh_addr; /* Section virtual addr at execution */
|
|
file_ptr sh_offset; /* Section file offset */
|
bfd_size_type sh_size; /* Size of section in bytes */
|
bfd_size_type sh_size; /* Size of section in bytes */
|
|
unsigned int sh_link; /* Index of another section */
|
|
unsigned int sh_info; /* Additional section information */
|
|
bfd_vma sh_addralign; /* Section alignment */
|
bfd_size_type sh_entsize; /* Entry size if section holds table */
|
bfd_size_type sh_entsize; /* Entry size if section holds table */
|
unsigned long sh_link; /* Index of another section */
|
|
unsigned long sh_info; /* Additional section information */
|
|
file_ptr sh_offset; /* Section file offset */
|
|
unsigned int sh_addralign; /* Section alignment */
|
|
|
|
/* The internal rep also has some cached info associated with it. */
|
/* The internal rep also has some cached info associated with it. */
|
asection * bfd_section; /* Associated BFD section. */
|
asection * bfd_section; /* Associated BFD section. */
|
unsigned char *contents; /* Section contents. */
|
unsigned char *contents; /* Section contents. */
|
} Elf_Internal_Shdr;
|
} Elf_Internal_Shdr;
|
Line 239... |
Line 264... |
bfd_vma p_vaddr_offset;
|
bfd_vma p_vaddr_offset;
|
/* Program segment alignment. */
|
/* Program segment alignment. */
|
bfd_vma p_align;
|
bfd_vma p_align;
|
/* Segment size in file and memory */
|
/* Segment size in file and memory */
|
bfd_vma p_size;
|
bfd_vma p_size;
|
|
/* Required size of filehdr + phdrs, if non-zero */
|
|
bfd_vma header_size;
|
/* Whether the p_flags field is valid; if not, the flags are based
|
/* Whether the p_flags field is valid; if not, the flags are based
|
on the section flags. */
|
on the section flags. */
|
unsigned int p_flags_valid : 1;
|
unsigned int p_flags_valid : 1;
|
/* Whether the p_paddr field is valid; if not, the physical address
|
/* Whether the p_paddr field is valid; if not, the physical address
|
is based on the section lma values. */
|
is based on the section lma values. */
|