1#------------------------------------------------------------------------------- 2# elftools: elf/constants.py 3# 4# Constants and flags, placed into classes for namespacing 5# 6# Eli Bendersky (eliben@gmail.com) 7# This code is in the public domain 8#------------------------------------------------------------------------------- 9 10class E_FLAGS(object): 11 """ Flag values for the e_flags field of the ELF header 12 """ 13 EF_ARM_EABIMASK=0xFF000000 14 EF_ARM_EABI_VER1=0x01000000 15 EF_ARM_EABI_VER2=0x02000000 16 EF_ARM_EABI_VER3=0x03000000 17 EF_ARM_EABI_VER4=0x04000000 18 EF_ARM_EABI_VER5=0x05000000 19 EF_ARM_GCCMASK=0x00400FFF 20 EF_ARM_RELEXEC=0x01 21 EF_ARM_HASENTRY=0x02 22 EF_ARM_SYMSARESORTED=0x04 23 EF_ARM_DYNSYMSUSESEGIDX=0x8 24 EF_ARM_MAPSYMSFIRST=0x10 25 EF_ARM_LE8=0x00400000 26 EF_ARM_BE8=0x00800000 27 EF_ARM_ABI_FLOAT_SOFT=0x00000200 28 EF_ARM_ABI_FLOAT_HARD=0x00000400 29 30 EF_MIPS_NOREORDER=1 31 EF_MIPS_PIC=2 32 EF_MIPS_CPIC=4 33 EF_MIPS_XGOT=8 34 EF_MIPS_64BIT_WHIRL=16 35 EF_MIPS_ABI2=32 36 EF_MIPS_ABI_ON32=64 37 EF_MIPS_32BITMODE = 256 38 EF_MIPS_NAN2008=1024 39 EF_MIPS_ARCH=0xf0000000 40 EF_MIPS_ARCH_1=0x00000000 41 EF_MIPS_ARCH_2=0x10000000 42 EF_MIPS_ARCH_3=0x20000000 43 EF_MIPS_ARCH_4=0x30000000 44 EF_MIPS_ARCH_5=0x40000000 45 EF_MIPS_ARCH_32=0x50000000 46 EF_MIPS_ARCH_64=0x60000000 47 EF_MIPS_ARCH_32R2=0x70000000 48 EF_MIPS_ARCH_64R2=0x80000000 49 50 51class E_FLAGS_MASKS(object): 52 """Masks to be used for convenience when working with E_FLAGS 53 54 This is a simplified approach that is also used by GNU binutils 55 readelf 56 """ 57 EFM_MIPS_ABI = 0x0000F000 58 EFM_MIPS_ABI_O32 = 0x00001000 59 EFM_MIPS_ABI_O64 = 0x00002000 60 EFM_MIPS_ABI_EABI32 = 0x00003000 61 EFM_MIPS_ABI_EABI64 = 0x00004000 62 63 64class SHN_INDICES(object): 65 """ Special section indices 66 """ 67 SHN_UNDEF=0 68 SHN_LORESERVE=0xff00 69 SHN_LOPROC=0xff00 70 SHN_HIPROC=0xff1f 71 SHN_ABS=0xfff1 72 SHN_COMMON=0xfff2 73 SHN_HIRESERVE=0xffff 74 SHN_XINDEX=0xffff 75 76 77class SH_FLAGS(object): 78 """ Flag values for the sh_flags field of section headers 79 """ 80 SHF_WRITE=0x1 81 SHF_ALLOC=0x2 82 SHF_EXECINSTR=0x4 83 SHF_MERGE=0x10 84 SHF_STRINGS=0x20 85 SHF_INFO_LINK=0x40 86 SHF_LINK_ORDER=0x80 87 SHF_OS_NONCONFORMING=0x100 88 SHF_GROUP=0x200 89 SHF_TLS=0x400 90 SHF_COMPRESSED=0x800 91 SHF_MASKOS=0x0ff00000 92 SHF_EXCLUDE=0x80000000 93 SHF_MASKPROC=0xf0000000 94 95 96class RH_FLAGS(object): 97 """ Flag values for the DT_MIPS_FLAGS dynamic table entries 98 """ 99 RHF_NONE=0x00000000 100 RHF_QUICKSTART=0x00000001 101 RHF_NOTPOT=0x00000002 102 RHF_NO_LIBRARY_REPLACEMENT=0x00000004 103 RHF_NO_MOVE=0x00000008 104 RHF_SGI_ONLY=0x00000010 105 RHF_GUARANTEE_INIT=0x00000020 106 RHF_DELTA_C_PLUS_PLUS=0x00000040 107 RHF_GUARANTEE_START_INIT=0x00000080 108 RHF_PIXIE=0x00000100 109 RHF_DEFAULT_DELAY_LOAD=0x00000200 110 RHF_REQUICKSTART=0x00000400 111 RHF_REQUICKSTARTED=0x00000800 112 RHF_CORD=0x00001000 113 RHF_NO_UNRES_UNDEF=0x00002000 114 RHF_RLD_ORDER_SAFE=0x00004000 115 116 117class P_FLAGS(object): 118 """ Flag values for the p_flags field of program headers 119 """ 120 PF_X=0x1 121 PF_W=0x2 122 PF_R=0x4 123 PF_MASKOS=0x00FF0000 124 PF_MASKPROC=0xFF000000 125 126 127# symbol info flags for entries 128# in the .SUNW_syminfo section 129class SUNW_SYMINFO_FLAGS(object): 130 """ Flags for the si_flags field of entries 131 in the .SUNW_syminfo section 132 """ 133 SYMINFO_FLG_DIRECT=0x1 134 SYMINFO_FLG_FILTER=0x2 135 SYMINFO_FLG_COPY=0x4 136 SYMINFO_FLG_LAZYLOAD=0x8 137 SYMINFO_FLG_DIRECTBIND=0x10 138 SYMINFO_FLG_NOEXTDIRECT=0x20 139 SYMINFO_FLG_AUXILIARY=0x40 140 SYMINFO_FLG_INTERPOSE=0x80 141 SYMINFO_FLG_CAP=0x100 142 SYMINFO_FLG_DEFERRED=0x200 143 144class VER_FLAGS(object): 145 VER_FLG_BASE=0x1 146 VER_FLG_WEAK=0x2 147 VER_FLG_INFO=0x4 148