On Tue, 25 Jun 2013 14:41:53 +0200, Tobias Ulmer wrote: > This is a bit of a mixed bag update, I'm hoping to fix the intermittent > build problems, make gnat more useful, and include Pascals -rdynamic > diff since that requires a revision bump as well and is useful in any > case. > > This patch set survived ~35 test builds of 4.6 and 4.8 on i386 in > addition to three builds per adastrap. > > OK?
Some comments inline: > Details: > * Enable -rdynamic in 4.8, from pascal@ > * Switch all architectures to setjump/longjump exceptions because of > suspected problems with ZCX. > * Call __errno() from librthread when using pthreads (Tero Koskinen) > * Enable gnat shared library support for OpenBSD (Tero Koskinen) > * Provide OpenBSD specific OS support, including struct layout fixes. > * Sync 4.6 with the changes done to 4.8 > [...] > ++ type Signal_Set is array (Natural range <>) of Signal; > ++ > ++ -- Interrupts that must be unmasked at all times. FreeBSD > ++ -- pthreads will not allow an application to mask out any > ++ -- interrupt needed by the threads library. > ++ Unmasked : constant Signal_Set := > ++ (SIGTRAP, SIGBUS, SIGTTIN, SIGTTOU, SIGTSTP); > ++ > ++ -- FreeBSD will uses SIGPROF for timing. Do not allow a > ++ -- handler to attach to this signal. > ++ Reserved : constant Signal_Set := (0 .. 0 => SIGPROF); Is this true on OpenBSD as well? (On another note, you may want to s/FreeBSD/OpenBSD/ in these files. > ++ > ++ type sigset_t is private; > ++ [...] These functions are not implemented in rthreads; also applies to 4.8 of course: > ++ function pthread_attr_setscope > ++ (attr : access pthread_attr_t; > ++ contentionscope : int) return int; > ++ pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope"); > ++ > ++ function pthread_attr_getscope > ++ (attr : access pthread_attr_t; > ++ contentionscope : access int) return int; > ++ pragma Import (C, pthread_attr_getscope, "pthread_attr_getscope"); > ++ > ++ function pthread_attr_setinheritsched > ++ (attr : access pthread_attr_t; > ++ inheritsched : int) return int; > ++ pragma Import > ++ (C, pthread_attr_setinheritsched, "pthread_attr_setinheritsched"); > ++ > ++ function pthread_attr_getinheritsched > ++ (attr : access pthread_attr_t; > ++ inheritsched : access int) return int; > ++ pragma Import > ++ (C, pthread_attr_getinheritsched, "pthread_attr_getinheritsched"); > ++ > ++ function pthread_attr_setschedpolicy > ++ (attr : access pthread_attr_t; > ++ policy : int) return int; > ++ pragma Import (C, pthread_attr_setschedpolicy, > ++ "pthread_attr_setschedpolicy"); > ++ > ++ function pthread_attr_getschedpolicy > ++ (attr : access pthread_attr_t; > ++ policy : access int) return int; > ++ pragma Import (C, pthread_attr_getschedpolicy, > ++ "pthread_attr_getschedpolicy"); > ++ > ++ function pthread_attr_setschedparam > ++ (attr : access pthread_attr_t; > ++ sched_param : int) return int; > ++ pragma Import (C, pthread_attr_setschedparam, > "pthread_attr_setschedparam"); > ++ > ++ function pthread_attr_getschedparam > ++ (attr : access pthread_attr_t; > ++ sched_param : access int) return int; > ++ pragma Import (C, pthread_attr_getschedparam, > "pthread_attr_getschedparam");
