blob: f1bcaaefd47a6cc16621b72337370fef066e9b1f [file] [log] [blame]
/*
* ElfDataReader.cpp
*
* Created on: Dec 9, 2018
* Author: ballance
*/
#include "ElfDataReader.h"
#include <stdio.h>
ElfDataReader::ElfDataReader() {
// TODO Auto-generated constructor stub
}
ElfDataReader::~ElfDataReader() {
// TODO Auto-generated destructor stub
}
bool ElfDataReader::read(
const std::string &path,
Elf32_Addr addr,
uint32_t size,
void *data) {
m_addr = addr;
m_size = size;
m_data = data;
m_found = false;
ElfFileReader::read(path);
return m_found;
}
void ElfDataReader::visit_shdr(const Elf32_Shdr &shdr) {
if (m_addr >= shdr.sh_addr && m_addr < (shdr.sh_addr + shdr.sh_size)) {
ElfFileReader::read(shdr.sh_offset+(m_addr-shdr.sh_addr), m_data, m_size);
m_found = true;
}
}
int unsigned elf_data_reader_read32(const char *filename, int unsigned addr) {
ElfDataReader rdr;
int unsigned ret;
rdr.read(filename, addr, 4, &ret);
return ret;
}