mirror of
https://github.com/wiiu-env/WUMSLoader.git
synced 2026-09-06 18:44:30 -05:00
Change address/endAddress in ModuleData to startAddress/endAddress
This commit is contained in:
@@ -48,12 +48,12 @@ public:
|
||||
this->entrypoint = addr;
|
||||
}
|
||||
|
||||
void setAddress(uint32_t addr) {
|
||||
this->address = addr;
|
||||
void setStartAddress(uint32_t addr) {
|
||||
this->startAddress = addr;
|
||||
}
|
||||
|
||||
void setSize(uint32_t size) {
|
||||
this->size = size;
|
||||
void setEndAddress(uint32_t endAddress) {
|
||||
this->endAddress = endAddress;
|
||||
}
|
||||
|
||||
void addRelocationData(RelocationData * relocation_data) {
|
||||
@@ -84,12 +84,12 @@ public:
|
||||
return entrypoint;
|
||||
}
|
||||
|
||||
uint32_t getAddress() {
|
||||
return address;
|
||||
uint32_t getStartAddress() {
|
||||
return startAddress;
|
||||
}
|
||||
|
||||
uint32_t getSize() {
|
||||
return address;
|
||||
uint32_t getEndAddress() {
|
||||
return endAddress;
|
||||
}
|
||||
|
||||
std::string toString();
|
||||
@@ -100,7 +100,7 @@ private:
|
||||
uint32_t bssSize = 0;
|
||||
uint32_t sbssAddr = 0;
|
||||
uint32_t sbssSize = 0;
|
||||
uint32_t address = 0;
|
||||
uint32_t size = 0;
|
||||
uint32_t startAddress = 0;
|
||||
uint32_t endAddress = 0;
|
||||
uint32_t entrypoint = 0;
|
||||
};
|
||||
|
||||
@@ -52,6 +52,8 @@ ModuleData * ModuleDataFactory::load(std::string path, uint32_t destination_addr
|
||||
uint32_t entrypoint = offset_text + (uint32_t) reader.get_entry() - 0x02000000;
|
||||
|
||||
uint32_t totalSize = 0;
|
||||
uint32_t endAddress = 0;
|
||||
|
||||
|
||||
for(uint32_t i = 0; i < sec_num; ++i ) {
|
||||
section* psec = reader.sections[i];
|
||||
@@ -104,6 +106,10 @@ ModuleData * ModuleDataFactory::load(std::string path, uint32_t destination_addr
|
||||
}
|
||||
totalSize += sectionSize;
|
||||
|
||||
if(endAddress < destination + sectionSize){
|
||||
endAddress = destination + sectionSize;
|
||||
}
|
||||
|
||||
DCFlushRange((void*)destination, sectionSize);
|
||||
ICInvalidateRange((void*)destination, sectionSize);
|
||||
}
|
||||
@@ -133,14 +139,15 @@ ModuleData * ModuleDataFactory::load(std::string path, uint32_t destination_addr
|
||||
free(destinations);
|
||||
|
||||
moduleData->setEntrypoint(entrypoint);
|
||||
moduleData->setAddress(destination_address);
|
||||
moduleData->setSize(totalSize);
|
||||
moduleData->setStartAddress(destination_address);
|
||||
moduleData->setEndAddress(endAddress);
|
||||
DEBUG_FUNCTION_LINE("Saved entrypoint as %08X", entrypoint);
|
||||
DEBUG_FUNCTION_LINE("Saved startAddress as %08X", destination_address);
|
||||
DEBUG_FUNCTION_LINE("Saved endAddress as %08X", endAddress);
|
||||
|
||||
return moduleData;
|
||||
}
|
||||
|
||||
|
||||
std::vector<RelocationData*> ModuleDataFactory::getImportRelocationData(elfio& reader, uint8_t ** destinations) {
|
||||
std::vector<RelocationData*> result;
|
||||
std::map<uint32_t,std::string> infoMap;
|
||||
|
||||
@@ -30,8 +30,8 @@ bool ModuleDataPersistence::saveModuleData(module_information_t * moduleInformat
|
||||
module_data->bssSize = module->getBSSSize();
|
||||
module_data->sbssAddr = module->getSBSSAddr();
|
||||
module_data->sbssSize = module->getSBSSSize();
|
||||
module_data->address = module->getAddress();
|
||||
module_data->size = module->getSize();
|
||||
module_data->startAddress = module->getStartAddress();
|
||||
module_data->endAddress = module->getEndAddress();
|
||||
|
||||
module_data->entrypoint = module->getEntrypoint();
|
||||
|
||||
@@ -68,8 +68,8 @@ std::vector<ModuleData*> ModuleDataPersistence::loadModuleData(module_informatio
|
||||
moduleData->setBSSLocation(module_data->bssAddr, module_data->bssSize);
|
||||
moduleData->setSBSSLocation(module_data->sbssAddr, module_data->sbssSize);
|
||||
moduleData->setEntrypoint(module_data->entrypoint);
|
||||
moduleData->setAddress(module_data->address);
|
||||
moduleData->setSize(module_data->size);
|
||||
moduleData->setStartAddress(module_data->startAddress);
|
||||
moduleData->setEndAddress(module_data->endAddress);
|
||||
|
||||
for(uint32_t j = 0; j < DYN_LINK_RELOCATION_LIST_LENGTH; j++) {
|
||||
dyn_linking_relocation_entry_t * linking_entry = &(module_data->linking_entries[j]);
|
||||
|
||||
Reference in New Issue
Block a user