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 37 typedef struct { 38 __u32 a_type; 39 union { 40 __u32 a_val; 41 } a_un; 42 } Elf32_auxv_t; 43 44 typedef 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