Print this page
6507 i386 makecontext(3c) needs to 16-byte align the stack

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/common/i386/crti.s
          +++ new/usr/src/lib/common/i386/crti.s
↓ open down ↓ 32 lines elided ↑ open up ↑
  33   33   * libraries.  The are only be to included in libraries which
  34   34   * contain *no* C++ code and want to avoid the startup code
  35   35   * that the C++ runtime has introduced into the crt*.o modules.
  36   36   *
  37   37   * For further details - see bug#4433015
  38   38   */
  39   39  
  40   40          .file   "crti.s"
  41   41  
  42   42  /*
  43      - * Note that when _init and _fini are called we have 16-byte alignment per the
  44      - * ABI. We need to make sure that our asm leaves it such that subsequent calls
  45      - * will be aligned. gcc expects stack alignment before the call instruction is
  46      - * executed. Specifically if we call function foo(), the stack pointer will be
  47      - * 0xc aligned after executing the call instruction and before executing foo's
  48      - * prologue. Note that because 16-byte alignment also ensures 4-byte alignment
  49      - * we will not be breaking compatibility with older applications.
       43 + * Note that when _init and _fini are called the stack needs to be 16-byte
       44 + * aligned with a 4-byte bias.  See comment in lib/libc/i386/gen/makectxt.c.
       45 + *
       46 + * Note: If you change it, you need to change it in the following files as
       47 + * well:
       48 + *
       49 + *  - lib/libc/i386/threads/machdep.c
       50 + *  - lib/libc/i386/gen/makectxt.c
       51 + *  - lib/common/i386/crt1.s
  50   52   */
  51   53  
  52   54  /*
  53   55   * _init function prologue
  54   56   */
  55   57          .section        .init,"ax"
  56   58          .globl  _init
  57   59          .type   _init,@function
  58   60          .align  16
  59   61  _init:
↓ open down ↓ 25 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX