csu x86_64 - properly align stack
authorAlex Hornung <ahornung@gmail.com>
Sat, 30 Jul 2011 08:04:14 +0000 (09:04 +0100)
committerAlex Hornung <ahornung@gmail.com>
Sat, 30 Jul 2011 08:14:35 +0000 (09:14 +0100)
 * Properly align the stack for the _init and _fini function calls
   as expected by the x86_64 ABI and gcc.

 * This solves a bus error (unaligned MOVDQA) with pixman and some
   other stuff using SSE.

lib/csu/x86_64/crti.S
lib/csu/x86_64/crtn.S

index e2fee49..76c3057 100644 (file)
        .globl  _init
        .type   _init,@function
 _init:
+       subq    $8,%rsp
 
        .section .fini,"ax",@progbits
        .align  4
        .globl  _fini
        .type   _fini,@function
 _fini:
+       subq    $8,%rsp
 
        .section .rodata
index 1dbbb44..4f75eae 100644 (file)
  */
 
        .section .init,"ax",@progbits
+       addq    $8,%rsp
        ret
 
        .section .fini,"ax",@progbits
+       addq    $8,%rsp
        ret
 
        .section .rodata