mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-17 10:39:33 +02:00
* a.out profile prt, not tested
This commit is contained in:
parent
c2d12e9d96
commit
69a42cc570
70
rtl/linux/i386/gprt0.as
Normal file
70
rtl/linux/i386/gprt0.as
Normal file
@ -0,0 +1,70 @@
|
||||
#
|
||||
# $Id$
|
||||
# This file is part of the Free Pascal run time library.
|
||||
# Copyright (c) 1993,97 by Michael Van Canneyt and Peter Vreman
|
||||
# members of the Free Pascal development team.
|
||||
#
|
||||
# See the file COPYING.FPC, included in this distribution,
|
||||
# for details about the copyright.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY;without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
#
|
||||
#**********************************************************************}
|
||||
#
|
||||
# Linux a.out startup code with profiling support for Free Pascal
|
||||
# Note: Needs linking with -lgmon and -lc
|
||||
#
|
||||
|
||||
.file "gprt0.as"
|
||||
.text
|
||||
.globl __entry
|
||||
__entry:
|
||||
movl 8(%esp),%eax /* Move the environment pointer */
|
||||
movl 4(%esp),%ebx /* Move the argument pointer */
|
||||
movl (%esp),%ecx /* Move the argument counter */
|
||||
|
||||
movl %eax,U_SYSLINUX_ENVP
|
||||
movl %ebx,U_SYSLINUX_ARGV
|
||||
movl %ecx,U_SYSLINUX_ARGC
|
||||
|
||||
pushl $_etext /* Initialize gmon */
|
||||
pushl $_start
|
||||
call monstartup
|
||||
addl $8,%esp
|
||||
pushl $_mcleanup
|
||||
call atexit
|
||||
addl $4,%esp
|
||||
|
||||
call PASCALMAIN
|
||||
|
||||
.globl _haltproc
|
||||
.type _haltproc,@function
|
||||
_haltproc:
|
||||
xorl %ebx,%ebx /* load and save exitcode */
|
||||
movw U_SYSLINUX_EXITCODE,%bx
|
||||
pushl %ebx
|
||||
|
||||
call exit /* call libc exit, this will */
|
||||
/* write the gmon.out */
|
||||
|
||||
movl $1,%eax /* exit call */
|
||||
popl %ebx
|
||||
int $0x80
|
||||
jmp _haltproc
|
||||
|
||||
.data
|
||||
.align 4
|
||||
.globl ___brk_addr
|
||||
.type ___brk_addr,@object
|
||||
.size ___brk_addr,4
|
||||
___brk_addr:
|
||||
.long 0
|
||||
|
||||
.globl __curbrk /* necessary for libc */
|
||||
.type __curbrk,@object
|
||||
.size __curbrk,4
|
||||
__curbrk:
|
||||
.long 0
|
||||
|
Loading…
Reference in New Issue
Block a user