12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- {$ifdef go32v2}
- {$define OK}
- {$endif}
- {$ifdef linux}
- {$define OK}
- {$endif}
- { Win32 signal support is still missing ! }
- {$ifdef OK}
- {$ifdef go32v2}
- uses dpmiexcp;
- {$endif go32v2}
- {$ifdef linux}
- uses linux;
- {$endif linux}
- function our_sig(l : longint) : longint;{$ifdef linux}cdecl;{$endif}
- begin
- { If we land here the program works correctly !! }
- Writeln('Sigsegv signal recieved');
- our_sig:=0;
- Halt(0);
- end;
- Var
- Sel: Word;
- v: pointer;
- {$endif OK}
- Begin
- {$ifdef OK}
- Signal(SIGSEGV,signalhandler(@our_sig));
- { generate a sigsegv by writing to null-address }
- sel:=0;
- v:=nil;
- {$ifdef go32v2}
- { on win9X no zero page protection :( }
- v:=pointer(-2);
- {$endif go32v2}
- word(v^):=sel;
- { we should not go to here }
- Writeln('Error : signal not called');
- Halt(1);
- {$endif OK}
- end.
|