mirror of
https://github.com/momo5502/emulator.git
synced 2026-01-22 05:03:56 +00:00
Explicitly pass desired backend to emulator
This commit is contained in:
@@ -14,16 +14,6 @@ if(NOT MOMO_ENABLE_CLANG_TIDY)
|
||||
target_precompile_headers(windows-emulator PRIVATE std_include.hpp)
|
||||
endif()
|
||||
|
||||
target_link_libraries(windows-emulator PRIVATE
|
||||
unicorn-emulator
|
||||
)
|
||||
|
||||
if (MOMO_ENABLE_RUST_CODE)
|
||||
target_link_libraries(windows-emulator PRIVATE
|
||||
icicle-emulator
|
||||
)
|
||||
endif()
|
||||
|
||||
target_link_libraries(windows-emulator PUBLIC emulator)
|
||||
|
||||
target_include_directories(windows-emulator INTERFACE "${CMAKE_CURRENT_LIST_DIR}")
|
||||
|
||||
@@ -3,12 +3,6 @@
|
||||
|
||||
#include "cpu_context.hpp"
|
||||
|
||||
#include <unicorn_x86_64_emulator.hpp>
|
||||
|
||||
#if MOMO_ENABLE_RUST_CODE
|
||||
#include <icicle_x86_64_emulator.hpp>
|
||||
#endif
|
||||
|
||||
#include <utils/io.hpp>
|
||||
#include <utils/finally.hpp>
|
||||
#include <utils/lazy_object.hpp>
|
||||
@@ -268,30 +262,17 @@ namespace
|
||||
}
|
||||
}
|
||||
|
||||
std::unique_ptr<x86_64_emulator> create_default_x86_64_emulator()
|
||||
{
|
||||
#if MOMO_ENABLE_RUST_CODE
|
||||
const auto* env = getenv("EMULATOR_ICICLE");
|
||||
if (env && (env == "1"sv || env == "true"sv))
|
||||
{
|
||||
return icicle::create_x86_64_emulator();
|
||||
}
|
||||
#endif
|
||||
|
||||
return unicorn::create_x86_64_emulator();
|
||||
}
|
||||
|
||||
windows_emulator::windows_emulator(application_settings app_settings, const emulator_settings& settings,
|
||||
emulator_callbacks callbacks, emulator_interfaces interfaces,
|
||||
std::unique_ptr<x86_64_emulator> emu)
|
||||
: windows_emulator(settings, std::move(callbacks), std::move(interfaces), std::move(emu))
|
||||
windows_emulator::windows_emulator(std::unique_ptr<x86_64_emulator> emu, application_settings app_settings,
|
||||
const emulator_settings& settings, emulator_callbacks callbacks,
|
||||
emulator_interfaces interfaces)
|
||||
: windows_emulator(std::move(emu), settings, std::move(callbacks), std::move(interfaces))
|
||||
{
|
||||
fixup_application_settings(app_settings);
|
||||
this->setup_process(app_settings);
|
||||
}
|
||||
|
||||
windows_emulator::windows_emulator(const emulator_settings& settings, emulator_callbacks callbacks,
|
||||
emulator_interfaces interfaces, std::unique_ptr<x86_64_emulator> emu)
|
||||
windows_emulator::windows_emulator(std::unique_ptr<x86_64_emulator> emu, const emulator_settings& settings,
|
||||
emulator_callbacks callbacks, emulator_interfaces interfaces)
|
||||
: emu_(std::move(emu)),
|
||||
clock_(get_clock(interfaces, this->executed_instructions_, settings.use_relative_time)),
|
||||
socket_factory_(get_socket_factory(interfaces)),
|
||||
|
||||
@@ -13,8 +13,6 @@
|
||||
#include "module/module_manager.hpp"
|
||||
#include "network/socket_factory.hpp"
|
||||
|
||||
std::unique_ptr<x86_64_emulator> create_default_x86_64_emulator();
|
||||
|
||||
struct emulator_callbacks : module_manager::callbacks, process_context::callbacks
|
||||
{
|
||||
utils::optional_function<instruction_hook_continuation(uint32_t syscall_id, x86_64_emulator::pointer_type address,
|
||||
@@ -72,12 +70,11 @@ class windows_emulator
|
||||
process_context process;
|
||||
syscall_dispatcher dispatcher;
|
||||
|
||||
windows_emulator(const emulator_settings& settings = {}, emulator_callbacks callbacks = {},
|
||||
emulator_interfaces interfaces = {},
|
||||
std::unique_ptr<x86_64_emulator> emu = create_default_x86_64_emulator());
|
||||
windows_emulator(application_settings app_settings, const emulator_settings& settings = {},
|
||||
emulator_callbacks callbacks = {}, emulator_interfaces interfaces = {},
|
||||
std::unique_ptr<x86_64_emulator> emu = create_default_x86_64_emulator());
|
||||
windows_emulator(std::unique_ptr<x86_64_emulator> emu, const emulator_settings& settings = {},
|
||||
emulator_callbacks callbacks = {}, emulator_interfaces interfaces = {});
|
||||
windows_emulator(std::unique_ptr<x86_64_emulator> emu, application_settings app_settings,
|
||||
const emulator_settings& settings = {}, emulator_callbacks callbacks = {},
|
||||
emulator_interfaces interfaces = {});
|
||||
|
||||
windows_emulator(windows_emulator&&) = delete;
|
||||
windows_emulator(const windows_emulator&) = delete;
|
||||
|
||||
Reference in New Issue
Block a user