From 0c0d2918393ab9c576c58d1c698d282abf36f656 Mon Sep 17 00:00:00 2001 From: Christos Zoulas <christos@zoulas.com> Date: Sat, 5 Oct 1996 18:13:09 +0000 Subject: [PATCH] *** empty log message *** --- src/readelf.h | 70 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/src/readelf.h b/src/readelf.h index 78a34c1c..08f9ccc3 100644 --- a/src/readelf.h +++ b/src/readelf.h @@ -1,6 +1,6 @@ /* * readelf.h - * @(#)$Id: readelf.h,v 1.1 1996/06/22 22:04:22 christos Exp $ + * @(#)$Id: readelf.h,v 1.2 1996/10/05 18:13:09 christos Exp $ * * Provide elf data structures for non-elf machines, allowing file * non-elf hosts to determine if an elf binary is stripped. @@ -15,9 +15,16 @@ typedef unsigned int Elf32_Off; typedef unsigned int Elf32_Word; typedef unsigned char Elf32_Char; +/* XXX: We need 64 bit numbers here */ +typedef unsigned int Elf64_Addr[2]; +typedef unsigned short Elf64_Half; +typedef unsigned int Elf64_Off[2]; +typedef unsigned int Elf64_Word; +typedef unsigned char Elf64_Char; + #define EI_NIDENT 16 -typedef struct elfhdr{ +typedef struct { Elf32_Char e_ident[EI_NIDENT]; Elf32_Half e_type; Elf32_Half e_machine; @@ -34,14 +41,40 @@ typedef struct elfhdr{ Elf32_Half e_shstrndx; } Elf32_Ehdr; +typedef struct { + Elf64_Char e_ident[EI_NIDENT]; + Elf64_Half e_type; + Elf64_Half e_machine; + Elf64_Word e_version; + Elf64_Addr e_entry; /* Entry point */ + Elf64_Off e_phoff; + Elf64_Off e_shoff; + Elf64_Word e_flags; + Elf64_Half e_ehsize; + Elf64_Half e_phentsize; + Elf64_Half e_phnum; + Elf64_Half e_shentsize; + Elf64_Half e_shnum; + Elf64_Half e_shstrndx; +} Elf64_Ehdr; + +/* e_type */ +#define ET_CORE 4 + /* sh_type */ #define SHT_SYMTAB 2 +#define SHT_NOTE 7 /* elf type */ #define ELFDATANONE 0 /* e_ident[EI_DATA] */ #define ELFDATA2LSB 1 #define ELFDATA2MSB 2 +/* elf class */ +#define ELFCLASSNONE 0 +#define ELFCLASS32 1 +#define ELFCLASS64 2 + /* magic number */ #define EI_MAG0 0 /* e_ident[] indexes */ #define EI_MAG1 1 @@ -58,6 +91,26 @@ typedef struct elfhdr{ #define ELFMAG3 'F' #define ELFMAG "\177ELF" +typedef struct { + Elf32_Word p_type; + Elf32_Off p_offset; + Elf32_Addr p_vaddr; + Elf32_Addr p_paddr; + Elf32_Word p_filesz; + Elf32_Word p_memsz; + Elf32_Word p_flags; + Elf32_Word p_align; +} Elf32_Phdr; + +#define PT_NULL 0 /* p_type */ +#define PT_LOAD 1 +#define PT_DYNAMIC 2 +#define PT_INTERP 3 +#define PT_NOTE 4 +#define PT_SHLIB 5 +#define PT_PHDR 6 +#define PT_NUM 7 + typedef struct { Elf32_Word sh_name; Elf32_Word sh_type; @@ -71,4 +124,17 @@ typedef struct { Elf32_Word sh_entsize; } Elf32_Shdr; +typedef struct { + Elf64_Word sh_name; + Elf64_Word sh_type; + Elf64_Off sh_flags; + Elf64_Addr sh_addr; + Elf64_Off sh_offset; + Elf64_Off sh_size; + Elf64_Word sh_link; + Elf64_Word sh_info; + Elf64_Off sh_addralign; + Elf64_Off sh_entsize; +} Elf64_Shdr; + #endif -- 2.40.0