فهرست منبع

* tried to fix x86-64 signal handling

florian 21 سال پیش
والد
کامیت
d531e303f9
3فایلهای تغییر یافته به همراه31 افزوده شده و 17 حذف شده
  1. 10 7
      rtl/linux/osmain.inc
  2. 5 4
      rtl/linux/ossysc.inc
  3. 16 6
      rtl/linux/signal.inc

+ 10 - 7
rtl/linux/osmain.inc

@@ -515,13 +515,13 @@ begin
   FillChar(act, sizeof(SigActionRec),0);
   FillChar(act, sizeof(SigActionRec),0);
   { initialize handler                    }
   { initialize handler                    }
   act.sa_handler := signalhandler(@SignalToRunError);
   act.sa_handler := signalhandler(@SignalToRunError);
-{$ifdef CPUARM}
+{$ifdef RTSIGACTION}
   act.sa_flags:=4;
   act.sa_flags:=4;
-{$endif CPUARM}
-  FpSigAction(SIGFPE,@act,@oldact);
-  FpSigAction(SIGSEGV,@act,@oldact);
-  FpSigAction(SIGBUS,@act,@oldact);
-  FpSigAction(SIGILL,@act,@oldact);
+{$endif RTSIGACTION}
+  FpSigAction(SIGFPE,@act,nil);
+  FpSigAction(SIGSEGV,@act,nil);
+  FpSigAction(SIGBUS,@act,nil);
+  FpSigAction(SIGILL,@act,nil);
 end;
 end;
 
 
 procedure SetupCmdLine;
 procedure SetupCmdLine;
@@ -584,7 +584,10 @@ end;
 
 
 {
 {
  $Log$
  $Log$
- Revision 1.15  2004-04-22 21:16:35  peter
+ Revision 1.16  2004-04-27 20:47:00  florian
+   * tried to fix x86-64 signal handling
+
+ Revision 1.15  2004/04/22 21:16:35  peter
    * do_write/do_read fix
    * do_write/do_read fix
 
 
  Revision 1.14  2004/03/27 14:33:45  florian
  Revision 1.14  2004/03/27 14:33:45  florian

+ 5 - 4
rtl/linux/ossysc.inc

@@ -475,7 +475,7 @@ CONST
   MAP_ANONYMOUS =$20;
   MAP_ANONYMOUS =$20;
 
 
   {Constansts Termios/Ioctl (used in Do_IsDevice) }
   {Constansts Termios/Ioctl (used in Do_IsDevice) }
-  {$ifdef PowerPc}
+  {$ifdef PowerPC}
   IOCtl_TCGETS=$402c7413;
   IOCtl_TCGETS=$402c7413;
   {$else}
   {$else}
   IOCtl_TCGETS=$5401; // TCGETS is also in termios.inc, but the sysunix needs only this
   IOCtl_TCGETS=$5401; // TCGETS is also in termios.inc, but the sysunix needs only this
@@ -509,7 +509,10 @@ end;
 
 
 {
 {
  $Log$
  $Log$
- Revision 1.22  2004-04-25 07:18:49  florian
+ Revision 1.23  2004-04-27 20:47:00  florian
+   * tried to fix x86-64 signal handling
+
+ Revision 1.22  2004/04/25 07:18:49  florian
    * mmap for x86-64 fixed
    * mmap for x86-64 fixed
 
 
  Revision 1.21  2004/04/20 20:27:01  florian
  Revision 1.21  2004/04/20 20:27:01  florian
@@ -579,6 +582,4 @@ end;
 
 
  Revision 1.1  2002/11/12 14:40:18  marco
  Revision 1.1  2002/11/12 14:40:18  marco
   * The syscall core of the new system unit.
   * The syscall core of the new system unit.
-
-
 }
 }

+ 16 - 6
rtl/linux/signal.inc

@@ -88,7 +88,7 @@ type
            status: cardinal;
            status: cardinal;
   end;
   end;
 
 
-  SigSet  =  array[0..wordsinsigset-1] of Longint;
+  SigSet  =  array[0..wordsinsigset-1] of cint;
   sigset_t= SigSet;
   sigset_t= SigSet;
   PSigSet = ^SigSet;
   PSigSet = ^SigSet;
   psigset_t=psigset;
   psigset_t=psigset;
@@ -343,6 +343,13 @@ type
   TSigAction = procedure(Sig: Longint; SigContext: SigContextRec);cdecl;
   TSigAction = procedure(Sig: Longint; SigContext: SigContextRec);cdecl;
 
 
 
 
+{$ifdef CPUARM}
+{$define NEWSIGNAL}
+{$endif CPUARM}
+
+{$ifdef CPUx86_64}
+{$define NEWSIGNAL}
+{$endif CPUx86_64}
 
 
   SigActionRec = packed record  // this is temporary for the migration
   SigActionRec = packed record  // this is temporary for the migration
    {$ifdef posixworkaround}
    {$ifdef posixworkaround}
@@ -354,22 +361,25 @@ type
         1: (Sa: TSigAction);
         1: (Sa: TSigAction);
       end;
       end;
    {$endif}
    {$endif}
-   {$ifdef CPUARM}
-    Sa_Flags    : Longint;
+   {$ifdef NEWSIGNAL}
+    Sa_Flags    : cuint;
     Sa_restorer : SignalRestorer; { Obsolete - Don't use }
     Sa_restorer : SignalRestorer; { Obsolete - Don't use }
     Sa_Mask     : SigSet;
     Sa_Mask     : SigSet;
-   {$else CPUARM}
+   {$else NEWSIGNAL}
     Sa_Mask     : SigSet;
     Sa_Mask     : SigSet;
     Sa_Flags    : Longint;
     Sa_Flags    : Longint;
     Sa_restorer : SignalRestorer; { Obsolete - Don't use }
     Sa_restorer : SignalRestorer; { Obsolete - Don't use }
-   {$endif CPUARM}
+   {$endif NEWSIGNAL}
   end;
   end;
   TSigActionRec = SigActionRec;
   TSigActionRec = SigActionRec;
   PSigActionRec = ^SigActionRec;
   PSigActionRec = ^SigActionRec;
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.17  2004-03-27 14:35:13  florian
+  Revision 1.18  2004-04-27 20:47:00  florian
+    * tried to fix x86-64 signal handling
+
+  Revision 1.17  2004/03/27 14:35:13  florian
     * structs for arm adapted
     * structs for arm adapted
 
 
   Revision 1.16  2004/02/05 01:16:12  florian
   Revision 1.16  2004/02/05 01:16:12  florian