Add support for PPC32/64 relocations

This commit is contained in:
yd0b0N
2018-04-09 16:29:57 +02:00
committed by Romain Thomas
parent 2031956cc2
commit 08b514191f
11 changed files with 649 additions and 0 deletions
+145
View File
@@ -838,6 +838,151 @@ void init_ELF_Structures_enum(py::module& m) {
.value(PY_ENUM(RELOC_AARCH64::R_AARCH64_TLSDESC))
.value(PY_ENUM(RELOC_AARCH64::R_AARCH64_IRELATIVE));
LIEF::enum_<RELOC_POWERPC32>(m, "RELOCATION_PPC")
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_NONE))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_ADDR32))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_ADDR24))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_ADDR16))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_ADDR16_LO))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_ADDR16_HI))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_ADDR16_HA))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_ADDR14))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_ADDR14_BRTAKEN))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_ADDR14_BRNTAKEN))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_REL24))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_REL14))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_REL14_BRTAKEN))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_REL14_BRNTAKEN))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT16))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT16_LO))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT16_HI))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT16_HA))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_PLTREL24))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_JMP_SLOT))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_RELATIVE))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_LOCAL24PC))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_REL32))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_TLS))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_DTPMOD32))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_TPREL16))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_TPREL16_LO))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_TPREL16_HI))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_TPREL16_HA))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_TPREL32))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_DTPREL16))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_DTPREL16_LO))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_DTPREL16_HI))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_DTPREL16_HA))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_DTPREL32))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT_TLSGD16))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT_TLSGD16_LO))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT_TLSGD16_HI))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT_TLSGD16_HA))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT_TLSLD16))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT_TLSLD16_LO))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT_TLSLD16_HI))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT_TLSLD16_HA))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT_TPREL16))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT_TPREL16_LO))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT_TPREL16_HI))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT_TPREL16_HA))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT_DTPREL16))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT_DTPREL16_LO))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT_DTPREL16_HI))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_GOT_DTPREL16_HA))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_TLSGD))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_TLSLD))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_REL16))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_REL16_LO))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_REL16_HI))
.value(PY_ENUM(RELOC_POWERPC32::R_PPC_REL16_HA));
LIEF::enum_<RELOC_POWERPC64>(m, "RELOCATION_PPC64")
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_NONE))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_ADDR32))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_ADDR24))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_ADDR16))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_ADDR16_LO))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_ADDR16_HI))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_ADDR16_HA))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_ADDR14))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_ADDR14_BRTAKEN))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_ADDR14_BRNTAKEN))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_REL24))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_REL14))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_REL14_BRTAKEN))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_REL14_BRNTAKEN))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT16))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT16_LO))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT16_HI))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT16_HA))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_JMP_SLOT))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_RELATIVE))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_REL32))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_ADDR64))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_ADDR16_HIGHER))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_ADDR16_HIGHERA))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_ADDR16_HIGHEST))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_ADDR16_HIGHESTA))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_REL64))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TOC16))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TOC16_LO))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TOC16_HI))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TOC16_HA))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TOC))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_ADDR16_DS))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_ADDR16_LO_DS))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT16_DS))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT16_LO_DS))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TOC16_DS))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TOC16_LO_DS))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TLS))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_DTPMOD64))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TPREL16))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TPREL16_LO))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TPREL16_HI))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TPREL16_HA))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TPREL64))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_DTPREL16))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_DTPREL16_LO))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_DTPREL16_HI))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_DTPREL16_HA))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_DTPREL64))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT_TLSGD16))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT_TLSGD16_LO))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT_TLSGD16_HI))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT_TLSGD16_HA))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT_TLSLD16))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT_TLSLD16_LO))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT_TLSLD16_HI))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT_TLSLD16_HA))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT_TPREL16_DS))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT_TPREL16_LO_DS))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT_TPREL16_HI))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT_TPREL16_HA))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT_DTPREL16_DS))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT_DTPREL16_LO_DS))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT_DTPREL16_HI))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_GOT_DTPREL16_HA))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TPREL16_DS))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TPREL16_LO_DS))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TPREL16_HIGHER))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TPREL16_HIGHERA))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TPREL16_HIGHEST))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TPREL16_HIGHESTA))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_DTPREL16_DS))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_DTPREL16_LO_DS))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_DTPREL16_HIGHER))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_DTPREL16_HIGHERA))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_DTPREL16_HIGHEST))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_DTPREL16_HIGHESTA))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TLSGD))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_TLSLD))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_REL16))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_REL16_LO))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_REL16_HI))
.value(PY_ENUM(RELOC_POWERPC64::R_PPC64_REL16_HA));
LIEF::enum_<DYNSYM_COUNT_METHODS>(m, "DYNSYM_COUNT_METHODS")
.value(PY_ENUM(DYNSYM_COUNT_METHODS::COUNT_AUTO))