diff --git a/.gitattributes b/.gitattributes index acb4cf1194..d904e4bfd8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7055,7 +7055,7 @@ rtl/solaris/errno.inc svneol=native#text/plain rtl/solaris/errnostr.inc svneol=native#text/plain rtl/solaris/i386/sighnd.inc svneol=native#text/plain rtl/solaris/i386/sighndh.inc svneol=native#text/plain -rtl/solaris/i386/start.inc -text svneol=unset#text/plain +rtl/solaris/i386/start.inc svneol=native#text/plain rtl/solaris/osdefs.inc svneol=native#text/plain rtl/solaris/osmacro.inc svneol=native#text/plain rtl/solaris/ostypes.inc svneol=native#text/plain diff --git a/rtl/solaris/i386/start.inc b/rtl/solaris/i386/start.inc index cad449d25f..4024a98c7c 100644 --- a/rtl/solaris/i386/start.inc +++ b/rtl/solaris/i386/start.inc @@ -1,110 +1,110 @@ -{ - This file is part of the Free Pascal run time library. - Copyright (c) 2009 by Pierre Muller, - member of the Free Pascal development team. - - Program startup - Adapted from code generated by gcc on opensolaris 2.11 - and sparc version in - - 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. - - **********************************************************************} - - -type - TCdeclProcedure = procedure; cdecl; -function atexit(proc:TCdeclProcedure):longint;cdecl;external 'c' name 'atexit'{ @plt }; -procedure C_exit;cdecl;external 'c' name 'exit'; -procedure _exit;cdecl;external 'c' name '_exit'; -//procedure _fini;cdecl;external 'c' name '_fini'; -//procedure __fpstart;cdecl;external 'c' name '__fpstart'{ @plt }; -//procedure __fsr;cdecl;external 'c' name '__fsr'; -//procedure _init;cdecl;external 'c' name '_init'; -procedure PascalMain;cdecl;external name 'PASCALMAIN'; - - -{vars are not correctly transformed :( -var - _DYNAMIC : longint; cvar; external; - __Argv : pointer; cvar; external; - environ : pointer; cvar; external; - __get_exit_frame_monitor_ptr : pointer; cvar; external; - __do_exit_code_ptr : pointer; cvar; external; -} - -var - _environ : pointer; cvar; external; - -procedure _DYNAMIC;cdecl;external 'c' name '_DYNAMIC'; { should be weak } - -procedure __Argv;cdecl;external 'c' name '__Argv'; -//procedure environ;cdecl;external 'c' name 'environ'; -//procedure __get_exit_frame_monitor_ptr;cdecl;external 'c' name '__get_exit_frame_monitor_ptr'; -//procedure __do_exit_code_ptr;cdecl;external 'c' name '__do_exit_code_ptr'; - -{ -(top-gdb) disas _start -Dump of assembler code for function _start: } -procedure _start;assembler;nostackframe;public name '_start'; -asm - pushl $0x0 - pushl $0x0 - mov %esp,%ebp - mov $_DYNAMIC,%eax - test %eax,%eax - je .Label1 - push %edx - call atexit {@plt} - add $0x4,%esp -.Label1: - (* - push _fini - call atexit {@plt} - add $0x4,%esp - lea __get_exit_frame_monitor_ptr,%eax - mov (%eax),%eax - test %eax,%eax - je .Label2 - lea __do_exit_code_ptr,%eax - mov (%eax),%eax - test %eax,%eax - je .Label2 - push %eax - call atexit {@plt} - add $0x4,%esp - *) -.Label2: - mov 0x8(%ebp),%eax - mov %eax,argc - mov _environ,%edx - test %edx,%edx - jne .Label3 - lea 0x10(%ebp,%eax,4),%edx -.Label3: - movl %edx,_environ - movl %edx,envp - and $0xfffffff0,%esp - push %edx - lea 0xc(%ebp),%edx - mov %edx,argv - push %edx - push %eax - //call __fpstart {@plt} - //call __fsr - //call _init - call PASCALMAIN {was
} - add $0xc,%esp - push %eax - push %eax - call C_exit { was exit@plt } - add $0x4,%esp - call _exit {@plt} - add $0x4,%esp - hlt -end; +{ + This file is part of the Free Pascal run time library. + Copyright (c) 2009 by Pierre Muller, + member of the Free Pascal development team. + + Program startup + Adapted from code generated by gcc on opensolaris 2.11 + and sparc version in + + 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. + + **********************************************************************} + + +type + TCdeclProcedure = procedure; cdecl; +function atexit(proc:TCdeclProcedure):longint;cdecl;external 'c' name 'atexit'{ @plt }; +procedure C_exit;cdecl;external 'c' name 'exit'; +procedure _exit;cdecl;external 'c' name '_exit'; +//procedure _fini;cdecl;external 'c' name '_fini'; +//procedure __fpstart;cdecl;external 'c' name '__fpstart'{ @plt }; +//procedure __fsr;cdecl;external 'c' name '__fsr'; +//procedure _init;cdecl;external 'c' name '_init'; +procedure PascalMain;cdecl;external name 'PASCALMAIN'; + + +{vars are not correctly transformed :( +var + _DYNAMIC : longint; cvar; external; + __Argv : pointer; cvar; external; + environ : pointer; cvar; external; + __get_exit_frame_monitor_ptr : pointer; cvar; external; + __do_exit_code_ptr : pointer; cvar; external; +} + +var + _environ : pointer; cvar; external; + +procedure _DYNAMIC;cdecl;external 'c' name '_DYNAMIC'; { should be weak } + +procedure __Argv;cdecl;external 'c' name '__Argv'; +//procedure environ;cdecl;external 'c' name 'environ'; +//procedure __get_exit_frame_monitor_ptr;cdecl;external 'c' name '__get_exit_frame_monitor_ptr'; +//procedure __do_exit_code_ptr;cdecl;external 'c' name '__do_exit_code_ptr'; + +{ +(top-gdb) disas _start +Dump of assembler code for function _start: } +procedure _start;assembler;nostackframe;public name '_start'; +asm + pushl $0x0 + pushl $0x0 + mov %esp,%ebp + mov $_DYNAMIC,%eax + test %eax,%eax + je .Label1 + push %edx + call atexit {@plt} + add $0x4,%esp +.Label1: + (* + push _fini + call atexit {@plt} + add $0x4,%esp + lea __get_exit_frame_monitor_ptr,%eax + mov (%eax),%eax + test %eax,%eax + je .Label2 + lea __do_exit_code_ptr,%eax + mov (%eax),%eax + test %eax,%eax + je .Label2 + push %eax + call atexit {@plt} + add $0x4,%esp + *) +.Label2: + mov 0x8(%ebp),%eax + mov %eax,argc + mov _environ,%edx + test %edx,%edx + jne .Label3 + lea 0x10(%ebp,%eax,4),%edx +.Label3: + movl %edx,_environ + movl %edx,envp + and $0xfffffff0,%esp + push %edx + lea 0xc(%ebp),%edx + mov %edx,argv + push %edx + push %eax + //call __fpstart {@plt} + //call __fsr + //call _init + call PASCALMAIN {was
} + add $0xc,%esp + push %eax + push %eax + call C_exit { was exit@plt } + add $0x4,%esp + call _exit {@plt} + add $0x4,%esp + hlt +end;