Third field of SignalToRunError must be PUContext type

git-svn-id: trunk@21842 -
This commit is contained in:
pierre 2012-07-10 10:06:02 +00:00
parent 92b4c84dae
commit b0fcb8cb2f
2 changed files with 38 additions and 6 deletions
rtl/linux/mips

View File

@ -15,7 +15,7 @@
**********************************************************************}
procedure SignalToRunerror(sig : longint; SigInfo: PSigInfo; SigContext: PSigContext);cdecl;
procedure SignalToRunerror(sig : longint; SigInfo: PSigInfo; UContext: PUContext);cdecl;
var
res : word;
addr : pointer;
@ -59,10 +59,10 @@ begin
{ give runtime error at the position where the signal was raised }
if res<>0 then
begin
if assigned(SigContext) then
if assigned(UContext) then
begin
frame:=pointer(ptruint(SigContext^.sigc_regs[29])); { stack pointer }
addr:=pointer(ptruint(SigContext^.sigc_pc)); { program counter }
frame:=pointer(ptruint(UContext^.uc_mcontext.sigc_regs[29])); { stack pointer }
addr:=pointer(ptruint(UContext^.uc_mcontext.sigc_pc)); { program counter }
end
else
begin

View File

@ -45,14 +45,31 @@ struct sigcontext {
unsigned long sc_lo2;
unsigned long sc_hi3;
unsigned long sc_lo3;
}; *)
};
typedef struct ucontext
{
unsigned long int uc_flags;
struct ucontext *uc_link;
stack_t uc_stack;
mcontext_t uc_mcontext;
__sigset_t uc_sigmask;
} ucontext_t;
*)
FPReg = record
case byte of
0 : (fp_dreg : double;);
1 : (fp_reg : single;
fp_pad : cint; );
end;
PSigContext = ^TSigContext;
TSigContext = record
sigc_regmask,
sigc_status: cuint;
sigc_pc : culonglong;
sigc_regs : array[0..31] of culonglong;
sigc_fpregs : array[0..31] of culonglong;
sigc_fpregs : array[0..31] of fpreg;
sigc_fpc_csr, sigc_fpc_eir : cuint;
sigc_used_math : cuint;
sigc_dsp : cuint;
@ -62,3 +79,18 @@ struct sigcontext {
sigc_hi3,sigc_lo3 : culong;
end;
TStack = record
ss_sp : pointer;
ss_size : size_t;
ss_flags : cint;
end;
PUContext = ^TUContext;
TUContext = record
uc_flags : culong;
uc_link : PUContext;
uc_stack : TStack;
uc_mcontext : TSigContext;
uc_sigmask : TSigSet;
end;