mirror of
https://github.com/gbdev/rgbds.git
synced 2026-09-19 04:07:05 +00:00
@@ -11,7 +11,8 @@ void out_AddSection(Section const §ion);
|
|||||||
// Finds an assigned section overlapping another one.
|
// Finds an assigned section overlapping another one.
|
||||||
Section const *out_OverlappingSection(Section const §ion);
|
Section const *out_OverlappingSection(Section const §ion);
|
||||||
|
|
||||||
// Writes all output (bin, sym, map) files.
|
void out_WriteROMIfAny();
|
||||||
void out_WriteFiles();
|
void out_WriteSymIfAny();
|
||||||
|
void out_WriteMapIfAny();
|
||||||
|
|
||||||
#endif // RGBDS_LINK_OUTPUT_HPP
|
#endif // RGBDS_LINK_OUTPUT_HPP
|
||||||
|
|||||||
+14
-5
@@ -433,14 +433,14 @@ int main(int argc, char *argv[]) {
|
|||||||
sectionTypeInfo[SECTTYPE_VRAM].lastBank = 0;
|
sectionTypeInfo[SECTTYPE_VRAM].lastBank = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read all object files first,
|
// Read all object files...
|
||||||
size_t nbFiles = localOptions.inputFileNames.size();
|
size_t nbFiles = localOptions.inputFileNames.size();
|
||||||
obj_Setup(nbFiles);
|
obj_Setup(nbFiles);
|
||||||
for (size_t i = 0; i < nbFiles; ++i) {
|
for (size_t i = 0; i < nbFiles; ++i) {
|
||||||
obj_ReadFile(localOptions.inputFileNames[i], nbFiles - i - 1);
|
obj_ReadFile(localOptions.inputFileNames[i], nbFiles - i - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// apply the linker script's modifications,
|
// Apply the linker script's modifications...
|
||||||
if (localOptions.linkerScriptName) {
|
if (localOptions.linkerScriptName) {
|
||||||
verbosePrint(VERB_NOTICE, "Reading linker script...\n");
|
verbosePrint(VERB_NOTICE, "Reading linker script...\n");
|
||||||
|
|
||||||
@@ -453,16 +453,25 @@ int main(int argc, char *argv[]) {
|
|||||||
requireZeroErrors();
|
requireZeroErrors();
|
||||||
}
|
}
|
||||||
|
|
||||||
// then process them,
|
// Attempt to generate a layout...
|
||||||
sect_DoSanityChecks();
|
sect_DoSanityChecks();
|
||||||
requireZeroErrors();
|
requireZeroErrors();
|
||||||
assign_AssignSections();
|
assign_AssignSections();
|
||||||
|
|
||||||
|
// Emit the symbol and/or map files now (if requested on the CLI),
|
||||||
|
// so that more link-time info is available to debug any failing assertions.
|
||||||
|
// This is safe to do, since we have a valid layout at this point;
|
||||||
|
// assertions only check user-level assumptions made about it.
|
||||||
|
out_WriteSymIfAny();
|
||||||
|
out_WriteMapIfAny();
|
||||||
|
|
||||||
|
// Make any last-minute verifications...
|
||||||
patch_CheckAssertions();
|
patch_CheckAssertions();
|
||||||
|
|
||||||
// and finally output the result.
|
// And, finally, make the ROM and emit it!
|
||||||
patch_ApplyPatches();
|
patch_ApplyPatches();
|
||||||
requireZeroErrors();
|
requireZeroErrors();
|
||||||
out_WriteFiles();
|
out_WriteROMIfAny();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-9
@@ -204,7 +204,7 @@ static void
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void writeROM() {
|
void out_WriteROMIfAny() {
|
||||||
if (options.outputFileName) {
|
if (options.outputFileName) {
|
||||||
char const *outputFileName = options.outputFileName->c_str();
|
char const *outputFileName = options.outputFileName->c_str();
|
||||||
if (*options.outputFileName != "-") {
|
if (*options.outputFileName != "-") {
|
||||||
@@ -536,7 +536,7 @@ static void writeMapSummary() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void writeSym() {
|
void out_WriteSymIfAny() {
|
||||||
if (!options.symFileName) {
|
if (!options.symFileName) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -587,7 +587,7 @@ static void writeSym() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void writeMap() {
|
void out_WriteMapIfAny() {
|
||||||
if (!options.mapFileName) {
|
if (!options.mapFileName) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -615,9 +615,3 @@ static void writeMap() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void out_WriteFiles() {
|
|
||||||
writeROM();
|
|
||||||
writeSym();
|
|
||||||
writeMap();
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user