diff options
Diffstat (limited to 'libc/include/elf.h')
-rw-r--r-- | libc/include/elf.h | 109 |
1 files changed, 100 insertions, 9 deletions
diff --git a/libc/include/elf.h b/libc/include/elf.h index 7de464e0f..df768ba52 100644 --- a/libc/include/elf.h +++ b/libc/include/elf.h @@ -48,35 +48,100 @@ typedef struct { } a_un; } Elf64_auxv_t; +typedef Elf32_Half Elf32_Versym; +typedef Elf64_Half Elf64_Versym; + +typedef struct { + Elf32_Half vd_version; + Elf32_Half vd_flags; + Elf32_Half vd_ndx; + Elf32_Half vd_cnt; + Elf32_Word vd_hash; + Elf32_Word vd_aux; + Elf32_Word vd_next; +} Elf32_Verdef; + +typedef struct { + Elf32_Word vda_name; + Elf32_Word vda_next; +} Elf32_Verdaux; + +typedef struct { + Elf64_Half vd_version; + Elf64_Half vd_flags; + Elf64_Half vd_ndx; + Elf64_Half vd_cnt; + Elf64_Word vd_hash; + Elf64_Word vd_aux; + Elf64_Word vd_next; +} Elf64_Verdef; + +typedef struct { + Elf64_Word vda_name; + Elf64_Word vda_next; +} Elf64_Verdaux; + +typedef struct { + Elf32_Half vn_version; + Elf32_Half vn_cnt; + Elf32_Word vn_file; + Elf32_Word vn_aux; + Elf32_Word vn_next; +} Elf32_Verneed; + +typedef struct { + Elf32_Word vna_hash; + Elf32_Half vna_flags; + Elf32_Half vna_other; + Elf32_Word vna_name; + Elf32_Word vna_next; +} Elf32_Vernaux; + +typedef struct { + Elf64_Half vn_version; + Elf64_Half vn_cnt; + Elf64_Word vn_file; + Elf64_Word vn_aux; + Elf64_Word vn_next; +} Elf64_Verneed; + +typedef struct { + Elf64_Word vna_hash; + Elf64_Half vna_flags; + Elf64_Half vna_other; + Elf64_Word vna_name; + Elf64_Word vna_next; +} Elf64_Vernaux; + #define DF_ORIGIN 0x00000001 #define DF_SYMBOLIC 0x00000002 #define DF_TEXTREL 0x00000004 #define DF_BIND_NOW 0x00000008 #define DF_STATIC_TLS 0x00000010 -#define DF_1_NOW 0x00000001 // Perform complete relocation processing. -#define DF_1_GLOBAL 0x00000002 // implies RTLD_GLOBAL +#define DF_1_NOW 0x00000001 /* Perform complete relocation processing. */ +#define DF_1_GLOBAL 0x00000002 /* implies RTLD_GLOBAL */ #define DF_1_GROUP 0x00000004 -#define DF_1_NODELETE 0x00000008 // implies RTLD_NODELETE +#define DF_1_NODELETE 0x00000008 /* implies RTLD_NODELETE */ #define DF_1_LOADFLTR 0x00000010 #define DF_1_INITFIRST 0x00000020 -#define DF_1_NOOPEN 0x00000040 // Object can not be used with dlopen(3) +#define DF_1_NOOPEN 0x00000040 /* Object can not be used with dlopen(3) */ #define DF_1_ORIGIN 0x00000080 #define DF_1_DIRECT 0x00000100 #define DF_1_TRANS 0x00000200 #define DF_1_INTERPOSE 0x00000400 #define DF_1_NODEFLIB 0x00000800 -#define DF_1_NODUMP 0x00001000 // Object cannot be dumped with dldump(3) +#define DF_1_NODUMP 0x00001000 /* Object cannot be dumped with dldump(3) */ #define DF_1_CONFALT 0x00002000 #define DF_1_ENDFILTEE 0x00004000 #define DF_1_DISPRELDNE 0x00008000 #define DF_1_DISPRELPND 0x00010000 #define DF_1_NODIRECT 0x00020000 -#define DF_1_IGNMULDEF 0x00040000 // Internal use -#define DF_1_NOKSYMS 0x00080000 // Internal use -#define DF_1_NOHDR 0x00100000 // Internal use +#define DF_1_IGNMULDEF 0x00040000 /* Internal use */ +#define DF_1_NOKSYMS 0x00080000 /* Internal use */ +#define DF_1_NOHDR 0x00100000 /* Internal use */ #define DF_1_EDITED 0x00200000 -#define DF_1_NORELOC 0x00400000 // Internal use +#define DF_1_NORELOC 0x00400000 /* Internal use */ #define DF_1_SYMINTPOSE 0x00800000 #define DF_1_GLOBAUDIT 0x01000000 #define DF_1_SINGLETON 0x02000000 @@ -94,6 +159,16 @@ typedef struct { #define DT_PREINIT_ARRAY 32 #define DT_PREINIT_ARRAYSZ 33 +/* Android compressed rel/rela sections */ +#define DT_ANDROID_REL (DT_LOOS + 2) +#define DT_ANDROID_RELSZ (DT_LOOS + 3) + +#define DT_ANDROID_RELA (DT_LOOS + 4) +#define DT_ANDROID_RELASZ (DT_LOOS + 5) + +/* gnu hash entry */ +#define DT_GNU_HASH 0x6ffffef5 + #define ELFOSABI_SYSV 0 /* Synonym for ELFOSABI_NONE used by valgrind. */ #define PT_GNU_RELRO 0x6474e552 @@ -103,10 +178,26 @@ typedef struct { #define STB_LOPROC 13 #define STB_HIPROC 15 +#define SHT_LOOS 0x60000000 +#define SHT_HIOS 0x6fffffff + #define STT_GNU_IFUNC 10 #define STT_LOOS 10 #define STT_HIOS 12 #define STT_LOPROC 13 #define STT_HIPROC 15 +/* The kernel uses NT_PRFPREG but glibc also offers NT_FPREGSET */ +#define NT_FPREGSET NT_PRFPREG + +#define ELF_NOTE_GNU "GNU" + +#define NT_GNU_BUILD_ID 3 + +#define VER_FLG_BASE 0x1 +#define VER_FLG_WEAK 0x2 + +#define VER_NDX_LOCAL 0 +#define VER_NDX_GLOBAL 1 + #endif /* _ELF_H */ |