csu: Add .note.ABI-tag and .note.GNU-stack For all arches except sparc, gcc emits the section directive for the following struct with a PROGBITS type. However, newer versions of binutils (after 2.16.90) require the section to be of NOTE type, to guarantee that the .note.ABI-tag section correctly ends up in the first page of the final executable. Unfortunately, there is no clean way to tell gcc to use another section type, so this C file (or the C file that includes it) must be compiled in multiple steps: - Compile the .c file to a .s file. - Edit the .s file to change the 'progbits' type to 'note', for the section directive that defines the .note.ABI-tag section. - Compile the .s file to an object file. These steps are done in the invididual Makefiles for each applicable arch. Taken-from: FreeBSD SVN 217375 (13 JAN 2011) On i386 crtn.S: Keep the stack aligned to a 16 byte boundary when calling init functions so that we don't cause a bus error if they start storing SSE math stuff on the stack. Taken-from: FreeBSD SVN 146369 (19 MAY 2005)