summaryrefslogtreecommitdiff
blob: 674e5793dbdf32b09cdd7105f6ebc35273116d18 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
macro-constant SIG_DFL {void(*)(int)}
macro-constant SIG_ERR {void(*)(int)}
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
macro-constant SIG_HOLD {void(*)(int)}
#endif
macro-constant SIG_IGN {void(*)(int)}

type sig_atomic_t
#if !defined ISO && !defined ISO99 && !defined ISO11
type sigset_t
#endif
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
type pid_t
#elif defined POSIX
# define pid_t __pid_t
# define uid_t __uid_t
#endif
#if defined XOPEN2K8 || defined POSIX2008
type size_t
type pthread_t
type uid_t

type mcontext_t

type ucontext_t
element ucontext_t {ucontext_t*} uc_link
// Bug 21634: uc_sigmask has wrong type.
xfail[ia64-linux]-element ucontext_t sigset_t uc_sigmask
element ucontext_t stack_t uc_stack
// Bug 21635: uc_mcontext has wrong type.
xfail[powerpc32-linux]-element ucontext_t mcontext_t uc_mcontext

type {struct timespec}
element {struct timespec} __time_t tv_sec
// Bug 16437: tv_nsec has wrong type.
xfail[x86_64-x32-linux]-element {struct timespec} long tv_nsec
#endif

#if defined POSIX || defined UNIX98 || defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
element {union sigval} int sival_int
element {union sigval} {void*} sival_ptr

type {struct sigevent}

// Test the elements of the sigevent_t structure.
element {struct sigevent} int sigev_notify
element {struct sigevent} int sigev_signo
element {struct sigevent} {union sigval} sigev_value
element {struct sigevent} {void(*} sigev_notify_function )(union sigval)
element {struct sigevent} {pthread_attr_t*} sigev_notify_attributes

constant SIGEV_NONE
constant SIGEV_SIGNAL
constant SIGEV_THREAD

type {union sigval}

macro SIGRTMIN
macro SIGRTMAX
#endif

macro-int-constant SIGABRT {int} > 0
macro-int-constant SIGFPE {int} > 0
macro-int-constant SIGILL {int} > 0
macro-int-constant SIGINT {int} > 0
macro-int-constant SIGSEGV {int} > 0
macro-int-constant SIGTERM {int} > 0

function void (*signal (int, void(*)(int)))(int)
function int raise (int)

#if !defined ISO && !defined ISO99 && !defined ISO11
macro-int-constant SIGALRM {int} > 0
macro-int-constant SIGHUP {int} > 0
macro-int-constant SIGKILL {int} > 0
macro-int-constant SIGPIPE {int} > 0
macro-int-constant SIGQUIT {int} > 0
macro-int-constant SIGUSR1 {int} > 0
macro-int-constant SIGUSR2 {int} > 0
macro-int-constant SIGCHLD {int} > 0
macro-int-constant SIGCONT {int} > 0
macro-int-constant SIGSTOP {int} > 0
macro-int-constant SIGTSTP {int} > 0
macro-int-constant SIGTTIN {int} > 0
macro-int-constant SIGTTOU {int} > 0
# ifndef XPG4
macro-int-constant SIGBUS {int} > 0
# endif
# if !defined POSIX && !defined XPG4
macro-int-constant SIGPOLL {int} > 0
macro-int-constant SIGPROF {int} > 0
macro-int-constant SIGSYS {int} > 0
# endif
# if !defined POSIX && !defined XPG4 && !defined POSIX2008
macro-int-constant SIGTRAP {int} > 0
# endif
# if !defined POSIX && !defined XPG4
macro-int-constant SIGURG {int} > 0
macro-int-constant SIGVTALRM {int} > 0
macro-int-constant SIGXCPU {int} > 0
macro-int-constant SIGXFSZ {int} > 0
# endif

type {struct sigaction}

element {struct sigaction} {void(*} sa_handler )(int)
element {struct sigaction} sigset_t sa_mask
element {struct sigaction} int sa_flags
# ifndef XPG4
element {struct sigaction} {void(*} sa_sigaction )(int, siginfo_t*, void*)
# endif

constant SA_NOCLDSTOP
# ifndef XPG4
// Bug 23089: hurd: missing siginfo support.
xfail[i386-gnu]-constant SA_SIGINFO
# endif
constant SIG_BLOCK
constant SIG_UNBLOCK
constant SIG_SETMASK
# if !defined XPG4 && !defined POSIX && !defined POSIX2008
constant SA_ONSTACK
# endif
# if !defined XPG4 && !defined POSIX
constant SA_RESETHAND
constant SA_RESTART
// Bug 23090: hurd: missing SA_NOCLDWAIT support.
xfail[i386-gnu]-constant SA_NOCLDWAIT
constant SA_NODEFER
# endif
# if !defined XPG4 && !defined POSIX && !defined POSIX2008
constant SS_ONSTACK
constant SS_DISABLE
constant MINSIGSTKSZ
constant SIGSTKSZ
# endif

# if !defined XPG4 && !defined POSIX
type ucontext_t

element ucontext_t {ucontext_t*} uc_link
// Bug 21634: uc_sigmask has wrong type.
xfail[ia64-linux]-element ucontext_t sigset_t uc_sigmask
element ucontext_t stack_t uc_stack
// Bug 21635: uc_mcontext has wrong type.
xfail[powerpc32-linux]-element ucontext_t mcontext_t uc_mcontext

type stack_t

element stack_t {void*} ss_sp
element stack_t size_t ss_size
element stack_t int ss_flags

#  if !defined XOPEN2K8 && !defined POSIX2008
type {struct sigstack}

element {struct sigstack} int ss_onstack
element {struct sigstack} {void*} ss_sp
#  endif
# endif

# ifndef XPG4
type siginfo_t

element siginfo_t int si_signo
#  if !defined POSIX && !defined POSIX2008
element siginfo_t int si_errno
#  endif
element siginfo_t int si_code
#  ifndef POSIX
element siginfo_t pid_t si_pid
element siginfo_t uid_t si_uid
element siginfo_t {void*} si_addr
element siginfo_t int si_status
// Bug 23821: si_band has type int on sparc64.
xfail[sparc64-linux]-element siginfo_t long si_band
#  endif
#  ifndef XPG42
element siginfo_t {union sigval} si_value
#  endif
# endif

# if !defined POSIX && !defined XPG4
constant ILL_ILLOPC
constant ILL_ILLOPN
constant ILL_ILLADR
constant ILL_ILLTRP
constant ILL_PRVOPC
constant ILL_PRVREG
constant ILL_COPROC
constant ILL_BADSTK
constant FPE_INTDIV
constant FPE_INTOVF
constant FPE_FLTDIV
constant FPE_FLTOVF
constant FPE_FLTUND
constant FPE_FLTRES
constant FPE_FLTINV
constant FPE_FLTSUB
constant SEGV_MAPERR
constant SEGV_ACCERR
constant BUS_ADRALN
constant BUS_ADRERR
constant BUS_OBJERR
constant CLD_EXITED
constant CLD_KILLED
constant CLD_DUMPED
constant CLD_TRAPPED
constant CLD_STOPPED
constant CLD_CONTINUED
constant POLL_IN
constant POLL_OUT
constant POLL_MSG
constant POLL_ERR
constant POLL_PRI
constant POLL_HUP
# endif
# if !defined POSIX && !defined XPG4 && !defined POSIX2008
constant TRAP_BRKPT
constant TRAP_TRACE
# endif
# if !defined XPG4 && !defined XPG42
constant SI_USER
constant SI_QUEUE
constant SI_TIMER
constant SI_ASYNCIO
constant SI_MESGQ
# endif

# if !defined XPG4 && !defined XOPEN2K8 && !defined POSIX && !defined POSIX2008
function void (*bsd_signal (int, void(*)(int)))(int)
# endif
function int kill (pid_t, int)
# if !defined XPG4 && !defined POSIX && !defined POSIX2008
function int killpg (pid_t, int)
# endif
# if !defined XPG4 && !defined XPG42
function int pthread_kill (pthread_t, int)
function int pthread_sigmask (int, const sigset_t*, sigset_t*)
# endif
function int sigaction (int, const struct sigaction*, struct sigaction*)
function int sigaddset (sigset_t*, int)
# if !defined XPG4 && !defined POSIX && !defined POSIX2008
function int sigaltstack (const stack_t*, stack_t*)
# endif
function int sigdelset (sigset_t*, int)
function int sigemptyset (sigset_t*)
function int sigfillset (sigset_t*)
# if !defined XPG4 && !defined POSIX && !defined POSIX2008
function int sighold (int)
function int sigignore (int)
function int siginterrupt (int, int)
# endif
function int sigismember (const sigset_t*, int)
#if !defined XPG4 && !defined POSIX && !defined POSIX2008
function int sigpause (int)
# endif
function int sigpending (sigset_t*)
function int sigprocmask (int, const sigset_t*, sigset_t*)
# if !defined XPG4 && !defined XPG42
function int sigqueue (pid_t, int, const union sigval)
# endif
# if !defined XPG4 && !defined POSIX && !defined POSIX2008
function int sigrelse (int)
function void (*sigset (int, void(*)(int)))(int)
# endif
# if defined XPG42 || defined UNIX98
function int sigstack (struct sigstack*, struct sigstack*)
# endif
function int sigsuspend (const sigset_t*)
# if !defined XPG4 && !defined XPG42
function int sigtimedwait (const sigset_t*, siginfo_t*, const struct timespec*)
# endif
# if !defined XPG4 && !defined XPG42
function int sigwait (const sigset_t*, int*)
function int sigwaitinfo (const sigset_t*, siginfo_t*)
# endif
# if defined XOPEN2K8 || defined POSIX2008
function void psiginfo (const siginfo_t*, const char*)
function void psignal (int, const char*)
# endif

// The following expressions are not entirely correct but the current
// poorfnmatch implementation doesn't grok the right form.
allow sa_*
allow SA_*
# ifndef XPG4
allow si_*
allow SI_*
# endif
# if !defined XPG4 && !defined XPG42
allow sigev_*
allow SIGEV_*
allow sival_*
# endif
# if !defined POSIX && !defined XPG4 && !defined XPG42
allow uc_*
# endif
# if !defined POSIX && !defined XPG4
allow BUS_*
allow CLD_*
allow FPE_*
allow ILL_*
allow POLL_*
allow SEGV_*
# endif
# if !defined POSIX && !defined XPG4 && !defined POSIX2008
allow SS_*
allow SV_*
allow TRAP_*
allow ss_*
allow sv_*
# endif
allow *_t

allow-header time.h
#endif

allow SIG[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*
allow SIG_*