1 #ifndef _BITS_ELF_H 2 #define _BITS_ELF_H 3 #define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4) 4 #define ELF32_ST_TYPE(val) ((val) & 0xf) 5 #define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) 6 7 #define ELF64_ST_BIND(val) ELF32_ST_BIND (val) 8 #define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val) 9 #define ELF64_ST_INFO(bind, type) ELF32_ST_INFO ((bind), (type)) 10 11 12 #define ELF32_ST_VISIBILITY(o) ((o) & 0x03) 13 #define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o) 14 15 #define ELF32_R_SYM(val) ((val) >> 8) 16 #define ELF32_R_TYPE(val) ((val) & 0xff) 17 #define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff)) 18 19 #define ELF64_R_SYM(i) ((i) >> 32) 20 #define ELF64_R_TYPE(i) ((i) & 0xffffffff) 21 #define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type)) 22 23 #define DT_VALRNGHI 0x6ffffdff 24 #define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag)) 25 26 #define DT_ADDRRNGHI 0x6ffffeff 27 #define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag)) 28 29 #define DT_VERNEEDNUM 0x6fffffff 30 #define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) 31 32 #define ELF32_M_SYM(info) ((info) >> 8) 33 #define ELF32_M_SIZE(info) ((unsigned char) (info)) 34 #define ELF32_M_INFO(sym, size) (((sym) << 8) + (unsigned char) (size)) 35 36 #define ELF64_M_SYM(info) ELF32_M_SYM (info) 37 #define ELF64_M_SIZE(info) ELF32_M_SIZE (info) 38 #define ELF64_M_INFO(sym, size) ELF32_M_INFO (sym, size) 39 40 #endif /* ifdef _BITS_ELF_H*/ 41