MCPcopy Create free account
hub / github.com/Inori/GPCS4 / loadModuleFromFile

Method loadModuleFromFile

GPCS4/Loader/ModuleLoader.cpp:78–159  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

76}
77
78bool ModuleLoader::loadModuleFromFile(std::string const &fileName,
79 NativeModule *mod,
80 bool *exist)
81{
82 LOG_ASSERT(mod != nullptr, "mod is nullpointer");
83 LOG_ASSERT(exist != nullptr, "mod is nullpointer");
84
85 *exist = false;
86 bool retVal = false;
87 do
88 {
89 retVal = mapFilePathToModuleName(fileName, &mod->fileName);
90 if (!retVal)
91 {
92 break;
93 }
94
95 bool isLoaded = m_modSystem.isNativeModuleLoaded(mod->fileName);
96 if (isLoaded)
97 {
98 LOG_DEBUG("module %s has already been loaded", mod->fileName.c_str());
99 retVal = true;
100 *exist = true;
101 break;
102 }
103
104 retVal = m_mapper.loadFile(fileName, mod);
105 if (!retVal)
106 {
107 break;
108 }
109
110 retVal = m_mapper.validateHeader();
111 if (!retVal)
112 {
113 break;
114 }
115
116 retVal = m_mapper.parseSegmentHeaders();
117 if (!retVal)
118 {
119 break;
120 }
121
122 retVal = m_mapper.parseDynamicSection();
123 if (!retVal)
124 {
125 break;
126 }
127
128 retVal = m_mapper.mapImageIntoMemory();
129 if (!retVal)
130 {
131 break;
132 }
133
134 retVal = m_mapper.parseSymbols();
135 if (!retVal)

Callers

nothing calls this directly

Calls 10

loadFileMethod · 0.80
validateHeaderMethod · 0.80
parseSegmentHeadersMethod · 0.80
parseDynamicSectionMethod · 0.80
mapImageIntoMemoryMethod · 0.80
parseSymbolsMethod · 0.80
getExportSymbolsMethod · 0.80
getSymbolMethod · 0.80
isNativeModuleLoadedMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected