Emit auxiliary files even if asserts fail (#2104)

Closes #2100
This commit is contained in:
Eldred Habert
2026-09-17 17:47:53 +02:00
committed by GitHub
parent b4988afc8a
commit 3b250d5386
3 changed files with 20 additions and 16 deletions
+3 -2
View File
@@ -11,7 +11,8 @@ void out_AddSection(Section const &section);
// Finds an assigned section overlapping another one.
Section const *out_OverlappingSection(Section const &section);
// Writes all output (bin, sym, map) files.
void out_WriteFiles();
void out_WriteROMIfAny();
void out_WriteSymIfAny();
void out_WriteMapIfAny();
#endif // RGBDS_LINK_OUTPUT_HPP
+14 -5
View File
@@ -433,14 +433,14 @@ int main(int argc, char *argv[]) {
sectionTypeInfo[SECTTYPE_VRAM].lastBank = 0;
}
// Read all object files first,
// Read all object files...
size_t nbFiles = localOptions.inputFileNames.size();
obj_Setup(nbFiles);
for (size_t i = 0; i < nbFiles; ++i) {
obj_ReadFile(localOptions.inputFileNames[i], nbFiles - i - 1);
}
// apply the linker script's modifications,
// Apply the linker script's modifications...
if (localOptions.linkerScriptName) {
verbosePrint(VERB_NOTICE, "Reading linker script...\n");
@@ -453,16 +453,25 @@ int main(int argc, char *argv[]) {
requireZeroErrors();
}
// then process them,
// Attempt to generate a layout...
sect_DoSanityChecks();
requireZeroErrors();
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();
// and finally output the result.
// And, finally, make the ROM and emit it!
patch_ApplyPatches();
requireZeroErrors();
out_WriteFiles();
out_WriteROMIfAny();
return 0;
}
+3 -9
View File
@@ -204,7 +204,7 @@ static void
}
}
static void writeROM() {
void out_WriteROMIfAny() {
if (options.outputFileName) {
char const *outputFileName = options.outputFileName->c_str();
if (*options.outputFileName != "-") {
@@ -536,7 +536,7 @@ static void writeMapSummary() {
}
}
static void writeSym() {
void out_WriteSymIfAny() {
if (!options.symFileName) {
return;
}
@@ -587,7 +587,7 @@ static void writeSym() {
}
}
static void writeMap() {
void out_WriteMapIfAny() {
if (!options.mapFileName) {
return;
}
@@ -615,9 +615,3 @@ static void writeMap() {
}
}
}
void out_WriteFiles() {
writeROM();
writeSym();
writeMap();
}