mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-12 09:30:08 +02:00
* invoke _csu_finish before __init the OpenBSD x86_64 C library startup code
git-svn-id: trunk@42076 -
This commit is contained in:
parent
77f86d22a5
commit
058336db40
@ -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;
|
||||
|
||||
@ -38,9 +39,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;
|
||||
|
||||
@ -45,9 +46,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