|
@@ -25,6 +25,7 @@ function atexit(proc: TCdeclProcedure): cint; cdecl; external name 'atexit';
|
|
procedure _monstartup(lowpc, highpc: u_long); cdecl; external name '_monstartup';
|
|
procedure _monstartup(lowpc, highpc: u_long); cdecl; external name '_monstartup';
|
|
procedure __init; cdecl; external name '__init';
|
|
procedure __init; cdecl; external name '__init';
|
|
procedure c_exit(exit_code: cint); cdecl; noreturn; external name 'exit';
|
|
procedure c_exit(exit_code: cint); cdecl; noreturn; external name 'exit';
|
|
|
|
+function _csu_finish(_argv: PPChar; _envp: PPChar; _cleanup: TCdeclProcedure): PPPChar; cdecl; external name '_csu_finish';
|
|
|
|
|
|
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; cleanup: TCdeclProcedure); cdecl; forward;
|
|
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; cleanup: TCdeclProcedure); cdecl; forward;
|
|
|
|
|
|
@@ -48,9 +49,11 @@ function _strrchr(str: PChar; character: LongInt): PChar; forward;
|
|
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; cleanup: TCdeclProcedure); cdecl;
|
|
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; cleanup: TCdeclProcedure); cdecl;
|
|
var
|
|
var
|
|
I: SizeUInt;
|
|
I: SizeUInt;
|
|
|
|
+ environp: PPPChar;
|
|
begin
|
|
begin
|
|
- environ:=envp;
|
|
|
|
- operatingsystem_parameter_envp:=envp;
|
|
|
|
|
|
+ environp:=_csu_finish(argv, envp, cleanup);
|
|
|
|
+ environ:=environp^;
|
|
|
|
+ operatingsystem_parameter_envp:=environ;
|
|
operatingsystem_parameter_argc:=argc;
|
|
operatingsystem_parameter_argc:=argc;
|
|
operatingsystem_parameter_argv:=argv;
|
|
operatingsystem_parameter_argv:=argv;
|
|
if argv[0]<>nil then
|
|
if argv[0]<>nil then
|