From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,b99f8f34eb99392b X-Google-Attributes: gid103376,public From: "David C. Hoos, Sr." Subject: Re: a tisket - NO TASKet Date: 1998/10/09 Message-ID: X-Deja-AN: 399305571 References: <6vjpvq$fdf$1@usenet44.supernews.com> Newsgroups: comp.lang.ada X-Mimeole: Produced By Microsoft MimeOLE V4.72.3110.3 Date: 1998-10-09T00:00:00+00:00 List-Id: alan walkington wrote in message <6vjpvq$fdf$1@usenet44.supernews.com>... >Horrors > >Redhat 5.1, intel box, latest free gnat (2.10? .. whatever). > >Attempting to execute ANY program with tasking gets a > Seg fault during elaboration of the _adainit internal > >>>'system_interupt_management___elabb'<<< > >Have had no problems with anything else, but even the >simplest tasking example fails to execute. > >Help anyone?????? > A number of people have found that this solution works for them. The cause of the segmentation fault is the change of the size of sigset_t from 32 bits to 1024 bits. I have posted this message several times on gnat chat -- so here it is again: For what it's worth, Here's how I have gnat-3.10p running on RedHat 5.0. I did it originally with the 2.0.31 kernel, the upgraded to the 2.0.32 kernel. The fundamental problem is that RedHat 5.0 increases the size of sigset_t from 32 bits to 1024 bits. To correct this problem, the file s-osinte.ads needs to be altered -- e.g. as follows: 591c591,593 < type sigset_t is new unsigned_long; --- > SIGSET_NWORDS : constant := 1024 / (unsigned_long'Size); > > type sigset_t is array (1 .. SIGSET_NWORDS) of unsigned_long; Then, the adalib(s) need to be compiled -- either the native linux threads runtime or the Florida State University (fsu) runtime, or both. To do this I executed the following script in each adalib directory: #!/bin/tcsh -f foreach f (../adainclude/*.ad[bs]) gcc -c -O2 -gnatpga -I- $f end To be sure, this script re-compiles some stuff not rendered obsolete by the change to s-osinte.ads, but it was quicker just to recompile everything than to figure out what needed to be recompiled. Next, the libgnat.a archive needs to be rebuilt with something like: ar ru libgnat.a *.o, in each of the adalibs. In my case, the size of the libgnat.a file for the native rts changed as follows: -rw-r--r-- 1 root root 1747090 Feb 14 12:21 ../adalib/libgnat.a -rw-r--r-- 1 4168 1100 1740584 Aug 24 1997 ../adalib/libgnat.a.orig I don't remember for sure, but I don't think I manually manipulated any of the symbolic links related to the libraries, but at any rate, here's what my /usr/lib/gcc-lib/i386-linux/2.7.2.1 directory looks like (sorry but these long lines may wrap in you mail client): NOTE: While the above comment about my not remembering making any symbolic liks is true, the evidence below suggests that I symbolically linked several files in /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/2.7.2.1 to the /usr/lib/gcc-lib/i386-linux/2.7.2.1 directory. total 2743 lrwxrwxrwx 1 root root 50 Feb 12 05:24 2.7.2.1 -> /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/2.7.2.1 lrwxrwxrwx 1 root root 55 Feb 12 05:24 SYSCALLS.c.X -> /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/SYSCALLS.c.X lrwxrwxrwx 1 root root 58 Feb 20 04:22 adainclude -> /usr/lib/gcc-lib/i386-linux/2.7.2.1/rts-native/adainclude/ lrwxrwxrwx 1 root root 54 Feb 20 04:22 adalib -> /usr/lib/gcc-lib/i386-linux/2.7.2.1/rts-native/adalib/ lrwxrwxrwx 1 root root 46 Feb 12 05:24 cc1 -> /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/cc1 lrwxrwxrwx 1 root root 50 Feb 12 05:24 cc1plus -> /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/cc1plus lrwxrwxrwx 1 root root 46 Feb 12 05:24 cpp -> /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/cpp lrwxrwxrwx 1 root root 53 Feb 12 05:24 crtbegin.o -> /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/crtbegin.o lrwxrwxrwx 1 root root 54 Feb 12 05:24 crtbeginS.o -> /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/crtbeginS.o lrwxrwxrwx 1 root root 51 Feb 12 05:24 crtend.o -> /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/crtend.o lrwxrwxrwx 1 root root 52 Feb 12 05:24 crtendS.o -> /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/crtendS.o -rwxr-xr-x 1 4168 1100 2271408 Sep 12 1997 gnat1 lrwxrwxrwx 1 root root 50 Feb 12 05:24 include -> /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/include -rw-r--r-- 1 root root 206902 Feb 14 10:10 libgcc.a -rw-r--r-- 1 root root 238346 Feb 14 10:10 libgthreads.a -rw-r--r-- 1 root root 74242 Feb 14 10:10 libmalloc.a drwxr-xr-x 4 4168 1100 1024 Aug 24 1997 rts-fsu drwxr-xr-x 4 4168 1100 1024 Aug 24 1997 rts-native lrwxrwxrwx 1 root root 48 Feb 12 05:24 specs -> /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/specs As a further sanity check, executing "gcc -v" should result in a message like: Reading specs from: /usr/lib/gcc-lib/i386-linux/2.7.2.1/specs The 2.7.2.1 directory points to 2.7.2.3 because gcc 2.7.2.3 was installed first (as part of the Linux installation), then gnat was installed on top of that -- and gnat is 2.7.2.1-based. I hope I've covered all of the bases here, as this installation is working fine for me. I should acknowledge that others of this group helped me when I ran into the problem a few weeks ago, identifying the cause of the problem and providing the broad outline of what to do. Good luck to all who have this problem. David C. Hoos, Sr.