1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
/*
* Copyright (c) 1993 Eric Youngdale, Peter MacDonald, David Engel
* and Hongjiu Lu.
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. The name of the above contributors may not be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/* Notice of general intent:
*
* The linux operating system generally contains large amounts of code
* that fall under the GNU General Public License, or GPL for short.
* This file contains source code that by it's very nature would always
* be linked with an application program, and because of this a GPL type
* of copyright on this file would place restrictions upon the
* distribution of binary-only commercial software. Since the goal of the
* Linux project as a whole is not to discourage the development and
* distribution of commercial software for Linux, this file has been placed
* under a more relaxed BSD-style of copyright.
*
* It is the general understanding of the above contributors that a
* program executable linked to a library containing code that falls
* under the GPL or GLPL style of license is not subject to the terms of
* the GPL or GLPL license if the program executable(s) that are supplied
* are linked to a shared library form of the GPL or GLPL library, and as long
* as the form of the shared library is such that it is possible for
* the end user to modify and rebuild the library and use it in
* conjunction with the program executable.
*/
/* Changes by Tristan Gingold
* does not handle the shared libraries
* call __chkr_init_chkr before main
*/
.file "chkrcrt0.S"
.stabs "/libc-linux/sysdeps/linux/i386/crt/",100,0,0,__entry
.stabs "chkrcrt0.S",100,0,0,__entry
.text
.globl ___crt_dummy__
___crt_dummy__:
__entry:
/*
* This is important, and was missing from the new version...
*/
movl $45,%eax
movl $0,%ebx
int $0x80
movl %eax,____brk_addr
/*
* just set the __chkr_maccess flag
*/
movl %eax,___chkr_maccess
/*
* ok, set up the 387 flags and ___environ.
*/
fldcw init_cw
movl 8(%esp),%eax
movl %eax,___environ
/*
* The next thing we do is initialize Checker.
* Because 387 flags are set, Checker can use the FPU.
*/
call ___chkr_init_chkr
/*
* Now we can call __setfpucw and _main
*/
movzwl ___fpu_control,%eax
call chkr_0_5_2_4_chkr /* for the pushl */
pushl %eax
call ___setfpucw
addl $4,%esp
/* Some functions may be needed. */
call ___libc_init
call chkr_0_5_0_4_chkr /* for the call */
call _main
call chkr_0_5_2_4_chkr /* for pushl */
pushl %eax
call _exit
/*
* Just in case _exit fails... We use int $0x80 for __exit().
*/
popl %ebx
done:
movl $1,%eax
int $0x80
jmp done
.stabd 68,0,1
.stabs "__entry:F39",36,0,1,__entry
#ifdef __i486__
.align 4,0x90
#else
.align 2,0x90
#endif
init_cw:
.word 0x1372
|