blob: 40dff93a097e17d55a9fbb36c4ca8e59cc9b958e [file] [log] [blame]
/*
* 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