// Copyright 2018 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "components/zucchini/reference_bytes_mixer.h" #include "base/check_op.h" #include "base/notreached.h" #include "components/zucchini/disassembler.h" namespace zucchini { /******** ReferenceBytesMixer ********/ // Default implementation is a stub, i.e., for architectures whose references // have operation bits and payload bits stored in separate bytes. So during // patch application, payload bits are copied for matched blocks, ignored by // bytewise corrections, and fixed by reference target corrections. ReferenceBytesMixer::ReferenceBytesMixer() {} ReferenceBytesMixer::~ReferenceBytesMixer() = default; // static. std::unique_ptr ReferenceBytesMixer::Create( const Disassembler& src_dis, const Disassembler& dst_dis) { ExecutableType exe_type = src_dis.GetExeType(); DCHECK_EQ(exe_type, dst_dis.GetExeType()); // TODO(huangs): Add ARM handling code when ARM is ready. return std::make_unique(); } // Stub implementation. int ReferenceBytesMixer::NumBytes(uint8_t type) const { return 0; } // Base class implementation is a stub that should not be called. ConstBufferView ReferenceBytesMixer::Mix(uint8_t type, ConstBufferView old_view, offset_t old_offset, ConstBufferView new_view, offset_t new_offset) { NOTREACHED() << "Stub."; return ConstBufferView(); } } // namespace zucchini