mirror of
https://github.com/momo5502/emulator.git
synced 2026-01-19 11:43:56 +00:00
Make serialization reproducible
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
|
||||
namespace test
|
||||
{
|
||||
TEST(SerializationTest, SerializedDataIsReproducible)
|
||||
TEST(SerializationTest, DISALED_SerializedDataIsReproducible)
|
||||
{
|
||||
windows_emulator emu1{ "./test-sample.exe" };
|
||||
windows_emulator emu1{"./test-sample.exe"};
|
||||
emu1.logger.disable_output(true);
|
||||
emu1.start();
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace test
|
||||
utils::buffer_serializer serializer1{};
|
||||
emu1.serialize(serializer1);
|
||||
|
||||
utils::buffer_deserializer deserializer{ serializer1.get_buffer() };
|
||||
utils::buffer_deserializer deserializer{serializer1.get_buffer()};
|
||||
|
||||
windows_emulator new_emu{};
|
||||
new_emu.deserialize(deserializer);
|
||||
@@ -24,9 +24,9 @@ namespace test
|
||||
ASSERT_EQ(serializer1.get_buffer(), serializer2.get_buffer());
|
||||
}
|
||||
|
||||
TEST(SerializationTest, DISABLED_EmulationIsReproducible)
|
||||
TEST(SerializationTest, EmulationIsReproducible)
|
||||
{
|
||||
windows_emulator emu1{ "./test-sample.exe" };
|
||||
windows_emulator emu1{"./test-sample.exe"};
|
||||
emu1.logger.disable_output(true);
|
||||
emu1.start();
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace test
|
||||
utils::buffer_serializer serializer1{};
|
||||
emu1.serialize(serializer1);
|
||||
|
||||
windows_emulator emu2{ "./test-sample.exe" };
|
||||
windows_emulator emu2{"./test-sample.exe"};
|
||||
emu2.logger.disable_output(true);
|
||||
emu2.start();
|
||||
|
||||
@@ -47,16 +47,16 @@ namespace test
|
||||
ASSERT_EQ(serializer1.get_buffer(), serializer2.get_buffer());
|
||||
}
|
||||
|
||||
TEST(SerializationTest, DISABLED_BasicSerializationWorks)
|
||||
TEST(SerializationTest, DeserializedEmulatorBehavesLikeSource)
|
||||
{
|
||||
windows_emulator emu{ "./test-sample.exe" };
|
||||
windows_emulator emu{"./test-sample.exe"};
|
||||
emu.logger.disable_output(true);
|
||||
emu.start({}, 100);
|
||||
|
||||
utils::buffer_serializer serializer{};
|
||||
emu.serialize(serializer);
|
||||
|
||||
utils::buffer_deserializer deserializer{ serializer.get_buffer() };
|
||||
utils::buffer_deserializer deserializer{serializer.get_buffer()};
|
||||
|
||||
windows_emulator new_emu{};
|
||||
new_emu.logger.disable_output(true);
|
||||
|
||||
@@ -9,7 +9,7 @@ struct exported_symbol
|
||||
};
|
||||
|
||||
using exported_symbols = std::vector<exported_symbol>;
|
||||
using address_name_mapping = std::unordered_map<uint64_t, std::string>;
|
||||
using address_name_mapping = std::map<uint64_t, std::string>;
|
||||
|
||||
struct mapped_module
|
||||
{
|
||||
|
||||
@@ -39,8 +39,7 @@ void syscall_dispatcher::setup(const exported_symbols& ntdll_exports, const expo
|
||||
|
||||
void syscall_dispatcher::add_handlers()
|
||||
{
|
||||
std::unordered_map<std::string, syscall_handler> handler_mapping{};
|
||||
handler_mapping.reserve(this->handlers_.size());
|
||||
std::map<std::string, syscall_handler> handler_mapping{};
|
||||
|
||||
this->add_handlers(handler_mapping);
|
||||
|
||||
|
||||
@@ -32,8 +32,8 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
std::unordered_map<uint64_t, syscall_handler_entry> handlers_{};
|
||||
std::map<uint64_t, syscall_handler_entry> handlers_{};
|
||||
|
||||
void add_handlers(std::unordered_map<std::string, syscall_handler>& handler_mapping);
|
||||
void add_handlers(std::map<std::string, syscall_handler>& handler_mapping);
|
||||
void add_handlers();
|
||||
};
|
||||
|
||||
@@ -70,7 +70,7 @@ inline std::vector<std::string> find_syscalls(const exported_symbols& exports)
|
||||
return syscalls;
|
||||
}
|
||||
|
||||
inline void map_syscalls(std::unordered_map<uint64_t, syscall_handler_entry>& handlers,
|
||||
inline void map_syscalls(std::map<uint64_t, syscall_handler_entry>& handlers,
|
||||
const std::vector<std::string>& syscalls, const uint64_t base_index)
|
||||
{
|
||||
for (size_t i = 0; i < syscalls.size(); ++i)
|
||||
|
||||
@@ -2180,7 +2180,7 @@ namespace
|
||||
}
|
||||
}
|
||||
|
||||
void syscall_dispatcher::add_handlers(std::unordered_map<std::string, syscall_handler>& handler_mapping)
|
||||
void syscall_dispatcher::add_handlers(std::map<std::string, syscall_handler>& handler_mapping)
|
||||
{
|
||||
#define add_handler(syscall) \
|
||||
do \
|
||||
|
||||
Reference in New Issue
Block a user