1198090Srdivacky//===- MemoryObject.cpp - Abstract memory interface -----------------------===// 2198090Srdivacky// 3198090Srdivacky// The LLVM Compiler Infrastructure 4198090Srdivacky// 5198090Srdivacky// This file is distributed under the University of Illinois Open Source 6198090Srdivacky// License. See LICENSE.TXT for details. 7198090Srdivacky// 8198090Srdivacky//===----------------------------------------------------------------------===// 9198090Srdivacky 10198090Srdivacky#include "llvm/Support/MemoryObject.h" 11198090Srdivackyusing namespace llvm; 12198090Srdivacky 13198090SrdivackyMemoryObject::~MemoryObject() { 14198090Srdivacky} 15198090Srdivacky 16198090Srdivackyint MemoryObject::readBytes(uint64_t address, 17198090Srdivacky uint64_t size, 18263508Sdim uint8_t* buf) const { 19198090Srdivacky uint64_t current = address; 20198090Srdivacky uint64_t limit = getBase() + getExtent(); 21226633Sdim 22226633Sdim if (current + size > limit) 23226633Sdim return -1; 24226633Sdim 25226633Sdim while (current - address < size) { 26198090Srdivacky if (readByte(current, &buf[(current - address)])) 27198090Srdivacky return -1; 28198090Srdivacky 29198090Srdivacky current++; 30198090Srdivacky } 31198090Srdivacky 32198090Srdivacky return 0; 33198090Srdivacky} 34