_Znwm and etc

This commit is contained in:
Pavel 2022-12-08 11:54:58 +03:00
parent d794ee6ac0
commit 6e2cbf38c5
2 changed files with 208 additions and 0 deletions

View File

@ -260,6 +260,25 @@ begin
lib^.set_proc($6C6B8377791654A4,@ps4_bGuDd3kWVKQ); lib^.set_proc($6C6B8377791654A4,@ps4_bGuDd3kWVKQ);
lib^.set_proc($7FD2D5C8DF0ACBC8,@ps4_f9LVyN8Ky8g); lib^.set_proc($7FD2D5C8DF0ACBC8,@ps4_f9LVyN8Ky8g);
lib^.set_proc($46A784ACEDDC1475,@ps4__ZSt15set_new_handlerPFvvE);
lib^.set_proc($0A46340156BF7EB8,@ps4__ZSt15get_new_handlerv);
lib^.set_proc($85D9B461F31AED34,@ps4__Znam);
lib^.set_proc($7C99E9B955416CA9,@ps4__Znwm);
lib^.set_proc($AF25310FFEB46CA3,@ps4__ZnwmRKSt9nothrow_t);
lib^.set_proc($261E6A51CC224849,@ps4__ZnamRKSt9nothrow_t);
lib^.set_proc($30B5A5F7448558D1,@ps4__ZdaPv);
lib^.set_proc($14EB79E5935A5499,@ps4__ZdaPvm);
lib^.set_proc($EE50A2848D7C37D2,@ps4__ZdaPvmRKSt9nothrow_t);
lib^.set_proc($9BF7D2A3711BC4D0,@ps4__ZdaPvRKSt9nothrow_t);
lib^.set_proc($CFE3FEC429D62C19,@ps4__ZdlPv);
lib^.set_proc($9580F3055139999B,@ps4__ZdlPvm);
lib^.set_proc($ED53C8605A705360,@ps4__ZdlPvmRKSt9nothrow_t);
lib^.set_proc($31CB069EA57AC911,@ps4__ZdlPvRKSt9nothrow_t);
lib^.set_proc($4AE73C5B440FC63C,@ps4__ZdaPvS_);
lib^.set_proc($D6FA3AAAAA9AF45E,@ps4__ZdlPvS_);
lib:=Result._add_lib('libSceLibcInternalExt'); lib:=Result._add_lib('libSceLibcInternalExt');
lib^.set_proc($356B53375D1C2731,@ps4_sceLibcHeapGetTraceInfo); lib^.set_proc($356B53375D1C2731,@ps4_sceLibcHeapGetTraceInfo);

View File

@ -188,9 +188,29 @@ function ps4_f9LVyN8Ky8g:Pointer; SysV_ABI_CDecl; //f9LVyN8Ky8g
procedure ps4_sceLibcHeapGetTraceInfo(P:PGetTraceInfo); SysV_ABI_CDecl; procedure ps4_sceLibcHeapGetTraceInfo(P:PGetTraceInfo); SysV_ABI_CDecl;
function ps4__ZSt15set_new_handlerPFvvE(new_p:Pointer):Pointer; SysV_ABI_CDecl;
function ps4__ZSt15get_new_handlerv:Pointer; SysV_ABI_CDecl;
function ps4__Znam(count:qword):Pointer; SysV_ABI_CDecl;
function ps4__Znwm(count:qword):Pointer; SysV_ABI_CDecl;
function ps4__ZnwmRKSt9nothrow_t(count:qword;tag:Pointer):Pointer; SysV_ABI_CDecl;
function ps4__ZnamRKSt9nothrow_t(count:qword;tag:Pointer):Pointer; SysV_ABI_CDecl;
procedure ps4__ZdaPv(ptr:Pointer); SysV_ABI_CDecl;
procedure ps4__ZdaPvm(ptr:Pointer;size:qword); SysV_ABI_CDecl;
procedure ps4__ZdaPvmRKSt9nothrow_t(ptr:Pointer;size:qword;tag:Pointer); SysV_ABI_CDecl;
procedure ps4__ZdaPvRKSt9nothrow_t(ptr,tag:Pointer); SysV_ABI_CDecl;
procedure ps4__ZdlPv(ptr:Pointer); SysV_ABI_CDecl;
procedure ps4__ZdlPvm(ptr:Pointer;size:qword); SysV_ABI_CDecl;
procedure ps4__ZdlPvmRKSt9nothrow_t(ptr:Pointer;size:qword;tag:Pointer); SysV_ABI_CDecl;
procedure ps4__ZdlPvRKSt9nothrow_t(ptr,tag:Pointer); SysV_ABI_CDecl;
procedure ps4__ZdaPvS_(ptr,place:Pointer); SysV_ABI_CDecl;
procedure ps4__ZdlPvS_(ptr,place:Pointer); SysV_ABI_CDecl;
implementation implementation
uses uses
atomic,
sys_kernel, sys_kernel,
sys_signal; sys_signal;
@ -3762,6 +3782,175 @@ begin
P^.mstate_table :=@g_mstate_table; P^.mstate_table :=@g_mstate_table;
end; end;
//
var
g_std_new_handler:Pointer=nil;
//_func_void * std::set_new_handler(_func_void *new_p)
function ps4__ZSt15set_new_handlerPFvvE(new_p:Pointer):Pointer; SysV_ABI_CDecl;
begin
Result:=XCHG(g_std_new_handler,new_p);
end;
//_func_void * std::get_new_handler(void)
function ps4__ZSt15get_new_handlerv:Pointer; SysV_ABI_CDecl;
begin
Result:=load_acq_rel(g_std_new_handler);
end;
//
//void * operator.new[](ulong count)
function ps4__Znam(count:qword):Pointer; SysV_ABI_CDecl;
var
addr:Pointer;
handler:TProcedure;
begin
if (count=0) then count:=1;
While (true) do
begin
addr:=ps4_malloc(count);
if (addr<>nil) then Exit(addr);
handler:=TProcedure(ps4__ZSt15get_new_handlerv);
if (handler=nil) then Break;
handler();
end;
Assert(false,'std::_Xbad_alloc');
end;
//void * operator.new(ulong count)
function ps4__Znwm(count:qword):Pointer; SysV_ABI_CDecl;
var
addr:Pointer;
handler:TProcedure;
begin
if (count=0) then count:=1;
While (true) do
begin
addr:=ps4_malloc(count);
if (addr<>nil) then Exit(addr);
handler:=TProcedure(ps4__ZSt15get_new_handlerv);
if (handler=nil) then Break;
handler();
end;
Assert(false,'std::_Xbad_alloc');
end;
//void * operator.new(ulong count,nothrow_t *tag)
function ps4__ZnwmRKSt9nothrow_t(count:qword;tag:Pointer):Pointer; SysV_ABI_CDecl;
var
addr:Pointer;
handler:TProcedure;
begin
if (count=0) then count:=1;
While (true) do
begin
addr:=ps4_malloc(count);
if (addr<>nil) then Break;
handler:=TProcedure(ps4__ZSt15get_new_handlerv);
if (handler=nil) then Break;
handler();
end;
Result:=addr;
end;
//void * operator.new[](ulong count,nothrow_t *tag)
function ps4__ZnamRKSt9nothrow_t(count:qword;tag:Pointer):Pointer; SysV_ABI_CDecl;
begin
Result:=ps4__ZnwmRKSt9nothrow_t(count,tag);
end;
//
//void operator.delete[](void *ptr)
procedure ps4__ZdaPv(ptr:Pointer); SysV_ABI_CDecl;
begin
if (ptr<>nil) then
begin
ps4_free(ptr);
end;
end;
//void operator.delete[](void *ptr,ulong size)
procedure ps4__ZdaPvm(ptr:Pointer;size:qword); SysV_ABI_CDecl;
begin
if (ptr<>nil) then
begin
ps4_free(ptr);
end;
end;
//void operator.delete[](void *ptr,ulong size,nothrow_t *tag)
procedure ps4__ZdaPvmRKSt9nothrow_t(ptr:Pointer;size:qword;tag:Pointer); SysV_ABI_CDecl;
begin
if (ptr<>nil) then
begin
ps4_free(ptr);
end;
end;
//void operator.delete[](void *ptr,nothrow_t *tag)
procedure ps4__ZdaPvRKSt9nothrow_t(ptr,tag:Pointer); SysV_ABI_CDecl;
begin
if (ptr<>nil) then
begin
ps4_free(ptr);
end;
end;
//void operator.delete(void *ptr)
procedure ps4__ZdlPv(ptr:Pointer); SysV_ABI_CDecl;
begin
if (ptr<>nil) then
begin
ps4_free(ptr);
end;
end;
//void operator.delete(void *ptr,ulong size)
procedure ps4__ZdlPvm(ptr:Pointer;size:qword); SysV_ABI_CDecl;
begin
if (ptr<>nil) then
begin
ps4_free(ptr);
end;
end;
//void operator.delete(void *ptr,ulong size,nothrow_t *tag)
procedure ps4__ZdlPvmRKSt9nothrow_t(ptr:Pointer;size:qword;tag:Pointer); SysV_ABI_CDecl;
begin
if (ptr<>nil) then
begin
ps4_free(ptr);
end;
end;
//void operator.delete(void *ptr,nothrow_t *tag)
procedure ps4__ZdlPvRKSt9nothrow_t(ptr,tag:Pointer); SysV_ABI_CDecl;
begin
if (ptr<>nil) then
begin
ps4_free(ptr);
end;
end;
//void operator.delete[](void *ptr,void *place)
procedure ps4__ZdaPvS_(ptr,place:Pointer); SysV_ABI_CDecl;
begin
//
end;
//void operator.delete(void *ptr,void *place)
procedure ps4__ZdlPvS_(ptr,place:Pointer); SysV_ABI_CDecl;
begin
//
end;
end. end.