crti.s revision a86e931db9089f6b514c9b98b206d0eb2c1a2a34
/*
* 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
* 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
*/
/*
* Note that when _init and _fini are called we have 16-byte alignment per the
* ABI. We need to make sure that our asm leaves it such that subsequent calls
* will be aligned. gcc expects stack alignment before the call instruction is
* executed. Specifically if we call function foo(), the stack pointer will be
* 0xc aligned after executing the call instruction and before executing foo's
* prologue. Note that because 16-byte alignment also ensures 4-byte alignment
* we will not be breaking compatibility with older applications.
*/
/*
* _init function prologue
*/
.align 16
/*
* _fini function prologue
*/
.align 16