]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-ppc64-aix5.h
update
[l4.git] / l4 / pkg / valgrind / src / valgrind-3.6.0-svn / include / vki / vki-ppc64-aix5.h
1
2 /*--------------------------------------------------------------------*/
3 /*--- 64-bit AIX5-specific kernel interface.      vki-ppc64-aix5.h ---*/
4 /*--------------------------------------------------------------------*/
5
6 /*
7    This file is part of Valgrind, a dynamic binary instrumentation
8    framework.
9
10    Copyright (C) 2006-2010 OpenWorks LLP
11       info@open-works.co.uk
12
13    This program is free software; you can redistribute it and/or
14    modify it under the terms of the GNU General Public License as
15    published by the Free Software Foundation; either version 2 of the
16    License, or (at your option) any later version.
17
18    This program is distributed in the hope that it will be useful, but
19    WITHOUT ANY WARRANTY; without even the implied warranty of
20    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21    General Public License for more details.
22
23    You should have received a copy of the GNU General Public License
24    along with this program; if not, write to the Free Software
25    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
26    02111-1307, USA.
27
28    The GNU General Public License is contained in the file COPYING.
29 */
30
31 /* This file defines types and constants for the kernel interface, and to
32    make that clear everything is prefixed VKI_/vki_.
33 */
34
35 /* This file was generated by running auxprogs/aix5_VKI_info.c. */
36
37 #ifndef __VKI_PPC64_AIX5_H
38 #define __VKI_PPC64_AIX5_H
39
40 #if !defined(VGP_ppc64_aix5)
41 #  error This file should be included in 64-bit AIX5 builds only.
42 #endif
43
44 //--------------------------------------------------------------
45 // VERIFIED
46 //--------------------------------------------------------------
47
48 /* ---------------- Errors ---------------- */
49
50 #define VKI_EINVAL 22
51 #define VKI_EINTR  4
52 #define VKI_ENOSYS 109
53 #define VKI_EAGAIN 11
54 #define VKI_ENOMEM 12
55 #define VKI_EACCES 13
56 #define VKI_EEXIST 17
57 #define VKI_EPERM  1
58 #define VKI_ENOENT 2
59 #define VKI_ESRCH  3
60 #define VKI_EBADF  9
61 #define VKI_EFAULT 14
62 #define VKI_EMFILE 24
63 #define VKI_ECHILD 10
64 #define VKI_EOVERFLOW 127
65 #define VKI_ERESTARTSYS 0 /* AIX doesn't have this */
66
67 /* ---------------- File I/O ---------------- */
68
69 #define VKI_O_WRONLY 0x00000001
70 #define VKI_O_RDONLY 0x00000000
71 #define VKI_O_APPEND 0x00000008
72 #define VKI_O_CREAT  0x00000100
73 #define VKI_O_RDWR   0x00000002
74 #define VKI_O_EXCL   0x00000400
75 #define VKI_O_TRUNC  0x00000200
76
77 #define VKI_S_IRUSR  0x00000100
78 #define VKI_S_IXUSR  0x00000040
79 #define VKI_S_IXGRP  0x00000008
80 #define VKI_S_IXOTH  0x00000001
81 #define VKI_S_IWUSR  0x00000080
82 #define VKI_S_IWOTH  0x00000002
83 #define VKI_S_ISUID  0x00000800
84 #define VKI_S_ISGID  0x00000400
85 #define VKI_S_IFMT   0x0000f000
86 #define VKI_S_IFDIR  0x00004000
87 #define VKI_S_IFCHR  0x00002000
88 #define VKI_S_IFBLK  0x00006000
89
90 /* Next 3 are from include/vki/vki-linux.h */
91 #define VKI_S_ISDIR(m)  (((m) & VKI_S_IFMT) == VKI_S_IFDIR)
92 #define VKI_S_ISCHR(m)  (((m) & VKI_S_IFMT) == VKI_S_IFCHR)
93 #define VKI_S_ISBLK(m)  (((m) & VKI_S_IFMT) == VKI_S_IFBLK)
94
95 #define VKI_F_DUPFD  0x00000000
96 #define VKI_F_SETFD  0x00000002
97 #define VKI_FD_CLOEXEC  0x00000001
98
99 #define VKI_R_OK 0x00000004
100 #define VKI_W_OK 0x00000002
101 #define VKI_X_OK 0x00000001
102
103 /* Known:
104    sizeof(struct stat) = 176
105       st_dev:  off   0 sz 8
106       st_ino:  off   8 sz 8
107       st_mode: off  16 sz 4
108       st_uid:  off  24 sz 4
109       st_gid:  off  28 sz 4
110       st_size: off 168 sz 8
111 */
112 struct vki_stat {
113    /*   0 */ ULong st_dev;
114    /*   8 */ ULong st_ino;
115    /*  16 */ UInt  st_mode;
116    /*  20 */ UInt  __off20;
117    /*  24 */ UInt  st_uid;
118    /*  28 */ UInt  st_gid;
119    /*  32 */ UChar __off28[168-32];
120    /* 168 */ ULong st_size;
121 };
122
123 #define VKI_STX_NORMAL  0
124
125 typedef ULong vki_size_t;
126
127 #define VKI_SEEK_SET 0
128 #define VKI_PATH_MAX 1023
129
130 /* Known:
131    sizeof(struct iovec) = 16
132       iov_base: off  0 sz 8
133       iov_len:  off  8 sz 8
134
135 */
136 struct vki_iovec {
137    /* 0 */ Addr  iov_base;
138    /* 8 */ ULong iov_len;
139 };
140
141 #define _VKI_IOC_NONE 0
142 #define _VKI_IOC_READ 1    /* kernel reads, userspace writes */
143 #define _VKI_IOC_WRITE 2   /* kernel writes, userspace reads */
144 #define _VKI_IOC_DIR(_x)   (((_x) >> 30) & 3)
145 #define _VKI_IOC_SIZE(_x)  (((_x) >> 16) & 0x7F)
146
147 /* ---------------- MMappery ---------------- */
148
149 /* This assumes the page size is 4096.  That assumption is checked
150    by the launcher. */
151 #define VKI_PAGE_SHIFT  12
152 #define VKI_PAGE_SIZE   (1UL << VKI_PAGE_SHIFT)
153 #define VKI_MAX_PAGE_SHIFT      VKI_PAGE_SHIFT
154 #define VKI_MAX_PAGE_SIZE       VKI_PAGE_SIZE
155
156 #define VKI_PROT_NONE  0x00000000
157 #define VKI_PROT_READ  0x00000001
158 #define VKI_PROT_WRITE 0x00000002
159 #define VKI_PROT_EXEC  0x00000004
160
161 #define VKI_MAP_FIXED     0x00000100
162 #define VKI_MAP_PRIVATE   0x00000002
163 #define VKI_MAP_ANONYMOUS 0x00000010
164
165 /* ---------------- RLimitery ---------------- */
166
167 /* rlimit: these pertain to syscall "appgetrlimit" */
168 #define VKI_RLIMIT_DATA   0x00000002
169 #define VKI_RLIMIT_NOFILE 0x00000007
170 #define VKI_RLIMIT_STACK  0x00000003
171 #define VKI_RLIMIT_CORE   0x00000004
172
173 /* Known:
174    sizeof(struct rlimit) = 16
175       rlim_cur: off  0 sz 8
176       rlim_max: off  8 sz 8
177 */
178 struct vki_rlimit {
179    /* 0 */ ULong rlim_cur;
180    /* 8 */ ULong rlim_max;
181 };
182
183 /* ---------------- Time ---------------- */
184
185 /* Known:
186    sizeof(struct timeval) = 16
187       tv_sec: off  0 sz 8
188      tv_usec: off  8 sz 4
189 */
190 struct vki_timeval {
191    /*  0 */ ULong tv_sec;         /* seconds */
192    /*  8 */ UInt  tv_usec;        /* microseconds */
193    /* 12 */ UInt  __off12;
194 };
195
196 /* Known:
197    sizeof(struct timespec) = 16
198       tv_sec: off  0 sz 8
199      tv_nsec: off  8 sz 8
200 */
201 struct vki_timespec {
202    /* 0 */ ULong tv_sec;         /* seconds */
203    /* 8 */ ULong tv_nsec;        /* nanoseconds */
204 };
205
206 /* ---------------- Signals ---------------- */
207
208 /* This layout verified 27 July 06. */
209 #define _VKI_NSIG_BPW   64
210 #define _VKI_NSIG       256
211 #define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW)
212
213 typedef struct {
214    ULong sig[_VKI_NSIG_WORDS];
215 } vki_sigset_t;
216
217 #define VKI_SIGSEGV   11
218 #define VKI_SIGBUS    10
219 #define VKI_SIGFPE     8
220 #define VKI_SIGHUP     1
221 #define VKI_SIGINT     2
222 #define VKI_SIGQUIT    3
223 #define VKI_SIGABRT    6
224 #define VKI_SIGUSR1   30
225 #define VKI_SIGUSR2   31
226 #define VKI_SIGPIPE   13
227 #define VKI_SIGALRM   14
228 #define VKI_SIGTERM   15
229 /* VKI_SIGSTKFLT does not exist on AIX 5.2 */
230 #define VKI_SIGTTIN   21
231 #define VKI_SIGTTOU   22
232 #define VKI_SIGXCPU   24
233 #define VKI_SIGXFSZ   25
234 #define VKI_SIGVTALRM 34
235 #define VKI_SIGPROF   32
236 #define VKI_SIGIO     23
237 #define VKI_SIGPWR    29
238 /* VKI_SIGUNUSED does not exist on AIX 5.2 */
239 #define VKI_SIGRTMIN  50
240 #define VKI_SIGRTMAX  57
241 #define VKI_SIGTRAP    5
242 #define VKI_SIGCONT   19
243 #define VKI_SIGCHLD   20
244 #define VKI_SIGWINCH  28
245 #define VKI_SIGURG    16
246 #define VKI_SIGILL     4
247 #define VKI_SIGSTOP   17
248 #define VKI_SIGKILL    9
249 #define VKI_SIGTSTP   18
250 #define VKI_SIGSYS    12
251
252 /* Known:
253    sizeof(struct sigaction) = 48
254    sa_sigaction: off  0 sz 8
255      sa_handler: off  0 sz 8
256         sa_mask: off  8 sz 32
257        sa_flags: off 40 sz 4
258 */
259 struct vki_sigaction {
260    /*  0 */ void*        ksa_handler;
261    /*  8 */ vki_sigset_t sa_mask;
262    /* 40 */ UInt         sa_flags;
263    /* 44 */ UInt         __off44;
264 };
265
266 #define VKI_SA_ONSTACK      1
267 #define VKI_SA_RESTART      8
268 #define VKI_SA_RESETHAND    2
269 #define VKI_SA_SIGINFO    256
270 #define VKI_SA_NODEFER    512
271 #define VKI_SA_NOCLDSTOP    4
272 #define VKI_SA_NOCLDWAIT 1024
273
274 #define VKI_SA_RESTORER  0 /* AIX doesn't have this */
275 #define VKI_SA_NOMASK    0 /* AIX doesn't have this */
276 #define VKI_SA_ONESHOT   0 /* AIX doesn't have this */
277
278 #define VKI_SS_ONSTACK 1
279 #define VKI_SS_DISABLE 2
280
281 #define VKI_MINSIGSTKSZ 1200
282
283 #define VKI_SI_USER  0
284
285 #define VKI_SIG_BLOCK      0
286 #define VKI_SIG_SETMASK    2
287 #define VKI_SIG_UNBLOCK    1
288 #define VKI_SIG_IGN        (void*)1
289 #define VKI_SIG_DFL        (void*)0
290
291 #define VKI_SEGV_ACCERR 51
292 #define VKI_SEGV_MAPERR 50
293
294 #define VKI_TRAP_TRACE 61
295 #define VKI_TRAP_BRKPT 60
296 #define VKI_BUS_OBJERR 3
297 #define VKI_BUS_ADRERR 2
298 #define VKI_BUS_ADRALN 1
299 #define VKI_FPE_FLTSUB 27
300 #define VKI_FPE_FLTINV 26
301 #define VKI_FPE_FLTRES 25
302 #define VKI_FPE_FLTUND 24
303 #define VKI_FPE_FLTOVF 23
304 #define VKI_FPE_FLTDIV 22
305 #define VKI_FPE_INTOVF 21
306 #define VKI_FPE_INTDIV 20
307
308 #define VKI_ILL_BADSTK 37
309 #define VKI_ILL_COPROC 36
310 #define VKI_ILL_PRVREG 35
311 #define VKI_ILL_PRVOPC 34
312 #define VKI_ILL_ILLTRP 33
313 #define VKI_ILL_ILLADR 32
314 #define VKI_ILL_ILLOPN 31
315 #define VKI_ILL_ILLOPC 30
316
317 /* Known: 
318    sizeof(siginfo_t) = 64
319       si_signo: off  0 sz 4
320        si_code: off  8 sz 4
321         si_pid: off 12 sz 4
322        si_addr: off 24 sz 8
323 */
324 typedef struct {
325    /*  0 */ UInt  si_signo;
326    /*  4 */ UInt  __off4;
327    /*  8 */ UInt  si_code;
328    /* 12 */ UInt  si_pid;
329    /* 16 */ UInt  __off16;
330    /* 20 */ UInt  __off20;
331    /* 24 */ void* si_addr;
332    /* 32 */ UInt  __off32;
333    /* 36 */ UInt  __off36;
334    /* 40 */ UInt  __off40;
335    /* 44 */ UInt  __off44;
336    /* 48 */ UInt  __off48;
337    /* 52 */ UInt  __off52;
338    /* 56 */ UInt  __off56;
339    /* 60 */ UInt  __off60;
340 } vki_siginfo_t;
341
342 /* Known:
343    sizeof(stack_t) = 40
344        ss_sp: off  0 sz 8
345      ss_size: off  8 sz 8
346     ss_flags: off 16 sz 4
347 */
348 typedef struct vki_sigaltstack {
349    /*  0 */ void* ss_sp;
350    /*  8 */ ULong ss_size;
351    /* 16 */ UInt  ss_flags;
352    /* 20 */ UInt  __off20;
353    /* 24 */ ULong __off24;
354    /* 32 */ ULong __off32;
355 } vki_stack_t;
356
357 /* ---------------- Misc ---------------- */
358
359 #define VKI_PTRACE_TRACEME 0  /* nb: is really PT_TRACE_ME */
360 #define VKI_PTRACE_DETACH 31  /* nb: is really PT_DETACH */
361
362
363 //--------------------------------------------------------------
364 // BOGUS
365 //--------------------------------------------------------------
366
367 struct vki_dirent {
368   int bogus;
369 };
370
371 struct vki_sockaddr {
372   int bogus;
373 };
374
375 struct vki_pollfd {
376   int bogus;
377 };
378
379 /* Structure describing an Internet (IP) socket address. */
380 //struct vki_sockaddr_in {
381 //  int bogus;
382 //};
383
384 struct vki_ucontext {
385   int bogus;
386 };
387
388
389 //--------------------------------------------------------------
390 // FROM glibc-ports-2.4/sysdeps/unix/sysv/aix/dlldr.h
391 //--------------------------------------------------------------
392
393 /* Copyright (C) 2001 Free Software Foundation, Inc.
394    This file is part of the GNU C Library.
395
396    The GNU C Library is free software; you can redistribute it and/or
397    modify it under the terms of the GNU Lesser General Public
398    License as published by the Free Software Foundation; either
399    version 2.1 of the License, or (at your option) any later version.
400
401    The GNU C Library is distributed in the hope that it will be useful,
402    but WITHOUT ANY WARRANTY; without even the implied warranty of
403    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
404    Lesser General Public License for more details.
405
406    You should have received a copy of the GNU Lesser General Public
407    License along with the GNU C Library; if not, write to the Free
408    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
409    02111-1307 USA.  */
410
411
412 /*
413
414  int __loadx(flag, module, arg1, arg2, arg3)
415
416  The __loadx() is a call to ld_loadutil() kernel function, which
417  does the real work. Note ld_loadutil() is not exported an cannot be
418  called directly from user space.
419
420  void *ld_loadutil() call is a utility function used for loader extensions
421  supporting run-time linking and dl*() functions.
422
423  void *   - will return the modules entry point if it succeds of NULL
424                 on failure.
425
426  int flag - the flag field performas a dual role: the top 8 bits specify
427             the work for __loadx() to perform, the bottom 8 bits are
428             used to pass flags to the work routines, all other bits are
429             reserved.
430
431 */
432
433 #define VKI_DL_LOAD       0x1000000 /* __loadx(flag,buf, buf_len, filename, libr_path) */
434 #define VKI_DL_POSTLOADQ  0x2000000 /* __loadx(flag,buf, buf_len, module_handle) */
435 #define VKI_DL_EXECQ      0x3000000 /* __loadx(flag,buf, buf_len) */
436 #define VKI_DL_EXITQ      0x4000000 /* __loadx(flag,buf, buf_len) */
437 #define VKI_DL_PREUNLOADQ 0x5000000 /* __loadx(flag,buf, buf_len, module_handle) */
438 #define VKI_DL_INIT       0x6000000 /* __loadx(flag,NULL) */
439 #define VKI_DL_GETSYM     0x7000000 /* __loadx(flag,symbol, index, modules_data_origin) */
440 #define VKI_DL_SETDEPEND  0x8000000 /* __loadx(flag,import_data_org, import_index, */
441                                     /*              export_data_org, export_index) */
442 #define VKI_DL_DELDEPEND  0x9000000 /* __loadx(flag,import_data_org, import_index, */
443                                     /*              export_data_org, export_index) */
444 #define VKI_DL_GLOBALSYM  0xA000000 /* __loadx(flag,symbol_name, ptr_to_rec_index, */
445                                     /*                        ptr_to_rec_data_org) */
446 #define VKI_DL_UNIX_SYSCALL 0xB000000 /* __loadx(flag,syscall_symbol_name) */
447
448 #define VKI_DL_FUNCTION_MASK 0xFF000000
449 #define VKI_DL_SRCHDEPENDS   0x00100000
450 #define VKI_DL_SRCHMODULE    0x00080000
451 #define VKI_DL_SRCHLOADLIST  0x00040000
452 #define VKI_DL_LOAD_LDX1     0x00040000
453 #define VKI_DL_LOAD_RTL      0x00020000
454 #define VKI_DL_HASHSTRING    0x00020000
455 #define VKI_DL_INFO_OK       0x00010000
456 #define VKI_DL_LOAD_DLINFO   0x00010000
457 #define VKI_DL_UNLOADED      0x00020000
458
459
460 #endif // __VKI_PPC64_AIX5_H
461
462 /*--------------------------------------------------------------------*/
463 /*--- end                                                          ---*/
464 /*--------------------------------------------------------------------*/