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);