bootphase1 : {\r
        *(.startup) \r
        *(.bootphase1)\r
+       \r
+       /* It seems to be impossible to flush align a section at the\r
+          end of a memory segment. Instead, we'll put the version_information\r
+          wherever the linker wants it, and then put a pointer to the start\r
+          of the version information at the end of the section.\r
+          -- Henryk Plötz <henryk@ploetzli.ch> 2009-08-28 */\r
+          \r
+       _version_information_start = .;\r
+       *(.version_information);\r
+       \r
+       . = LENGTH(bootphase1) - 0x4; /* Skip ahead to the end */\r
+       LONG(_version_information_start)\r
     } >bootphase1\r
     \r
     bootphase2 : {\r