4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright (c) 2001 by Sun Microsystems, Inc.
24 * All rights reserved.
27 * Copyright (c) 2013, Joyent, Inc. All rights reserved.
31 * These crt*.o modules are provided as the bare minimum required
32 * from a crt*.o for inclusion in building low level system
33 * libraries. The are only be to included in libraries which
34 * contain *no* C++ code and want to avoid the startup code
35 * that the C++ runtime has introduced into the crt*.o modules.
37 * For further details - see bug#4433015
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.
53 * _init function prologue
67 addl $_GLOBAL_OFFSET_TABLE_+
[.-.L1], %ebx
70 * _fini function prologue
84 addl $_GLOBAL_OFFSET_TABLE_+
[.-.L2], %ebx