mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-09 00:08:12 +02:00
* invoke _csu_finish before __init in the OpenBSD i386 C library startup code
git-svn-id: trunk@42132 -
This commit is contained in:
parent
62a572e484
commit
2fdef04a28
@ -18,6 +18,7 @@
|
||||
|
||||
procedure __init; cdecl; external name '__init';
|
||||
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;
|
||||
|
||||
@ -41,9 +42,11 @@ function _strrchr(str: PChar; character: LongInt): PChar; forward;
|
||||
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; cleanup: TCdeclProcedure); cdecl;
|
||||
var
|
||||
I: SizeUInt;
|
||||
environp: PPPChar;
|
||||
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_argv:=argv;
|
||||
if argv[0]<>nil then
|
||||
|
@ -25,6 +25,7 @@ function atexit(proc: TCdeclProcedure): cint; cdecl; external name 'atexit';
|
||||
procedure _monstartup(lowpc, highpc: u_long); cdecl; external name '_monstartup';
|
||||
procedure __init; cdecl; external name '__init';
|
||||
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;
|
||||
|
||||
@ -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;
|
||||
var
|
||||
I: SizeUInt;
|
||||
environp: PPPChar;
|
||||
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_argv:=argv;
|
||||
if argv[0]<>nil then
|
||||
|
Loading…
Reference in New Issue
Block a user