1/* 2 * CDDL HEADER START 3 * 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 7 * with the License. 8 * 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. 13 * 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] 19 * 20 * CDDL HEADER END 21 */ 22/* 23 * Copyright (c) 2001 by Sun Microsystems, Inc. 24 * All rights reserved. 25 */ 26/* 27 * Copyright (c) 2013, Joyent, Inc. All rights reserved. 28 */ 29 30/* 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. 36 * 37 * For further details - see bug#4433015 38 */ 39 40 .file "crti.s" 41 42/* 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/crt/i386/mach-crt1.s 52 */ 53 54/* 55 * _init function prologue 56 */ 57 .section .init,"ax" 58 .globl _init 59 .type _init,@function 60 .align 16 61_init: 62 pushl %ebp 63 movl %esp, %ebp 64 andl $-16,%esp 65 subl $12,%esp 66 pushl %ebx 67 call .L1 68.L1: popl %ebx 69 addl $_GLOBAL_OFFSET_TABLE_+[.-.L1], %ebx 70 71/* 72 * _fini function prologue 73 */ 74 .section .fini,"ax" 75 .globl _fini 76 .type _fini,@function 77 .align 16 78_fini: 79 pushl %ebp 80 movl %esp, %ebp 81 andl $-16,%esp 82 subl $12,%esp 83 pushl %ebx 84 call .L2 85.L2: popl %ebx 86 addl $_GLOBAL_OFFSET_TABLE_+[.-.L2], %ebx 87