mirror of
https://github.com/lief-project/LIEF
synced 2026-06-08 15:30:44 +00:00
Refactor PE's relocation API
This commit is contained in:
@@ -100,28 +100,6 @@ void init_enums(nb::module_& m) {
|
||||
.value(PY_ENUM(SYMBOL_STORAGE_CLASS::IMAGE_SYM_CLASS_WEAK_EXTERNAL))
|
||||
.value(PY_ENUM(SYMBOL_STORAGE_CLASS::IMAGE_SYM_CLASS_CLR_TOKEN));
|
||||
|
||||
|
||||
enum_<RELOCATIONS_BASE_TYPES>(m, "RELOCATIONS_BASE_TYPES")
|
||||
.value("ABSOLUTE", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_ABSOLUTE)
|
||||
.value("HIGH", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_HIGH)
|
||||
.value("LOW", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_LOW)
|
||||
.value("HIGHLOW", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_HIGHLOW)
|
||||
.value("HIGHADJ", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_HIGHADJ)
|
||||
.value("MIPS_JMPADDR", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_MIPS_JMPADDR)
|
||||
.value("ARM_MOV32A", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_ARM_MOV32A)
|
||||
.value("ARM_MOV32", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_ARM_MOV32)
|
||||
.value("RISCV_HI20", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_RISCV_HI20)
|
||||
.value("ARM_MOV32T", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_ARM_MOV32T)
|
||||
.value("THUMB_MOV32", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_THUMB_MOV32)
|
||||
.value("RISCV_LOW12I", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_RISCV_LOW12I)
|
||||
.value("RISCV_LOW12S", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_RISCV_LOW12S)
|
||||
.value("SECTION", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_SECTION)
|
||||
.value("REL", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_REL)
|
||||
.value("MIPS_JMPADDR16", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_MIPS_JMPADDR16)
|
||||
.value("IA64_IMM64", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_IA64_IMM64)
|
||||
.value("DIR64", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_DIR64)
|
||||
.value("HIGH3ADJ", RELOCATIONS_BASE_TYPES::IMAGE_REL_BASED_HIGH3ADJ);
|
||||
|
||||
enum_<EXTENDED_WINDOW_STYLES>(m, "EXTENDED_WINDOW_STYLES")
|
||||
.value(PY_ENUM(EXTENDED_WINDOW_STYLES::WS_EX_DLGMODALFRAME))
|
||||
.value(PY_ENUM(EXTENDED_WINDOW_STYLES::WS_EX_NOPARENTNOTIFY))
|
||||
@@ -143,8 +121,6 @@ void init_enums(nb::module_& m) {
|
||||
.value(PY_ENUM(EXTENDED_WINDOW_STYLES::WS_EX_STATICEDGE))
|
||||
.value(PY_ENUM(EXTENDED_WINDOW_STYLES::WS_EX_APPWINDOW));
|
||||
|
||||
|
||||
|
||||
enum_<WINDOW_STYLES>(m, "WINDOW_STYLES")
|
||||
.value(PY_ENUM(WINDOW_STYLES::WS_OVERLAPPED))
|
||||
.value(PY_ENUM(WINDOW_STYLES::WS_POPUP))
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
|
||||
#include "LIEF/PE/RelocationEntry.hpp"
|
||||
|
||||
#include "enums_wrapper.hpp"
|
||||
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <nanobind/stl/string.h>
|
||||
@@ -25,14 +27,39 @@ namespace LIEF::PE::py {
|
||||
|
||||
template<>
|
||||
void create<RelocationEntry>(nb::module_& m) {
|
||||
nb::class_<RelocationEntry, LIEF::Relocation>(m, "RelocationEntry",
|
||||
nb::class_<RelocationEntry, LIEF::Relocation> entry(m, "RelocationEntry",
|
||||
R"delim(
|
||||
Class which represents an entry of the PE relocation table.
|
||||
|
||||
It extends the :class:`lief.Relocation` object to provide an uniform API across the file formats
|
||||
)delim"_doc)
|
||||
.def(nb::init<>())
|
||||
It extends the :class:`lief.Relocation` object to provide an uniform API across the file formats.
|
||||
)delim"_doc);
|
||||
|
||||
#define ENTRY(X) .value(to_string(RelocationEntry::BASE_TYPES::X), RelocationEntry::BASE_TYPES::X)
|
||||
enum_<RelocationEntry::BASE_TYPES>(entry, "BASE_TYPES")
|
||||
ENTRY(UNKNOWN)
|
||||
ENTRY(ABSOLUTE)
|
||||
ENTRY(HIGH)
|
||||
ENTRY(LOW)
|
||||
ENTRY(HIGHLOW)
|
||||
ENTRY(HIGHADJ)
|
||||
ENTRY(MIPS_JMPADDR)
|
||||
ENTRY(ARM_MOV32A)
|
||||
ENTRY(ARM_MOV32)
|
||||
ENTRY(RISCV_HI20)
|
||||
ENTRY(SECTION)
|
||||
ENTRY(REL)
|
||||
ENTRY(ARM_MOV32T)
|
||||
ENTRY(THUMB_MOV32)
|
||||
ENTRY(RISCV_LOW12I)
|
||||
ENTRY(RISCV_LOW12S)
|
||||
ENTRY(MIPS_JMPADDR16)
|
||||
ENTRY(IA64_IMM64)
|
||||
ENTRY(DIR64)
|
||||
ENTRY(HIGH3ADJ);
|
||||
#undef ENTRY
|
||||
|
||||
entry
|
||||
.def(nb::init<>())
|
||||
.def_prop_rw("data",
|
||||
nb::overload_cast<>(&RelocationEntry::data, nb::const_),
|
||||
nb::overload_cast<uint16_t>(&RelocationEntry::data),
|
||||
@@ -50,8 +77,8 @@ void create<RelocationEntry>(nb::module_& m) {
|
||||
|
||||
.def_prop_rw("type",
|
||||
nb::overload_cast<>(&RelocationEntry::type, nb::const_),
|
||||
nb::overload_cast<RELOCATIONS_BASE_TYPES>(&RelocationEntry::type),
|
||||
"Type of the relocation (see: " RST_CLASS_REF(lief.PE.RELOCATIONS_BASE_TYPES) ")"_doc)
|
||||
nb::overload_cast<RelocationEntry::BASE_TYPES>(&RelocationEntry::type),
|
||||
"Type of the relocation"_doc)
|
||||
|
||||
LIEF_DEFAULT_STR(RelocationEntry);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user