We should look into removing the loader_link_address as it is fragile and also platform-specific.
The main issue that I've encountered is that we usually place loader_link_address somewhere near the start of main memory, the loader code itself goes at loader_link_address and then directly after is the binary data for the kernel and the initial task. These are then relocated to specific places in memory decided by the tool. What happens when you have really large images is that the regions that have to be copied around end up overlapping with the location of the loader itself.
I've had to do work-arounds like #206 and #476.
We should look into removing the
loader_link_addressas it is fragile and also platform-specific.The main issue that I've encountered is that we usually place
loader_link_addresssomewhere near the start of main memory, the loader code itself goes atloader_link_addressand then directly after is the binary data for the kernel and the initial task. These are then relocated to specific places in memory decided by the tool. What happens when you have really large images is that the regions that have to be copied around end up overlapping with the location of the loader itself.I've had to do work-arounds like #206 and #476.