Where did the addresses used in the linker (.text and data) script come from? I work mostly in bare-metal embedded world and I use linker scripts but in my world the micro architecture defines where FLASH and RAM are located. How does it work when the application runs inside an OS?