From b81ca2c41ff4d48ca03d9c0e9bb53dd39bdd0a48 Mon Sep 17 00:00:00 2001 From: Dennis Brentjes Date: Fri, 28 May 2021 21:45:07 +0200 Subject: Fixes relocation and slowly starts implmenting base DOS and DPMI interrupts. --- run/run.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'run/run.cpp') diff --git a/run/run.cpp b/run/run.cpp index 2f02a7b..b85e001 100644 --- a/run/run.cpp +++ b/run/run.cpp @@ -33,13 +33,21 @@ void accept_handler(boost::system::error_code const& error) { if(!error) { + uint32_t binary_size = determine_binary_size(file); + BinarySizeMessage size_message { + .binary_size = binary_size + }; + connection_socket.send(boost::asio::buffer(&size_message, sizeof size_message)); + + BinaryBaseOffsetMessage offset_message; + connection_socket.receive(boost::asio::buffer(&offset_message, sizeof offset_message)); + std::vector binary = load_binary(file); + relocate(file, binary, binparse::Offset32(offset_message.offset)); + uint32_t base_address = file.object_table.entries.at(file.le_header.EIP_object).reloc_base_address; - uint32_t binary_size = binary.size(); BinaryLoadMessage message { - .binary_size = binary_size, - .base_address = base_address, - .eip = file.le_header.EIP + base_address + .eip = file.le_header.EIP + base_address + offset_message.offset }; connection_socket.send(boost::asio::buffer(&message, sizeof message)); -- cgit v1.2.3-70-g09d2