This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

gcc-3.2.3 + small ada patch successful on i686 Red Hat Linuxrelease 9


Hi,

The ACATS results are in a bit better (numerical stuff passing more tests) than those of
gcc version 3.2 20020903 (Red Hat Linux 8.0 3.2-7). 

I assume packager of gcc/ada for NPTL systems will want to include it
in their build, it's small and gets Ada tasking in good shape
instead of not working at all.

The patch applies to 3.3 branch too, althought I haven't tested it.
I use it on mainline and with the ACT tree too with even
better results, so there's progress in the right direction :).

Laurent

$ gcc -v
Reading specs from bin/../lib/gcc-lib/i686-pc-linux-gnu/3.2.3/specs
Configured with: /home/guerby/tmp/gcc-3.2.3/configure --prefix=/home/guerby/work/gcc/install/install-2003-04-25-22-17-17 --enable-languages=ada,c --enable-threads --disable-nls
Thread model: posix
gcc version 3.2.3

$ ./config.guess
i686-pc-linux-gnu

$ head -1 /etc/issue
Red Hat Linux release 9 (Shrike)

$ rpm -q glibc
glibc-2.3.2-11.9

$ cat /tmp/gcc-3.2.3-ada-rh9.diff
--- 5iosinte.ads.orig	2003-04-25 22:12:24.000000000 +0200
+++ 5iosinte.ads	2003-04-25 22:13:40.000000000 +0200
@@ -445,11 +443,8 @@
 
 private
 
-   type sigset_t is array (0 .. 31) of unsigned_long;
+   type sigset_t is array (0 .. 127) of unsigned_char;
    pragma Convention (C, sigset_t);
-   for sigset_t'Size use 1024;
-   --  This is for GNU libc version 2 but should be backward compatible with
-   --  other libc where sigset_t is smaller.
 
    type pid_t is new int;
 
@@ -478,7 +473,7 @@
       stackaddr     : System.Address;
       stacksize     : size_t;
    end record;
-   pragma Convention (C_Pass_By_Copy, pthread_attr_t);
+   pragma Convention (C, pthread_attr_t);
 
    type pthread_condattr_t is record
       dummy : int;
@@ -492,24 +487,28 @@
 
    type pthread_t is new unsigned_long;
 
-   type struct_pthread_queue is record
-      head : System.Address;
-      tail : System.Address;
+   type struct_pthread_fast_lock is record
+      status   : long;
+      spinlock : int;
    end record;
-   pragma Convention (C, struct_pthread_queue);
+   pragma Convention (C, struct_pthread_fast_lock);
 
    type pthread_mutex_t is record
-      m_spinlock : int;
+      m_reserved : int;
       m_count    : int;
       m_owner    : System.Address;
       m_kind     : int;
-      m_waiting  : struct_pthread_queue;
+      m_lock     : struct_pthread_fast_lock;
    end record;
    pragma Convention (C, pthread_mutex_t);
 
+   type pthread_cond_padding_t is array (0 .. 35) of unsigned_char;
+   pragma Convention (C, pthread_cond_padding_t);
+
    type pthread_cond_t is record
-      c_spinlock : int;
-      c_waiting  : struct_pthread_queue;
+      c_lock     : struct_pthread_fast_lock;
+      c_waiting  : System.Address;
+      c_padding  : pthread_cond_padding_t;
    end record;
    pragma Convention (C, pthread_cond_t);
 



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]