title: Advice on linker script creation and verification
body: <p><strong><em>Long story short. I wish to learn how to create a good linker script so that should I change platforms/architectures/vendors, I'm not stuck at ground zero again with not knowing what to do. I'm not concerned with the difficulty of the task, so much as understanding it.</em></strong></p>
  
  <p>I've started a sort of <a href="https://github.com/Crewe/et-stm32f103rb-dev/" rel="nofollow noreferrer">project</a>, as it were, to create a base or skeleton for programing and developing on STM's 32-bit Cortex-M3 chips. With the help of <a href="https://github.com/jsiei97" rel="nofollow noreferrer">jsiei97</a> Beginning with the STM32F103RB (I also have a TI Stellaris LM3S828, but that's another issue), without the need of a licensed IDE. Since I am a student, and most students can't afford such things.</p>
  
  <p>I understand that there's the ODev, and Eclipse Plugins and what not, and have read various blogs, wikis, docs/man pages and most projects provide you with a linker script with little to know explanation as to why and where things have been defined.</p>
  
  <p>I've compiled an arm-none-eabi toolchain for the STM32 but where I get hung up is in the linker script. CodeSourcery also requires one as well. I have a basic concept of how to create them and their syntax after reading the gnu man pages, but I simply haven't a clue where to start with putting in the various extra sections apart from the obvious .text, .bss and .data. </p>
  
  <p>I created a <a href="https://github.com/Crewe/et-stm32f103rb-dev/blob/master/stm32f103rb.ld" rel="nofollow noreferrer">rudimentary version</a> but I get linking errors asking for section definitions and that's where I get stuck. I know how to define them, but knowing if what I'm doing is even close to right is the problem.</p>