diff options
| author | Brandon Miller <brandon@vector35.com> | 2025-05-08 15:08:10 -0400 |
|---|---|---|
| committer | Brandon Miller <brandon@vector35.com> | 2025-05-08 15:08:10 -0400 |
| commit | 5147249a644f611a801aada7645b7a993fc8e314 (patch) | |
| tree | 3a18e50df5ae9edcf31f3545a7f27774021c76a1 /platform/efi/platform_efi.cpp | |
| parent | f7e831ab40a5031cec9186096a90d94735080ed7 (diff) | |
Implement EFI resolver as a module workflow
Diffstat (limited to 'platform/efi/platform_efi.cpp')
| -rw-r--r-- | platform/efi/platform_efi.cpp | 113 |
1 files changed, 19 insertions, 94 deletions
diff --git a/platform/efi/platform_efi.cpp b/platform/efi/platform_efi.cpp index 9f9840b2..d3ba74e2 100644 --- a/platform/efi/platform_efi.cpp +++ b/platform/efi/platform_efi.cpp @@ -20,7 +20,6 @@ public: Ref<CallingConvention> cc; m_idtr = arch->GetRegisterByName("idtr"); - cc = arch->GetCallingConventionByName("cdecl"); if (cc) { @@ -58,19 +57,7 @@ public: virtual void BinaryViewInit(BinaryView* view) override { - if (!m_idtrtype) - m_idtrtype = Type::NamedType(QualifiedName("IDTR32"), GetTypeByName(QualifiedName("IDTR32"))); - - auto ctx = PluginCommandContext(); - ctx.binaryView = view; - auto commandList = PluginCommand::GetValidList(ctx); - for (auto command : commandList) - { - if (command.GetName() == "EFI Resolver\\Resolve EFI Types And Protocols") - { - command.Execute(ctx); - } - } + m_idtrtype = Type::NamedType(QualifiedName("IDTR32"), GetTypeByName(QualifiedName("IDTR32"))); } virtual Ref<Type> GetGlobalRegisterType(uint32_t reg) override @@ -95,7 +82,6 @@ public: Ref<CallingConvention> cc; m_idtr = arch->GetRegisterByName("idtr"); - cc = arch->GetCallingConventionByName("cdecl"); if (cc) { @@ -133,19 +119,7 @@ public: virtual void BinaryViewInit(BinaryView* view) override { - if (!m_idtrtype) - m_idtrtype = Type::NamedType(QualifiedName("IDTR32"), GetTypeByName(QualifiedName("IDTR32"))); - - auto ctx = PluginCommandContext(); - ctx.binaryView = view; - auto commandList = PluginCommand::GetValidList(ctx); - for (auto command : commandList) - { - if (command.GetName() == "EFI Resolver\\Resolve EFI Types And Protocols") - { - command.Execute(ctx); - } - } + m_idtrtype = Type::NamedType(QualifiedName("IDTR32"), GetTypeByName(QualifiedName("IDTR32"))); } virtual Ref<Type> GetGlobalRegisterType(uint32_t reg) override @@ -191,19 +165,7 @@ public: virtual void BinaryViewInit(BinaryView* view) override { - if (!m_idtrtype) - m_idtrtype = Type::NamedType(QualifiedName("IDTR64"), GetTypeByName(QualifiedName("IDTR64"))); - - auto ctx = PluginCommandContext(); - ctx.binaryView = view; - auto commandList = PluginCommand::GetValidList(ctx); - for (auto command : commandList) - { - if (command.GetName() == "EFI Resolver\\Resolve EFI Types And Protocols") - { - command.Execute(ctx); - } - } + m_idtrtype = Type::NamedType(QualifiedName("IDTR64"), GetTypeByName(QualifiedName("IDTR64"))); } virtual Ref<Type> GetGlobalRegisterType(uint32_t reg) override @@ -249,19 +211,7 @@ public: virtual void BinaryViewInit(BinaryView* view) override { - if (!m_idtrtype) - m_idtrtype = Type::NamedType(QualifiedName("IDTR64"), GetTypeByName(QualifiedName("IDTR64"))); - - auto ctx = PluginCommandContext(); - ctx.binaryView = view; - auto commandList = PluginCommand::GetValidList(ctx); - for (auto command : commandList) - { - if (command.GetName() == "EFI Resolver\\Resolve EFI Types And Protocols") - { - command.Execute(ctx); - } - } + m_idtrtype = Type::NamedType(QualifiedName("IDTR64"), GetTypeByName(QualifiedName("IDTR64"))); } virtual Ref<Type> GetGlobalRegisterType(uint32_t reg) override @@ -324,26 +274,6 @@ public: } } - virtual void BinaryViewInit(BinaryView* view) override - { - if (!m_tpidrel0type) - m_tpidrel0type = Type::NamedType(QualifiedName("EFI_PEI_SERVICES"), - Type::PointerType(view->GetDefaultArchitecture(), - Type::PointerType( - view->GetDefaultArchitecture(), GetTypeByName(QualifiedName("EFI_PEI_SERVICES"))))); - - auto ctx = PluginCommandContext(); - ctx.binaryView = view; - auto commandList = PluginCommand::GetValidList(ctx); - for (auto command : commandList) - { - if (command.GetName() == "EFI Resolver\\Resolve EFI Types And Protocols") - { - command.Execute(ctx); - } - } - } - static Ref<Platform> Recognize(BinaryView* view, Metadata* metadata) { Ref<Metadata> subsystem = metadata->Get("Subsystem"); @@ -354,6 +284,13 @@ public: return nullptr; } + virtual void BinaryViewInit(BinaryView* view) override + { + m_tpidrel0type = Type::NamedType(QualifiedName("EFI_PEI_SERVICES"), + Type::PointerType(GetArchitecture(), + Type::PointerType(GetArchitecture(), GetTypeByName(QualifiedName("EFI_PEI_SERVICES"))))); + } + virtual Ref<Type> GetGlobalRegisterType(uint32_t reg) override { if (reg == m_tpidrel0) @@ -384,26 +321,6 @@ public: } } - virtual void BinaryViewInit(BinaryView* view) override - { - if (!m_tpidrel0type) - m_tpidrel0type = Type::NamedType(QualifiedName("EFI_PEI_SERVICES"), - Type::PointerType(view->GetDefaultArchitecture(), - Type::PointerType( - view->GetDefaultArchitecture(), GetTypeByName(QualifiedName("EFI_PEI_SERVICES"))))); - - auto ctx = PluginCommandContext(); - ctx.binaryView = view; - auto commandList = PluginCommand::GetValidList(ctx); - for (auto command : commandList) - { - if (command.GetName() == "EFI Resolver\\Resolve EFI Types And Protocols") - { - command.Execute(ctx); - } - } - } - static Ref<Platform> Recognize(BinaryView* view, Metadata* metadata) { Ref<Metadata> subsystem = metadata->Get("Subsystem"); @@ -414,6 +331,14 @@ public: return nullptr; } + virtual void BinaryViewInit(BinaryView* view) override + { + m_tpidrel0type = Type::NamedType(QualifiedName("EFI_PEI_SERVICES"), + Type::PointerType(GetArchitecture(), + Type::PointerType( + GetArchitecture(), GetTypeByName(QualifiedName("EFI_PEI_SERVICES"))))); + } + virtual Ref<Type> GetGlobalRegisterType(uint32_t reg) override { if (reg == m_tpidrel0) |
