| /* |
| * CDDL HEADER START |
| * |
| * The contents of this file are subject to the terms of the |
| * Common Development and Distribution License, Version 1.0 only |
| * (the "License"). You may not use this file except in compliance |
| * with the License. |
| * |
| * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
| * or http://www.opensolaris.org/os/licensing. |
| * See the License for the specific language governing permissions |
| * and limitations under the License. |
| * |
| * When distributing Covered Code, include this CDDL HEADER in each |
| * file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
| * If applicable, add the following below this CDDL HEADER, with the |
| * fields enclosed by brackets "[]" replaced with your own identifying |
| * information: Portions Copyright [yyyy] [name of copyright owner] |
| * |
| * CDDL HEADER END |
| */ |
| /* |
| * Copyright (c) 2001 by Sun Microsystems, Inc. |
| * All rights reserved. |
| */ |
| /* |
| * Copyright (c) 2013, Joyent, Inc. All rights reserved. |
| */ |
| |
| /* |
| * These crt*.o modules are provided as the bare minimum required |
| * from a crt*.o for inclusion in building low level system |
| * libraries. The are only be to included in libraries which |
| * contain *no* C++ code and want to avoid the startup code |
| * that the C++ runtime has introduced into the crt*.o modules. |
| * |
| * For further details - see bug#4433015 |
| */ |
| |
| .file "crti.s" |
| .ident "" |
| |
| /* |
| * Note that when _init and _fini are called the stack needs to be 16-byte |
| * aligned with a 4-byte bias. See comment in lib/libc/i386/gen/makectxt.c. |
| * |
| * Note: If you change it, you need to change it in the following files as |
| * well: |
| * |
| * - lib/libc/i386/threads/machdep.c |
| * - lib/libc/i386/gen/makectxt.c |
| * - lib/crt/i386/mach-crt1.s |
| */ |
| |
| /* |
| * _init function prologue |
| */ |
| .section .init,"ax" |
| .globl _init |
| .type _init,@function |
| .align 16 |
| _init: |
| pushl %ebp |
| movl %esp, %ebp |
| andl $-16,%esp |
| subl $12,%esp |
| pushl %ebx |
| call .L1 |
| .L1: popl %ebx |
| addl $_GLOBAL_OFFSET_TABLE_+[.-.L1], %ebx |
| |
| /* |
| * _fini function prologue |
| */ |
| .section .fini,"ax" |
| .globl _fini |
| .type _fini,@function |
| .align 16 |
| _fini: |
| pushl %ebp |
| movl %esp, %ebp |
| andl $-16,%esp |
| subl $12,%esp |
| pushl %ebx |
| call .L2 |
| .L2: popl %ebx |
| addl $_GLOBAL_OFFSET_TABLE_+[.-.L2], %ebx |