mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 22:09:32 +02:00
+ Add missing file for i386 solaris
git-svn-id: trunk@14138 -
This commit is contained in:
parent
e04198d96f
commit
17a838e7da
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -7054,6 +7054,7 @@ rtl/solaris/errno.inc svneol=native#text/plain
|
|||||||
rtl/solaris/errnostr.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/sighnd.inc svneol=native#text/plain
|
||||||
rtl/solaris/i386/sighndh.inc svneol=native#text/plain
|
rtl/solaris/i386/sighndh.inc svneol=native#text/plain
|
||||||
|
rtl/solaris/i386/start.inc -text svneol=unset#test/plain
|
||||||
rtl/solaris/osdefs.inc svneol=native#text/plain
|
rtl/solaris/osdefs.inc svneol=native#text/plain
|
||||||
rtl/solaris/osmacro.inc svneol=native#text/plain
|
rtl/solaris/osmacro.inc svneol=native#text/plain
|
||||||
rtl/solaris/ostypes.inc svneol=native#text/plain
|
rtl/solaris/ostypes.inc svneol=native#text/plain
|
||||||
|
@ -19,6 +19,30 @@
|
|||||||
type
|
type
|
||||||
PSigContext = ^TSigContext;
|
PSigContext = ^TSigContext;
|
||||||
TSigContext = record
|
TSigContext = record
|
||||||
|
{ WARNING: this is a blind copy of
|
||||||
|
the linux strcuture, probably totally wrong PM }
|
||||||
|
gs, __gsh: word;
|
||||||
|
fs, __fsh: word;
|
||||||
|
es, __esh: word;
|
||||||
|
ds, __dsh: word;
|
||||||
|
edi: cardinal;
|
||||||
|
esi: cardinal;
|
||||||
|
ebp: cardinal;
|
||||||
|
esp: cardinal;
|
||||||
|
ebx: cardinal;
|
||||||
|
edx: cardinal;
|
||||||
|
ecx: cardinal;
|
||||||
|
eax: cardinal;
|
||||||
|
trapno: cardinal;
|
||||||
|
err: cardinal;
|
||||||
|
eip: cardinal;
|
||||||
|
cs, __csh: word;
|
||||||
|
eflags: cardinal;
|
||||||
|
esp_at_signal: cardinal;
|
||||||
|
ss, __ssh: word;
|
||||||
|
// commented out for now : fpstate: pfpstate;
|
||||||
|
oldmask: cardinal;
|
||||||
|
cr2: cardinal;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
105
rtl/solaris/i386/start.inc
Normal file
105
rtl/solaris/i386/start.inc
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
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 <main> }
|
||||||
|
add $0xc,%esp
|
||||||
|
push %eax
|
||||||
|
push %eax
|
||||||
|
call C_exit { was exit@plt }
|
||||||
|
add $0x4,%esp
|
||||||
|
call _exit {@plt}
|
||||||
|
add $0x4,%esp
|
||||||
|
hlt
|
||||||
|
end;
|
Loading…
Reference in New Issue
Block a user