elf.h revision 6cdeb5234d7f4523fe9d83974f265d80f10512a6
1/* 2 * Copyright (C) 2008 The Android Open Source Project 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 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in 12 * the documentation and/or other materials provided with the 13 * distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 18 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 19 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 22 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 23 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 24 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 25 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 * SUCH DAMAGE. 27 */ 28#ifndef _ELF_H 29#define _ELF_H 30 31#include <linux/auxvec.h> 32#include <linux/elf.h> 33#include <linux/elf-em.h> 34 35#include <machine/elf_machdep.h> 36 37typedef struct { 38 __u32 a_type; 39 union { 40 __u32 a_val; 41 } a_un; 42} Elf32_auxv_t; 43 44typedef struct { 45 __u64 a_type; 46 union { 47 __u64 a_val; 48 } a_un; 49} Elf64_auxv_t; 50 51#define DF_ORIGIN 0x00000001 52#define DF_SYMBOLIC 0x00000002 53#define DF_TEXTREL 0x00000004 54#define DF_BIND_NOW 0x00000008 55#define DF_STATIC_TLS 0x00000010 56 57#define DF_1_NOW 0x00000001 // Perform complete relocation processing. 58#define DF_1_GLOBAL 0x00000002 // implies RTLD_GLOBAL 59#define DF_1_GROUP 0x00000004 60#define DF_1_NODELETE 0x00000008 // implies RTLD_NODELETE 61#define DF_1_LOADFLTR 0x00000010 62#define DF_1_INITFIRST 0x00000020 63#define DF_1_NOOPEN 0x00000040 // Object can not be used with dlopen(3) 64#define DF_1_ORIGIN 0x00000080 65#define DF_1_DIRECT 0x00000100 66#define DF_1_TRANS 0x00000200 67#define DF_1_INTERPOSE 0x00000400 68#define DF_1_NODEFLIB 0x00000800 69#define DF_1_NODUMP 0x00001000 // Object cannot be dumped with dldump(3) 70#define DF_1_CONFALT 0x00002000 71#define DF_1_ENDFILTEE 0x00004000 72#define DF_1_DISPRELDNE 0x00008000 73#define DF_1_DISPRELPND 0x00010000 74#define DF_1_NODIRECT 0x00020000 75#define DF_1_IGNMULDEF 0x00040000 // Internal use 76#define DF_1_NOKSYMS 0x00080000 // Internal use 77#define DF_1_NOHDR 0x00100000 // Internal use 78#define DF_1_EDITED 0x00200000 79#define DF_1_NORELOC 0x00400000 // Internal use 80#define DF_1_SYMINTPOSE 0x00800000 81#define DF_1_GLOBAUDIT 0x01000000 82#define DF_1_SINGLETON 0x02000000 83#define DF_1_STUB 0x04000000 84#define DF_1_PIE 0x08000000 85 86#define DT_BIND_NOW 24 87#define DT_INIT_ARRAY 25 88#define DT_FINI_ARRAY 26 89#define DT_INIT_ARRAYSZ 27 90#define DT_FINI_ARRAYSZ 28 91#define DT_RUNPATH 29 92#define DT_FLAGS 30 93/* glibc and BSD disagree for DT_ENCODING; glibc looks wrong. */ 94#define DT_PREINIT_ARRAY 32 95#define DT_PREINIT_ARRAYSZ 33 96 97#define ELFOSABI_SYSV 0 /* Synonym for ELFOSABI_NONE used by valgrind. */ 98 99#define PT_GNU_RELRO 0x6474e552 100 101#define STB_LOOS 10 102#define STB_HIOS 12 103#define STB_LOPROC 13 104#define STB_HIPROC 15 105 106#define STT_GNU_IFUNC 10 107#define STT_LOOS 10 108#define STT_HIOS 12 109#define STT_LOPROC 13 110#define STT_HIPROC 15 111 112#endif /* _ELF_H */ 113