Proposal Details
Currently I am using TamaGo to compile go to run on bare metal. The memory layout for the bare metal device assumes that RAM starts from a specific address. Looking at the linker, it seems to put data like BSS after .text.
Possible change
Looking in the linker, I think an if statement could be added after this line to check if -D was supplied:
// If -D flag is specified, use it
if *FlagDataAddr != -1 {
va = uint64(*FlagDataAddr)
}
and then a change in layout since it seems to assume that virtual addresses are contiguous
Note
It's not possible to use an external linker in this case. Opening this up assuming that this flag is useful in general