Fix LoadImage at 4k boundary
LoadImage can work on images as multiples of 4k, resulting the last segment with 0 length. Take care of this case
PiperOrigin-RevId: 621220520
diff --git a/sim/kelvin_top.cc b/sim/kelvin_top.cc
index dcd2b79..5bb2395 100644
--- a/sim/kelvin_top.cc
+++ b/sim/kelvin_top.cc
@@ -688,6 +688,7 @@
image_file.read(buffer, kBufferSize);
// Get the number of bytes that was read.
gcount = image_file.gcount();
+ if (gcount == 0) break;
// Write to the simulator memory.
auto res = WriteMemory(load_address, buffer, gcount);
// Check that the write succeeded, increment address if it did.
@@ -698,7 +699,7 @@
return absl::InternalError("Failed to write all the bytes");
}
load_address += gcount;
- } while (image_file.good() && (gcount > 0));
+ } while (image_file.good());
image_file.close();
return absl::OkStatus();
}