1//===-- sanitizer_syscalls_netbsd.inc ---------------------------*- C++ -*-===// 2// 3// This file is distributed under the University of Illinois Open Source 4// License. See LICENSE.TXT for details. 5// 6//===----------------------------------------------------------------------===// 7// 8// Common syscalls handlers for tools like AddressSanitizer, 9// ThreadSanitizer, MemorySanitizer, etc. 10// 11// This file should be included into the tool's interceptor file, 12// which has to define it's own macros: 13// COMMON_SYSCALL_PRE_READ_RANGE 14// Called in prehook for regions that will be read by the kernel and 15// must be initialized. 16// COMMON_SYSCALL_PRE_WRITE_RANGE 17// Called in prehook for regions that will be written to by the kernel 18// and must be addressable. The actual write range may be smaller than 19// reported in the prehook. See POST_WRITE_RANGE. 20// COMMON_SYSCALL_POST_READ_RANGE 21// Called in posthook for regions that were read by the kernel. Does 22// not make much sense. 23// COMMON_SYSCALL_POST_WRITE_RANGE 24// Called in posthook for regions that were written to by the kernel 25// and are now initialized. 26// COMMON_SYSCALL_ACQUIRE(addr) 27// Acquire memory visibility from addr. 28// COMMON_SYSCALL_RELEASE(addr) 29// Release memory visibility to addr. 30// COMMON_SYSCALL_FD_CLOSE(fd) 31// Called before closing file descriptor fd. 32// COMMON_SYSCALL_FD_ACQUIRE(fd) 33// Acquire memory visibility from fd. 34// COMMON_SYSCALL_FD_RELEASE(fd) 35// Release memory visibility to fd. 36// COMMON_SYSCALL_PRE_FORK() 37// Called before fork syscall. 38// COMMON_SYSCALL_POST_FORK(long long res) 39// Called after fork syscall. 40// 41// DO NOT EDIT! THIS FILE HAS BEEN GENERATED! 42// 43// Generated with: generate_netbsd_syscalls.awk 44// Generated date: 2018-03-03 45// Generated from: syscalls.master,v 1.291 2018/01/06 16:41:23 kamil Exp 46// 47//===----------------------------------------------------------------------===// 48 49#include "sanitizer_platform.h" 50#if SANITIZER_NETBSD 51 52#include "sanitizer_libc.h" 53 54#define PRE_SYSCALL(name) \ 55 SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_syscall_pre_impl_##name 56#define PRE_READ(p, s) COMMON_SYSCALL_PRE_READ_RANGE(p, s) 57#define PRE_WRITE(p, s) COMMON_SYSCALL_PRE_WRITE_RANGE(p, s) 58 59#define POST_SYSCALL(name) \ 60 SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_syscall_post_impl_##name 61#define POST_READ(p, s) COMMON_SYSCALL_POST_READ_RANGE(p, s) 62#define POST_WRITE(p, s) COMMON_SYSCALL_POST_WRITE_RANGE(p, s) 63 64#ifndef COMMON_SYSCALL_ACQUIRE 65#define COMMON_SYSCALL_ACQUIRE(addr) ((void)(addr)) 66#endif 67 68#ifndef COMMON_SYSCALL_RELEASE 69#define COMMON_SYSCALL_RELEASE(addr) ((void)(addr)) 70#endif 71 72#ifndef COMMON_SYSCALL_FD_CLOSE 73#define COMMON_SYSCALL_FD_CLOSE(fd) ((void)(fd)) 74#endif 75 76#ifndef COMMON_SYSCALL_FD_ACQUIRE 77#define COMMON_SYSCALL_FD_ACQUIRE(fd) ((void)(fd)) 78#endif 79 80#ifndef COMMON_SYSCALL_FD_RELEASE 81#define COMMON_SYSCALL_FD_RELEASE(fd) ((void)(fd)) 82#endif 83 84#ifndef COMMON_SYSCALL_PRE_FORK 85#define COMMON_SYSCALL_PRE_FORK() \ 86 {} 87#endif 88 89#ifndef COMMON_SYSCALL_POST_FORK 90#define COMMON_SYSCALL_POST_FORK(res) \ 91 {} 92#endif 93 94// FIXME: do some kind of PRE_READ for all syscall arguments (int(s) and such). 95 96extern "C" { 97#define SYS_MAXSYSARGS 8 98PRE_SYSCALL(syscall)(long long code_, long long args_[SYS_MAXSYSARGS]) { 99 /* Nothing to do */ 100} 101POST_SYSCALL(syscall) 102(long long res, long long code_, long long args_[SYS_MAXSYSARGS]) { 103 /* Nothing to do */ 104} 105PRE_SYSCALL(exit)(long long rval_) { /* Nothing to do */ } 106POST_SYSCALL(exit)(long long res, long long rval_) { /* Nothing to do */ } 107PRE_SYSCALL(fork)(void) { COMMON_SYSCALL_PRE_FORK(); } 108POST_SYSCALL(fork)(long long res) { COMMON_SYSCALL_POST_FORK(res); } 109PRE_SYSCALL(read)(long long fd_, void *buf_, long long nbyte_) { 110 if (buf_) { 111 PRE_WRITE(buf_, nbyte_); 112 } 113} 114POST_SYSCALL(read)(long long res, long long fd_, void *buf_, long long nbyte_) { 115 if (res > 0) { 116 POST_WRITE(buf_, res); 117 } 118} 119PRE_SYSCALL(write)(long long fd_, void *buf_, long long nbyte_) { 120 if (buf_) { 121 PRE_READ(buf_, nbyte_); 122 } 123} 124POST_SYSCALL(write) 125(long long res, long long fd_, void *buf_, long long nbyte_) { 126 if (res > 0) { 127 POST_READ(buf_, res); 128 } 129} 130PRE_SYSCALL(open)(void *path_, long long flags_, long long mode_) { 131 const char *path = (const char *)path_; 132 if (path) { 133 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 134 } 135} 136POST_SYSCALL(open) 137(long long res, void *path_, long long flags_, long long mode_) { 138 if (res > 0) { 139 const char *path = (const char *)path_; 140 if (path) { 141 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 142 } 143 } 144} 145PRE_SYSCALL(close)(long long fd_) { COMMON_SYSCALL_FD_CLOSE((int)fd_); } 146POST_SYSCALL(close)(long long res, long long fd_) { /* Nothing to do */ } 147PRE_SYSCALL(compat_50_wait4) 148(long long pid_, void *status_, long long options_, void *rusage_) { 149 /* TODO */ 150} 151POST_SYSCALL(compat_50_wait4) 152(long long res, long long pid_, void *status_, long long options_, 153 void *rusage_) { 154 /* TODO */ 155} 156PRE_SYSCALL(compat_43_ocreat)(void *path_, long long mode_) { /* TODO */ } 157POST_SYSCALL(compat_43_ocreat)(long long res, void *path_, long long mode_) { 158 /* TODO */ 159} 160PRE_SYSCALL(link)(void *path_, void *link_) { 161 const char *path = (const char *)path_; 162 const char *link = (const char *)link_; 163 if (path) { 164 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 165 } 166 if (link) { 167 PRE_READ(path, __sanitizer::internal_strlen(link) + 1); 168 } 169} 170POST_SYSCALL(link)(long long res, void *path_, void *link_) { 171 if (res == 0) { 172 const char *path = (const char *)path_; 173 const char *link = (const char *)link_; 174 if (path) { 175 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 176 } 177 if (link) { 178 POST_READ(path, __sanitizer::internal_strlen(link) + 1); 179 } 180 } 181} 182PRE_SYSCALL(unlink)(void *path_) { 183 const char *path = (const char *)path_; 184 if (path) { 185 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 186 } 187} 188POST_SYSCALL(unlink)(long long res, void *path_) { 189 if (res == 0) { 190 const char *path = (const char *)path_; 191 if (path) { 192 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 193 } 194 } 195} 196/* syscall 11 has been skipped */ 197PRE_SYSCALL(chdir)(void *path_) { 198 const char *path = (const char *)path_; 199 if (path) { 200 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 201 } 202} 203POST_SYSCALL(chdir)(long long res, void *path_) { 204 if (res == 0) { 205 const char *path = (const char *)path_; 206 if (path) { 207 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 208 } 209 } 210} 211PRE_SYSCALL(fchdir)(long long fd_) { /* Nothing to do */ } 212POST_SYSCALL(fchdir)(long long res, long long fd_) { /* Nothing to do */ } 213PRE_SYSCALL(compat_50_mknod)(void *path_, long long mode_, long long dev_) { 214 /* TODO */ 215} 216POST_SYSCALL(compat_50_mknod) 217(long long res, void *path_, long long mode_, long long dev_) { 218 /* TODO */ 219} 220PRE_SYSCALL(chmod)(void *path_, long long mode_) { 221 const char *path = (const char *)path_; 222 if (path) { 223 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 224 } 225} 226POST_SYSCALL(chmod)(long long res, void *path_, long long mode_) { 227 if (res == 0) { 228 const char *path = (const char *)path_; 229 if (path) { 230 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 231 } 232 } 233} 234PRE_SYSCALL(chown)(void *path_, long long uid_, long long gid_) { 235 const char *path = (const char *)path_; 236 if (path) { 237 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 238 } 239} 240POST_SYSCALL(chown) 241(long long res, void *path_, long long uid_, long long gid_) { 242 if (res == 0) { 243 const char *path = (const char *)path_; 244 if (path) { 245 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 246 } 247 } 248} 249PRE_SYSCALL(break)(void *nsize_) { /* Nothing to do */ } 250POST_SYSCALL(break)(long long res, void *nsize_) { /* Nothing to do */ } 251PRE_SYSCALL(compat_20_getfsstat) 252(void *buf_, long long bufsize_, long long flags_) { 253 /* TODO */ 254} 255POST_SYSCALL(compat_20_getfsstat) 256(long long res, void *buf_, long long bufsize_, long long flags_) { 257 /* TODO */ 258} 259PRE_SYSCALL(compat_43_olseek) 260(long long fd_, long long offset_, long long whence_) { 261 /* TODO */ 262} 263POST_SYSCALL(compat_43_olseek) 264(long long res, long long fd_, long long offset_, long long whence_) { 265 /* TODO */ 266} 267PRE_SYSCALL(getpid)(void) { /* Nothing to do */ } 268POST_SYSCALL(getpid)(long long res) { /* Nothing to do */ } 269PRE_SYSCALL(compat_40_mount) 270(void *type_, void *path_, long long flags_, void *data_) { 271 /* TODO */ 272} 273POST_SYSCALL(compat_40_mount) 274(long long res, void *type_, void *path_, long long flags_, void *data_) { 275 /* TODO */ 276} 277PRE_SYSCALL(unmount)(void *path_, long long flags_) { 278 const char *path = (const char *)path_; 279 if (path) { 280 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 281 } 282} 283POST_SYSCALL(unmount)(long long res, void *path_, long long flags_) { 284 if (res == 0) { 285 const char *path = (const char *)path_; 286 if (path) { 287 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 288 } 289 } 290} 291PRE_SYSCALL(setuid)(long long uid_) { /* Nothing to do */ } 292POST_SYSCALL(setuid)(long long res, long long uid_) { /* Nothing to do */ } 293PRE_SYSCALL(getuid)(void) { /* Nothing to do */ } 294POST_SYSCALL(getuid)(long long res) { /* Nothing to do */ } 295PRE_SYSCALL(geteuid)(void) { /* Nothing to do */ } 296POST_SYSCALL(geteuid)(long long res) { /* Nothing to do */ } 297PRE_SYSCALL(ptrace) 298(long long req_, long long pid_, void *addr_, long long data_) { 299 if (req_ == ptrace_pt_io) { 300 struct __sanitizer_ptrace_io_desc *addr = 301 (struct __sanitizer_ptrace_io_desc *)addr_; 302 PRE_READ(addr, struct_ptrace_ptrace_io_desc_struct_sz); 303 if (addr->piod_op == ptrace_piod_write_d || 304 addr->piod_op == ptrace_piod_write_i) { 305 PRE_READ(addr->piod_addr, addr->piod_len); 306 } 307 if (addr->piod_op == ptrace_piod_read_d || 308 addr->piod_op == ptrace_piod_read_i || 309 addr->piod_op == ptrace_piod_read_auxv) { 310 PRE_WRITE(addr->piod_addr, addr->piod_len); 311 } 312 } else if (req_ == ptrace_pt_lwpinfo) { 313 struct __sanitizer_ptrace_lwpinfo *addr = 314 (struct __sanitizer_ptrace_lwpinfo *)addr_; 315 PRE_READ(&addr->pl_lwpid, sizeof(__sanitizer_lwpid_t)); 316 PRE_WRITE(addr, struct_ptrace_ptrace_lwpinfo_struct_sz); 317 } else if (req_ == ptrace_pt_set_event_mask) { 318 PRE_READ(addr_, struct_ptrace_ptrace_event_struct_sz); 319 } else if (req_ == ptrace_pt_get_event_mask) { 320 PRE_WRITE(addr_, struct_ptrace_ptrace_event_struct_sz); 321 } else if (req_ == ptrace_pt_set_siginfo) { 322 PRE_READ(addr_, struct_ptrace_ptrace_siginfo_struct_sz); 323 } else if (req_ == ptrace_pt_get_siginfo) { 324 PRE_WRITE(addr_, struct_ptrace_ptrace_siginfo_struct_sz); 325 } else if (req_ == ptrace_pt_setregs) { 326 PRE_READ(addr_, struct_ptrace_reg_struct_sz); 327 } else if (req_ == ptrace_pt_getregs) { 328 PRE_WRITE(addr_, struct_ptrace_reg_struct_sz); 329 } else if (req_ == ptrace_pt_setfpregs) { 330 PRE_READ(addr_, struct_ptrace_fpreg_struct_sz); 331 } else if (req_ == ptrace_pt_getfpregs) { 332 PRE_WRITE(addr_, struct_ptrace_fpreg_struct_sz); 333 } else if (req_ == ptrace_pt_setdbregs) { 334 PRE_READ(addr_, struct_ptrace_dbreg_struct_sz); 335 } else if (req_ == ptrace_pt_getdbregs) { 336 PRE_WRITE(addr_, struct_ptrace_dbreg_struct_sz); 337 } 338} 339POST_SYSCALL(ptrace) 340(long long res, long long req_, long long pid_, void *addr_, long long data_) { 341 if (res == 0) { 342 if (req_ == ptrace_pt_io) { 343 struct __sanitizer_ptrace_io_desc *addr = 344 (struct __sanitizer_ptrace_io_desc *)addr_; 345 POST_READ(addr, struct_ptrace_ptrace_io_desc_struct_sz); 346 if (addr->piod_op == ptrace_piod_write_d || 347 addr->piod_op == ptrace_piod_write_i) { 348 POST_READ(addr->piod_addr, addr->piod_len); 349 } 350 if (addr->piod_op == ptrace_piod_read_d || 351 addr->piod_op == ptrace_piod_read_i || 352 addr->piod_op == ptrace_piod_read_auxv) { 353 POST_WRITE(addr->piod_addr, addr->piod_len); 354 } 355 } else if (req_ == ptrace_pt_lwpinfo) { 356 struct __sanitizer_ptrace_lwpinfo *addr = 357 (struct __sanitizer_ptrace_lwpinfo *)addr_; 358 POST_READ(&addr->pl_lwpid, sizeof(__sanitizer_lwpid_t)); 359 POST_WRITE(addr, struct_ptrace_ptrace_lwpinfo_struct_sz); 360 } else if (req_ == ptrace_pt_set_event_mask) { 361 POST_READ(addr_, struct_ptrace_ptrace_event_struct_sz); 362 } else if (req_ == ptrace_pt_get_event_mask) { 363 POST_WRITE(addr_, struct_ptrace_ptrace_event_struct_sz); 364 } else if (req_ == ptrace_pt_set_siginfo) { 365 POST_READ(addr_, struct_ptrace_ptrace_siginfo_struct_sz); 366 } else if (req_ == ptrace_pt_get_siginfo) { 367 POST_WRITE(addr_, struct_ptrace_ptrace_siginfo_struct_sz); 368 } else if (req_ == ptrace_pt_setregs) { 369 POST_READ(addr_, struct_ptrace_reg_struct_sz); 370 } else if (req_ == ptrace_pt_getregs) { 371 POST_WRITE(addr_, struct_ptrace_reg_struct_sz); 372 } else if (req_ == ptrace_pt_setfpregs) { 373 POST_READ(addr_, struct_ptrace_fpreg_struct_sz); 374 } else if (req_ == ptrace_pt_getfpregs) { 375 POST_WRITE(addr_, struct_ptrace_fpreg_struct_sz); 376 } else if (req_ == ptrace_pt_setdbregs) { 377 POST_READ(addr_, struct_ptrace_dbreg_struct_sz); 378 } else if (req_ == ptrace_pt_getdbregs) { 379 POST_WRITE(addr_, struct_ptrace_dbreg_struct_sz); 380 } 381 } 382} 383PRE_SYSCALL(recvmsg)(long long s_, void *msg_, long long flags_) { 384 PRE_WRITE(msg_, sizeof(__sanitizer_msghdr)); 385} 386POST_SYSCALL(recvmsg) 387(long long res, long long s_, void *msg_, long long flags_) { 388 if (res > 0) { 389 POST_WRITE(msg_, sizeof(__sanitizer_msghdr)); 390 } 391} 392PRE_SYSCALL(sendmsg)(long long s_, void *msg_, long long flags_) { 393 PRE_READ(msg_, sizeof(__sanitizer_msghdr)); 394} 395POST_SYSCALL(sendmsg) 396(long long res, long long s_, void *msg_, long long flags_) { 397 if (res > 0) { 398 POST_READ(msg_, sizeof(__sanitizer_msghdr)); 399 } 400} 401PRE_SYSCALL(recvfrom) 402(long long s_, void *buf_, long long len_, long long flags_, void *from_, 403 void *fromlenaddr_) { 404 PRE_WRITE(buf_, len_); 405 PRE_WRITE(from_, struct_sockaddr_sz); 406 PRE_WRITE(fromlenaddr_, sizeof(__sanitizer_socklen_t)); 407} 408POST_SYSCALL(recvfrom) 409(long long res, long long s_, void *buf_, long long len_, long long flags_, 410 void *from_, void *fromlenaddr_) { 411 if (res >= 0) { 412 POST_WRITE(buf_, res); 413 POST_WRITE(from_, struct_sockaddr_sz); 414 POST_WRITE(fromlenaddr_, sizeof(__sanitizer_socklen_t)); 415 } 416} 417PRE_SYSCALL(accept)(long long s_, void *name_, void *anamelen_) { 418 PRE_WRITE(name_, struct_sockaddr_sz); 419 PRE_WRITE(anamelen_, sizeof(__sanitizer_socklen_t)); 420} 421POST_SYSCALL(accept) 422(long long res, long long s_, void *name_, void *anamelen_) { 423 if (res == 0) { 424 POST_WRITE(name_, struct_sockaddr_sz); 425 POST_WRITE(anamelen_, sizeof(__sanitizer_socklen_t)); 426 } 427} 428PRE_SYSCALL(getpeername)(long long fdes_, void *asa_, void *alen_) { 429 PRE_WRITE(asa_, struct_sockaddr_sz); 430 PRE_WRITE(alen_, sizeof(__sanitizer_socklen_t)); 431} 432POST_SYSCALL(getpeername) 433(long long res, long long fdes_, void *asa_, void *alen_) { 434 if (res == 0) { 435 POST_WRITE(asa_, struct_sockaddr_sz); 436 POST_WRITE(alen_, sizeof(__sanitizer_socklen_t)); 437 } 438} 439PRE_SYSCALL(getsockname)(long long fdes_, void *asa_, void *alen_) { 440 PRE_WRITE(asa_, struct_sockaddr_sz); 441 PRE_WRITE(alen_, sizeof(__sanitizer_socklen_t)); 442} 443POST_SYSCALL(getsockname) 444(long long res, long long fdes_, void *asa_, void *alen_) { 445 if (res == 0) { 446 POST_WRITE(asa_, struct_sockaddr_sz); 447 POST_WRITE(alen_, sizeof(__sanitizer_socklen_t)); 448 } 449} 450PRE_SYSCALL(access)(void *path_, long long flags_) { 451 const char *path = (const char *)path_; 452 if (path) { 453 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 454 } 455} 456POST_SYSCALL(access)(long long res, void *path_, long long flags_) { 457 if (res == 0) { 458 const char *path = (const char *)path_; 459 if (path) { 460 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 461 } 462 } 463} 464PRE_SYSCALL(chflags)(void *path_, long long flags_) { 465 const char *path = (const char *)path_; 466 if (path) { 467 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 468 } 469} 470POST_SYSCALL(chflags)(long long res, void *path_, long long flags_) { 471 if (res == 0) { 472 const char *path = (const char *)path_; 473 if (path) { 474 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 475 } 476 } 477} 478PRE_SYSCALL(fchflags)(long long fd_, long long flags_) { /* Nothing to do */ } 479POST_SYSCALL(fchflags)(long long res, long long fd_, long long flags_) { 480 /* Nothing to do */ 481} 482PRE_SYSCALL(sync)(void) { /* Nothing to do */ } 483POST_SYSCALL(sync)(long long res) { /* Nothing to do */ } 484PRE_SYSCALL(kill)(long long pid_, long long signum_) { /* Nothing to do */ } 485POST_SYSCALL(kill)(long long res, long long pid_, long long signum_) { 486 /* Nothing to do */ 487} 488PRE_SYSCALL(compat_43_stat43)(void *path_, void *ub_) { /* TODO */ } 489POST_SYSCALL(compat_43_stat43)(long long res, void *path_, void *ub_) { 490 /* TODO */ 491} 492PRE_SYSCALL(getppid)(void) { /* Nothing to do */ } 493POST_SYSCALL(getppid)(long long res) { /* Nothing to do */ } 494PRE_SYSCALL(compat_43_lstat43)(void *path_, void *ub_) { /* TODO */ } 495POST_SYSCALL(compat_43_lstat43)(long long res, void *path_, void *ub_) { 496 /* TODO */ 497} 498PRE_SYSCALL(dup)(long long fd_) { /* Nothing to do */ } 499POST_SYSCALL(dup)(long long res, long long fd_) { /* Nothing to do */ } 500PRE_SYSCALL(pipe)(void) { 501 /* pipe returns two descriptors through two returned values */ 502} 503POST_SYSCALL(pipe)(long long res) { 504 /* pipe returns two descriptors through two returned values */ 505} 506PRE_SYSCALL(getegid)(void) { /* Nothing to do */ } 507POST_SYSCALL(getegid)(long long res) { /* Nothing to do */ } 508PRE_SYSCALL(profil) 509(void *samples_, long long size_, long long offset_, long long scale_) { 510 if (samples_) { 511 PRE_WRITE(samples_, size_); 512 } 513} 514POST_SYSCALL(profil) 515(long long res, void *samples_, long long size_, long long offset_, 516 long long scale_) { 517 if (res == 0) { 518 if (samples_) { 519 POST_WRITE(samples_, size_); 520 } 521 } 522} 523PRE_SYSCALL(ktrace) 524(void *fname_, long long ops_, long long facs_, long long pid_) { 525 const char *fname = (const char *)fname_; 526 if (fname) { 527 PRE_READ(fname, __sanitizer::internal_strlen(fname) + 1); 528 } 529} 530POST_SYSCALL(ktrace) 531(long long res, void *fname_, long long ops_, long long facs_, long long pid_) { 532 const char *fname = (const char *)fname_; 533 if (res == 0) { 534 if (fname) { 535 POST_READ(fname, __sanitizer::internal_strlen(fname) + 1); 536 } 537 } 538} 539PRE_SYSCALL(compat_13_sigaction13)(long long signum_, void *nsa_, void *osa_) { 540 /* TODO */ 541} 542POST_SYSCALL(compat_13_sigaction13) 543(long long res, long long signum_, void *nsa_, void *osa_) { 544 /* TODO */ 545} 546PRE_SYSCALL(getgid)(void) { /* Nothing to do */ } 547POST_SYSCALL(getgid)(long long res) { /* Nothing to do */ } 548PRE_SYSCALL(compat_13_sigprocmask13)(long long how_, long long mask_) { 549 /* TODO */ 550} 551POST_SYSCALL(compat_13_sigprocmask13) 552(long long res, long long how_, long long mask_) { 553 /* TODO */ 554} 555PRE_SYSCALL(__getlogin)(void *namebuf_, long long namelen_) { 556 if (namebuf_) { 557 PRE_WRITE(namebuf_, namelen_); 558 } 559} 560POST_SYSCALL(__getlogin)(long long res, void *namebuf_, long long namelen_) { 561 if (res == 0) { 562 if (namebuf_) { 563 POST_WRITE(namebuf_, namelen_); 564 } 565 } 566} 567PRE_SYSCALL(__setlogin)(void *namebuf_) { 568 const char *namebuf = (const char *)namebuf_; 569 if (namebuf) { 570 PRE_READ(namebuf, __sanitizer::internal_strlen(namebuf) + 1); 571 } 572} 573POST_SYSCALL(__setlogin)(long long res, void *namebuf_) { 574 if (res == 0) { 575 const char *namebuf = (const char *)namebuf_; 576 if (namebuf) { 577 POST_READ(namebuf, __sanitizer::internal_strlen(namebuf) + 1); 578 } 579 } 580} 581PRE_SYSCALL(acct)(void *path_) { 582 const char *path = (const char *)path_; 583 if (path) { 584 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 585 } 586} 587POST_SYSCALL(acct)(long long res, void *path_) { 588 if (res == 0) { 589 const char *path = (const char *)path_; 590 if (path) { 591 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 592 } 593 } 594} 595PRE_SYSCALL(compat_13_sigpending13)(void) { /* TODO */ } 596POST_SYSCALL(compat_13_sigpending13)(long long res) { /* TODO */ } 597PRE_SYSCALL(compat_13_sigaltstack13)(void *nss_, void *oss_) { /* TODO */ } 598POST_SYSCALL(compat_13_sigaltstack13)(long long res, void *nss_, void *oss_) { 599 /* TODO */ 600} 601PRE_SYSCALL(ioctl)(long long fd_, long long com_, void *data_) { 602 /* Nothing to do */ 603} 604POST_SYSCALL(ioctl)(long long res, long long fd_, long long com_, void *data_) { 605 /* Nothing to do */ 606} 607PRE_SYSCALL(compat_12_oreboot)(long long opt_) { /* TODO */ } 608POST_SYSCALL(compat_12_oreboot)(long long res, long long opt_) { /* TODO */ } 609PRE_SYSCALL(revoke)(void *path_) { 610 const char *path = (const char *)path_; 611 if (path) { 612 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 613 } 614} 615POST_SYSCALL(revoke)(long long res, void *path_) { 616 if (res == 0) { 617 const char *path = (const char *)path_; 618 if (path) { 619 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 620 } 621 } 622} 623PRE_SYSCALL(symlink)(void *path_, void *link_) { 624 const char *path = (const char *)path_; 625 const char *link = (const char *)link_; 626 if (path) { 627 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 628 } 629 if (link) { 630 PRE_READ(link, __sanitizer::internal_strlen(link) + 1); 631 } 632} 633POST_SYSCALL(symlink)(long long res, void *path_, void *link_) { 634 if (res == 0) { 635 const char *path = (const char *)path_; 636 const char *link = (const char *)link_; 637 if (path) { 638 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 639 } 640 if (link) { 641 POST_READ(link, __sanitizer::internal_strlen(link) + 1); 642 } 643 } 644} 645PRE_SYSCALL(readlink)(void *path_, void *buf_, long long count_) { 646 const char *path = (const char *)path_; 647 if (path) { 648 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 649 } 650 if (buf_) { 651 PRE_WRITE(buf_, count_); 652 } 653} 654POST_SYSCALL(readlink) 655(long long res, void *path_, void *buf_, long long count_) { 656 if (res > 0) { 657 const char *path = (const char *)path_; 658 if (path) { 659 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 660 } 661 if (buf_) { 662 PRE_WRITE(buf_, res); 663 } 664 } 665} 666PRE_SYSCALL(execve)(void *path_, void *argp_, void *envp_) { 667 const char *path = (const char *)path_; 668 char **argp = (char **)argp_; 669 char **envp = (char **)envp_; 670 if (path) { 671 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 672 } 673 if (argp && argp[0]) { 674 char *a = argp[0]; 675 while (a++) { 676 PRE_READ(a, __sanitizer::internal_strlen(a) + 1); 677 } 678 } 679 if (envp && envp[0]) { 680 char *e = envp[0]; 681 while (e++) { 682 PRE_READ(e, __sanitizer::internal_strlen(e) + 1); 683 } 684 } 685} 686POST_SYSCALL(execve)(long long res, void *path_, void *argp_, void *envp_) { 687 /* If we are here, something went wrong */ 688 const char *path = (const char *)path_; 689 char **argp = (char **)argp_; 690 char **envp = (char **)envp_; 691 if (path) { 692 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 693 } 694 if (argp && argp[0]) { 695 char *a = argp[0]; 696 while (a++) { 697 POST_READ(a, __sanitizer::internal_strlen(a) + 1); 698 } 699 } 700 if (envp && envp[0]) { 701 char *e = envp[0]; 702 while (e++) { 703 POST_READ(e, __sanitizer::internal_strlen(e) + 1); 704 } 705 } 706} 707PRE_SYSCALL(umask)(long long newmask_) { /* Nothing to do */ } 708POST_SYSCALL(umask)(long long res, long long newmask_) { /* Nothing to do */ } 709PRE_SYSCALL(chroot)(void *path_) { 710 const char *path = (const char *)path_; 711 if (path) { 712 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 713 } 714} 715POST_SYSCALL(chroot)(long long res, void *path_) { 716 if (res == 0) { 717 const char *path = (const char *)path_; 718 if (path) { 719 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 720 } 721 } 722} 723PRE_SYSCALL(compat_43_fstat43)(long long fd_, void *sb_) { /* TODO */ } 724POST_SYSCALL(compat_43_fstat43)(long long res, long long fd_, void *sb_) { 725 /* TODO */ 726} 727PRE_SYSCALL(compat_43_ogetkerninfo) 728(long long op_, void *where_, void *size_, long long arg_) { 729 /* TODO */ 730} 731POST_SYSCALL(compat_43_ogetkerninfo) 732(long long res, long long op_, void *where_, void *size_, long long arg_) { 733 /* TODO */ 734} 735PRE_SYSCALL(compat_43_ogetpagesize)(void) { /* TODO */ } 736POST_SYSCALL(compat_43_ogetpagesize)(long long res) { /* TODO */ } 737PRE_SYSCALL(compat_12_msync)(void *addr_, long long len_) { /* TODO */ } 738POST_SYSCALL(compat_12_msync)(long long res, void *addr_, long long len_) { 739 /* TODO */ 740} 741PRE_SYSCALL(vfork)(void) { /* Nothing to do */ } 742POST_SYSCALL(vfork)(long long res) { /* Nothing to do */ } 743/* syscall 67 has been skipped */ 744/* syscall 68 has been skipped */ 745/* syscall 69 has been skipped */ 746/* syscall 70 has been skipped */ 747PRE_SYSCALL(compat_43_ommap) 748(void *addr_, long long len_, long long prot_, long long flags_, long long fd_, 749 long long pos_) { 750 /* TODO */ 751} 752POST_SYSCALL(compat_43_ommap) 753(long long res, void *addr_, long long len_, long long prot_, long long flags_, 754 long long fd_, long long pos_) { 755 /* TODO */ 756} 757PRE_SYSCALL(vadvise)(long long anom_) { /* Nothing to do */ } 758POST_SYSCALL(vadvise)(long long res, long long anom_) { /* Nothing to do */ } 759PRE_SYSCALL(munmap)(void *addr_, long long len_) { /* Nothing to do */ } 760POST_SYSCALL(munmap)(long long res, void *addr_, long long len_) { 761 /* Nothing to do */ 762} 763PRE_SYSCALL(mprotect)(void *addr_, long long len_, long long prot_) { 764 /* Nothing to do */ 765} 766POST_SYSCALL(mprotect) 767(long long res, void *addr_, long long len_, long long prot_) { 768 /* Nothing to do */ 769} 770PRE_SYSCALL(madvise)(void *addr_, long long len_, long long behav_) { 771 /* Nothing to do */ 772} 773POST_SYSCALL(madvise) 774(long long res, void *addr_, long long len_, long long behav_) { 775 /* Nothing to do */ 776} 777/* syscall 76 has been skipped */ 778/* syscall 77 has been skipped */ 779PRE_SYSCALL(mincore)(void *addr_, long long len_, void *vec_) { 780 /* Nothing to do */ 781} 782POST_SYSCALL(mincore)(long long res, void *addr_, long long len_, void *vec_) { 783 /* Nothing to do */ 784} 785PRE_SYSCALL(getgroups)(long long gidsetsize_, void *gidset_) { 786 unsigned int *gidset = (unsigned int *)gidset_; 787 if (gidset) { 788 PRE_WRITE(gidset, sizeof(*gidset) * gidsetsize_); 789 } 790} 791POST_SYSCALL(getgroups)(long long res, long long gidsetsize_, void *gidset_) { 792 if (res == 0) { 793 unsigned int *gidset = (unsigned int *)gidset_; 794 if (gidset) { 795 POST_WRITE(gidset, sizeof(*gidset) * gidsetsize_); 796 } 797 } 798} 799PRE_SYSCALL(setgroups)(long long gidsetsize_, void *gidset_) { 800 unsigned int *gidset = (unsigned int *)gidset_; 801 if (gidset) { 802 PRE_READ(gidset, sizeof(*gidset) * gidsetsize_); 803 } 804} 805POST_SYSCALL(setgroups)(long long res, long long gidsetsize_, void *gidset_) { 806 if (res == 0) { 807 unsigned int *gidset = (unsigned int *)gidset_; 808 if (gidset) { 809 POST_READ(gidset, sizeof(*gidset) * gidsetsize_); 810 } 811 } 812} 813PRE_SYSCALL(getpgrp)(void) { /* Nothing to do */ } 814POST_SYSCALL(getpgrp)(long long res) { /* Nothing to do */ } 815PRE_SYSCALL(setpgid)(long long pid_, long long pgid_) { /* Nothing to do */ } 816POST_SYSCALL(setpgid)(long long res, long long pid_, long long pgid_) { 817 /* Nothing to do */ 818} 819PRE_SYSCALL(compat_50_setitimer)(long long which_, void *itv_, void *oitv_) { 820 /* TODO */ 821} 822POST_SYSCALL(compat_50_setitimer) 823(long long res, long long which_, void *itv_, void *oitv_) { 824 /* TODO */ 825} 826PRE_SYSCALL(compat_43_owait)(void) { /* TODO */ } 827POST_SYSCALL(compat_43_owait)(long long res) { /* TODO */ } 828PRE_SYSCALL(compat_12_oswapon)(void *name_) { /* TODO */ } 829POST_SYSCALL(compat_12_oswapon)(long long res, void *name_) { /* TODO */ } 830PRE_SYSCALL(compat_50_getitimer)(long long which_, void *itv_) { /* TODO */ } 831POST_SYSCALL(compat_50_getitimer)(long long res, long long which_, void *itv_) { 832 /* TODO */ 833} 834PRE_SYSCALL(compat_43_ogethostname)(void *hostname_, long long len_) { 835 /* TODO */ 836} 837POST_SYSCALL(compat_43_ogethostname) 838(long long res, void *hostname_, long long len_) { 839 /* TODO */ 840} 841PRE_SYSCALL(compat_43_osethostname)(void *hostname_, long long len_) { 842 /* TODO */ 843} 844POST_SYSCALL(compat_43_osethostname) 845(long long res, void *hostname_, long long len_) { 846 /* TODO */ 847} 848PRE_SYSCALL(compat_43_ogetdtablesize)(void) { /* TODO */ } 849POST_SYSCALL(compat_43_ogetdtablesize)(long long res) { /* TODO */ } 850PRE_SYSCALL(dup2)(long long from_, long long to_) { /* Nothing to do */ } 851POST_SYSCALL(dup2)(long long res, long long from_, long long to_) { 852 /* Nothing to do */ 853} 854/* syscall 91 has been skipped */ 855PRE_SYSCALL(fcntl)(long long fd_, long long cmd_, void *arg_) { 856 /* Nothing to do */ 857} 858POST_SYSCALL(fcntl)(long long res, long long fd_, long long cmd_, void *arg_) { 859 /* Nothing to do */ 860} 861PRE_SYSCALL(compat_50_select) 862(long long nd_, void *in_, void *ou_, void *ex_, void *tv_) { 863 /* TODO */ 864} 865POST_SYSCALL(compat_50_select) 866(long long res, long long nd_, void *in_, void *ou_, void *ex_, void *tv_) { 867 /* TODO */ 868} 869/* syscall 94 has been skipped */ 870PRE_SYSCALL(fsync)(long long fd_) { /* Nothing to do */ } 871POST_SYSCALL(fsync)(long long res, long long fd_) { /* Nothing to do */ } 872PRE_SYSCALL(setpriority)(long long which_, long long who_, long long prio_) { 873 /* Nothing to do */ 874} 875POST_SYSCALL(setpriority) 876(long long res, long long which_, long long who_, long long prio_) { 877 /* Nothing to do */ 878} 879PRE_SYSCALL(compat_30_socket) 880(long long domain_, long long type_, long long protocol_) { 881 /* TODO */ 882} 883POST_SYSCALL(compat_30_socket) 884(long long res, long long domain_, long long type_, long long protocol_) { 885 /* TODO */ 886} 887PRE_SYSCALL(connect)(long long s_, void *name_, long long namelen_) { 888 PRE_READ(name_, namelen_); 889} 890POST_SYSCALL(connect) 891(long long res, long long s_, void *name_, long long namelen_) { 892 if (res == 0) { 893 POST_READ(name_, namelen_); 894 } 895} 896PRE_SYSCALL(compat_43_oaccept)(long long s_, void *name_, void *anamelen_) { 897 /* TODO */ 898} 899POST_SYSCALL(compat_43_oaccept) 900(long long res, long long s_, void *name_, void *anamelen_) { 901 /* TODO */ 902} 903PRE_SYSCALL(getpriority)(long long which_, long long who_) { 904 /* Nothing to do */ 905} 906POST_SYSCALL(getpriority)(long long res, long long which_, long long who_) { 907 /* Nothing to do */ 908} 909PRE_SYSCALL(compat_43_osend) 910(long long s_, void *buf_, long long len_, long long flags_) { 911 /* TODO */ 912} 913POST_SYSCALL(compat_43_osend) 914(long long res, long long s_, void *buf_, long long len_, long long flags_) { 915 /* TODO */ 916} 917PRE_SYSCALL(compat_43_orecv) 918(long long s_, void *buf_, long long len_, long long flags_) { 919 /* TODO */ 920} 921POST_SYSCALL(compat_43_orecv) 922(long long res, long long s_, void *buf_, long long len_, long long flags_) { 923 /* TODO */ 924} 925PRE_SYSCALL(compat_13_sigreturn13)(void *sigcntxp_) { /* TODO */ } 926POST_SYSCALL(compat_13_sigreturn13)(long long res, void *sigcntxp_) { 927 /* TODO */ 928} 929PRE_SYSCALL(bind)(long long s_, void *name_, long long namelen_) { 930 PRE_READ(name_, namelen_); 931} 932POST_SYSCALL(bind) 933(long long res, long long s_, void *name_, long long namelen_) { 934 if (res == 0) { 935 PRE_READ(name_, namelen_); 936 } 937} 938PRE_SYSCALL(setsockopt) 939(long long s_, long long level_, long long name_, void *val_, 940 long long valsize_) { 941 if (val_) { 942 PRE_READ(val_, valsize_); 943 } 944} 945POST_SYSCALL(setsockopt) 946(long long res, long long s_, long long level_, long long name_, void *val_, 947 long long valsize_) { 948 if (res == 0) { 949 if (val_) { 950 POST_READ(val_, valsize_); 951 } 952 } 953} 954PRE_SYSCALL(listen)(long long s_, long long backlog_) { /* Nothing to do */ } 955POST_SYSCALL(listen)(long long res, long long s_, long long backlog_) { 956 /* Nothing to do */ 957} 958/* syscall 107 has been skipped */ 959PRE_SYSCALL(compat_43_osigvec)(long long signum_, void *nsv_, void *osv_) { 960 /* TODO */ 961} 962POST_SYSCALL(compat_43_osigvec) 963(long long res, long long signum_, void *nsv_, void *osv_) { 964 /* TODO */ 965} 966PRE_SYSCALL(compat_43_osigblock)(long long mask_) { /* TODO */ } 967POST_SYSCALL(compat_43_osigblock)(long long res, long long mask_) { /* TODO */ } 968PRE_SYSCALL(compat_43_osigsetmask)(long long mask_) { /* TODO */ } 969POST_SYSCALL(compat_43_osigsetmask)(long long res, long long mask_) { 970 /* TODO */ 971} 972PRE_SYSCALL(compat_13_sigsuspend13)(long long mask_) { /* TODO */ } 973POST_SYSCALL(compat_13_sigsuspend13)(long long res, long long mask_) { 974 /* TODO */ 975} 976PRE_SYSCALL(compat_43_osigstack)(void *nss_, void *oss_) { /* TODO */ } 977POST_SYSCALL(compat_43_osigstack)(long long res, void *nss_, void *oss_) { 978 /* TODO */ 979} 980PRE_SYSCALL(compat_43_orecvmsg)(long long s_, void *msg_, long long flags_) { 981 /* TODO */ 982} 983POST_SYSCALL(compat_43_orecvmsg) 984(long long res, long long s_, void *msg_, long long flags_) { 985 /* TODO */ 986} 987PRE_SYSCALL(compat_43_osendmsg)(long long s_, void *msg_, long long flags_) { 988 /* TODO */ 989} 990POST_SYSCALL(compat_43_osendmsg) 991(long long res, long long s_, void *msg_, long long flags_) { 992 /* TODO */ 993} 994/* syscall 115 has been skipped */ 995PRE_SYSCALL(compat_50_gettimeofday)(void *tp_, void *tzp_) { /* TODO */ } 996POST_SYSCALL(compat_50_gettimeofday)(long long res, void *tp_, void *tzp_) { 997 /* TODO */ 998} 999PRE_SYSCALL(compat_50_getrusage)(long long who_, void *rusage_) { /* TODO */ } 1000POST_SYSCALL(compat_50_getrusage) 1001(long long res, long long who_, void *rusage_) { 1002 /* TODO */ 1003} 1004PRE_SYSCALL(getsockopt) 1005(long long s_, long long level_, long long name_, void *val_, void *avalsize_) { 1006 /* TODO */ 1007} 1008POST_SYSCALL(getsockopt) 1009(long long res, long long s_, long long level_, long long name_, void *val_, 1010 void *avalsize_) { 1011 /* TODO */ 1012} 1013/* syscall 119 has been skipped */ 1014PRE_SYSCALL(readv)(long long fd_, void *iovp_, long long iovcnt_) { 1015 struct __sanitizer_iovec *iovp = (struct __sanitizer_iovec *)iovp_; 1016 int i; 1017 if (iovp) { 1018 PRE_READ(iovp, sizeof(struct __sanitizer_iovec) * iovcnt_); 1019 for (i = 0; i < iovcnt_; i++) { 1020 PRE_WRITE(iovp[i].iov_base, iovp[i].iov_len); 1021 } 1022 } 1023} 1024POST_SYSCALL(readv) 1025(long long res, long long fd_, void *iovp_, long long iovcnt_) { 1026 struct __sanitizer_iovec *iovp = (struct __sanitizer_iovec *)iovp_; 1027 int i; 1028 uptr m, n = res; 1029 if (res > 0) { 1030 if (iovp) { 1031 POST_READ(iovp, sizeof(struct __sanitizer_iovec) * iovcnt_); 1032 for (i = 0; i < iovcnt_ && n > 0; i++) { 1033 m = n > iovp[i].iov_len ? iovp[i].iov_len : n; 1034 POST_WRITE(iovp[i].iov_base, m); 1035 n -= m; 1036 } 1037 } 1038 } 1039} 1040PRE_SYSCALL(writev)(long long fd_, void *iovp_, long long iovcnt_) { 1041 struct __sanitizer_iovec *iovp = (struct __sanitizer_iovec *)iovp_; 1042 int i; 1043 if (iovp) { 1044 PRE_READ(iovp, sizeof(struct __sanitizer_iovec) * iovcnt_); 1045 for (i = 0; i < iovcnt_; i++) { 1046 PRE_READ(iovp[i].iov_base, iovp[i].iov_len); 1047 } 1048 } 1049} 1050POST_SYSCALL(writev) 1051(long long res, long long fd_, void *iovp_, long long iovcnt_) { 1052 struct __sanitizer_iovec *iovp = (struct __sanitizer_iovec *)iovp_; 1053 int i; 1054 uptr m, n = res; 1055 if (res > 0) { 1056 if (iovp) { 1057 POST_READ(iovp, sizeof(struct __sanitizer_iovec) * iovcnt_); 1058 for (i = 0; i < iovcnt_ && n > 0; i++) { 1059 m = n > iovp[i].iov_len ? iovp[i].iov_len : n; 1060 POST_READ(iovp[i].iov_base, m); 1061 n -= m; 1062 } 1063 } 1064 } 1065} 1066PRE_SYSCALL(compat_50_settimeofday)(void *tv_, void *tzp_) { /* TODO */ } 1067POST_SYSCALL(compat_50_settimeofday)(long long res, void *tv_, void *tzp_) { 1068 /* TODO */ 1069} 1070PRE_SYSCALL(fchown)(long long fd_, long long uid_, long long gid_) { 1071 /* Nothing to do */ 1072} 1073POST_SYSCALL(fchown) 1074(long long res, long long fd_, long long uid_, long long gid_) { 1075 /* Nothing to do */ 1076} 1077PRE_SYSCALL(fchmod)(long long fd_, long long mode_) { /* Nothing to do */ } 1078POST_SYSCALL(fchmod)(long long res, long long fd_, long long mode_) { 1079 /* Nothing to do */ 1080} 1081PRE_SYSCALL(compat_43_orecvfrom) 1082(long long s_, void *buf_, long long len_, long long flags_, void *from_, 1083 void *fromlenaddr_) { 1084 /* TODO */ 1085} 1086POST_SYSCALL(compat_43_orecvfrom) 1087(long long res, long long s_, void *buf_, long long len_, long long flags_, 1088 void *from_, void *fromlenaddr_) { 1089 /* TODO */ 1090} 1091PRE_SYSCALL(setreuid)(long long ruid_, long long euid_) { /* Nothing to do */ } 1092POST_SYSCALL(setreuid)(long long res, long long ruid_, long long euid_) { 1093 /* Nothing to do */ 1094} 1095PRE_SYSCALL(setregid)(long long rgid_, long long egid_) { /* Nothing to do */ } 1096POST_SYSCALL(setregid)(long long res, long long rgid_, long long egid_) { 1097 /* Nothing to do */ 1098} 1099PRE_SYSCALL(rename)(void *from_, void *to_) { 1100 const char *from = (const char *)from_; 1101 const char *to = (const char *)to_; 1102 if (from) { 1103 PRE_READ(from, __sanitizer::internal_strlen(from) + 1); 1104 } 1105 if (to) { 1106 PRE_READ(to, __sanitizer::internal_strlen(to) + 1); 1107 } 1108} 1109POST_SYSCALL(rename)(long long res, void *from_, void *to_) { 1110 if (res == 0) { 1111 const char *from = (const char *)from_; 1112 const char *to = (const char *)to_; 1113 if (from) { 1114 POST_READ(from, __sanitizer::internal_strlen(from) + 1); 1115 } 1116 if (to) { 1117 POST_READ(to, __sanitizer::internal_strlen(to) + 1); 1118 } 1119 } 1120} 1121PRE_SYSCALL(compat_43_otruncate)(void *path_, long long length_) { /* TODO */ } 1122POST_SYSCALL(compat_43_otruncate) 1123(long long res, void *path_, long long length_) { 1124 /* TODO */ 1125} 1126PRE_SYSCALL(compat_43_oftruncate)(long long fd_, long long length_) { 1127 /* TODO */ 1128} 1129POST_SYSCALL(compat_43_oftruncate) 1130(long long res, long long fd_, long long length_) { 1131 /* TODO */ 1132} 1133PRE_SYSCALL(flock)(long long fd_, long long how_) { /* Nothing to do */ } 1134POST_SYSCALL(flock)(long long res, long long fd_, long long how_) { 1135 /* Nothing to do */ 1136} 1137PRE_SYSCALL(mkfifo)(void *path_, long long mode_) { 1138 const char *path = (const char *)path_; 1139 if (path) { 1140 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 1141 } 1142} 1143POST_SYSCALL(mkfifo)(long long res, void *path_, long long mode_) { 1144 if (res == 0) { 1145 const char *path = (const char *)path_; 1146 if (path) { 1147 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 1148 } 1149 } 1150} 1151PRE_SYSCALL(sendto) 1152(long long s_, void *buf_, long long len_, long long flags_, void *to_, 1153 long long tolen_) { 1154 PRE_READ(buf_, len_); 1155 PRE_READ(to_, tolen_); 1156} 1157POST_SYSCALL(sendto) 1158(long long res, long long s_, void *buf_, long long len_, long long flags_, 1159 void *to_, long long tolen_) { 1160 if (res >= 0) { 1161 POST_READ(buf_, len_); 1162 POST_READ(to_, tolen_); 1163 } 1164} 1165PRE_SYSCALL(shutdown)(long long s_, long long how_) { /* Nothing to do */ } 1166POST_SYSCALL(shutdown)(long long res, long long s_, long long how_) { 1167 /* Nothing to do */ 1168} 1169PRE_SYSCALL(socketpair) 1170(long long domain_, long long type_, long long protocol_, void *rsv_) { 1171 PRE_WRITE(rsv_, 2 * sizeof(int)); 1172} 1173POST_SYSCALL(socketpair) 1174(long long res, long long domain_, long long type_, long long protocol_, 1175 void *rsv_) { 1176 if (res == 0) { 1177 POST_WRITE(rsv_, 2 * sizeof(int)); 1178 } 1179} 1180PRE_SYSCALL(mkdir)(void *path_, long long mode_) { 1181 const char *path = (const char *)path_; 1182 if (path) { 1183 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 1184 } 1185} 1186POST_SYSCALL(mkdir)(long long res, void *path_, long long mode_) { 1187 if (res == 0) { 1188 const char *path = (const char *)path_; 1189 if (path) { 1190 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 1191 } 1192 } 1193} 1194PRE_SYSCALL(rmdir)(void *path_) { 1195 const char *path = (const char *)path_; 1196 if (path) { 1197 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 1198 } 1199} 1200POST_SYSCALL(rmdir)(long long res, void *path_) { 1201 if (res == 0) { 1202 const char *path = (const char *)path_; 1203 if (path) { 1204 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 1205 } 1206 } 1207} 1208PRE_SYSCALL(compat_50_utimes)(void *path_, void *tptr_) { /* TODO */ } 1209POST_SYSCALL(compat_50_utimes)(long long res, void *path_, void *tptr_) { 1210 /* TODO */ 1211} 1212/* syscall 139 has been skipped */ 1213PRE_SYSCALL(compat_50_adjtime)(void *delta_, void *olddelta_) { /* TODO */ } 1214POST_SYSCALL(compat_50_adjtime)(long long res, void *delta_, void *olddelta_) { 1215 /* TODO */ 1216} 1217PRE_SYSCALL(compat_43_ogetpeername)(long long fdes_, void *asa_, void *alen_) { 1218 /* TODO */ 1219} 1220POST_SYSCALL(compat_43_ogetpeername) 1221(long long res, long long fdes_, void *asa_, void *alen_) { 1222 /* TODO */ 1223} 1224PRE_SYSCALL(compat_43_ogethostid)(void) { /* TODO */ } 1225POST_SYSCALL(compat_43_ogethostid)(long long res) { /* TODO */ } 1226PRE_SYSCALL(compat_43_osethostid)(long long hostid_) { /* TODO */ } 1227POST_SYSCALL(compat_43_osethostid)(long long res, long long hostid_) { 1228 /* TODO */ 1229} 1230PRE_SYSCALL(compat_43_ogetrlimit)(long long which_, void *rlp_) { /* TODO */ } 1231POST_SYSCALL(compat_43_ogetrlimit) 1232(long long res, long long which_, void *rlp_) { 1233 /* TODO */ 1234} 1235PRE_SYSCALL(compat_43_osetrlimit)(long long which_, void *rlp_) { /* TODO */ } 1236POST_SYSCALL(compat_43_osetrlimit) 1237(long long res, long long which_, void *rlp_) { 1238 /* TODO */ 1239} 1240PRE_SYSCALL(compat_43_okillpg)(long long pgid_, long long signum_) { 1241 /* TODO */ 1242} 1243POST_SYSCALL(compat_43_okillpg) 1244(long long res, long long pgid_, long long signum_) { 1245 /* TODO */ 1246} 1247PRE_SYSCALL(setsid)(void) { /* Nothing to do */ } 1248POST_SYSCALL(setsid)(long long res) { /* Nothing to do */ } 1249PRE_SYSCALL(compat_50_quotactl) 1250(void *path_, long long cmd_, long long uid_, void *arg_) { 1251 /* TODO */ 1252} 1253POST_SYSCALL(compat_50_quotactl) 1254(long long res, void *path_, long long cmd_, long long uid_, void *arg_) { 1255 /* TODO */ 1256} 1257PRE_SYSCALL(compat_43_oquota)(void) { /* TODO */ } 1258POST_SYSCALL(compat_43_oquota)(long long res) { /* TODO */ } 1259PRE_SYSCALL(compat_43_ogetsockname)(long long fdec_, void *asa_, void *alen_) { 1260 /* TODO */ 1261} 1262POST_SYSCALL(compat_43_ogetsockname) 1263(long long res, long long fdec_, void *asa_, void *alen_) { 1264 /* TODO */ 1265} 1266/* syscall 151 has been skipped */ 1267/* syscall 152 has been skipped */ 1268/* syscall 153 has been skipped */ 1269/* syscall 154 has been skipped */ 1270PRE_SYSCALL(nfssvc)(long long flag_, void *argp_) { /* Nothing to do */ } 1271POST_SYSCALL(nfssvc)(long long res, long long flag_, void *argp_) { 1272 /* Nothing to do */ 1273} 1274PRE_SYSCALL(compat_43_ogetdirentries) 1275(long long fd_, void *buf_, long long count_, void *basep_) { 1276 /* TODO */ 1277} 1278POST_SYSCALL(compat_43_ogetdirentries) 1279(long long res, long long fd_, void *buf_, long long count_, void *basep_) { 1280 /* TODO */ 1281} 1282PRE_SYSCALL(compat_20_statfs)(void *path_, void *buf_) { /* TODO */ } 1283POST_SYSCALL(compat_20_statfs)(long long res, void *path_, void *buf_) { 1284 /* TODO */ 1285} 1286PRE_SYSCALL(compat_20_fstatfs)(long long fd_, void *buf_) { /* TODO */ } 1287POST_SYSCALL(compat_20_fstatfs)(long long res, long long fd_, void *buf_) { 1288 /* TODO */ 1289} 1290/* syscall 159 has been skipped */ 1291/* syscall 160 has been skipped */ 1292PRE_SYSCALL(compat_30_getfh)(void *fname_, void *fhp_) { /* TODO */ } 1293POST_SYSCALL(compat_30_getfh)(long long res, void *fname_, void *fhp_) { 1294 /* TODO */ 1295} 1296PRE_SYSCALL(compat_09_ogetdomainname)(void *domainname_, long long len_) { 1297 /* TODO */ 1298} 1299POST_SYSCALL(compat_09_ogetdomainname) 1300(long long res, void *domainname_, long long len_) { 1301 /* TODO */ 1302} 1303PRE_SYSCALL(compat_09_osetdomainname)(void *domainname_, long long len_) { 1304 /* TODO */ 1305} 1306POST_SYSCALL(compat_09_osetdomainname) 1307(long long res, void *domainname_, long long len_) { 1308 /* TODO */ 1309} 1310PRE_SYSCALL(compat_09_ouname)(void *name_) { /* TODO */ } 1311POST_SYSCALL(compat_09_ouname)(long long res, void *name_) { /* TODO */ } 1312PRE_SYSCALL(sysarch)(long long op_, void *parms_) { /* TODO */ } 1313POST_SYSCALL(sysarch)(long long res, long long op_, void *parms_) { /* TODO */ } 1314/* syscall 166 has been skipped */ 1315/* syscall 167 has been skipped */ 1316/* syscall 168 has been skipped */ 1317#if !defined(_LP64) 1318PRE_SYSCALL(compat_10_osemsys) 1319(long long which_, long long a2_, long long a3_, long long a4_, long long a5_) { 1320 /* TODO */ 1321} 1322POST_SYSCALL(compat_10_osemsys) 1323(long long res, long long which_, long long a2_, long long a3_, long long a4_, 1324 long long a5_) { 1325 /* TODO */ 1326} 1327#else 1328/* syscall 169 has been skipped */ 1329#endif 1330#if !defined(_LP64) 1331PRE_SYSCALL(compat_10_omsgsys) 1332(long long which_, long long a2_, long long a3_, long long a4_, long long a5_, 1333 long long a6_) { 1334 /* TODO */ 1335} 1336POST_SYSCALL(compat_10_omsgsys) 1337(long long res, long long which_, long long a2_, long long a3_, long long a4_, 1338 long long a5_, long long a6_) { 1339 /* TODO */ 1340} 1341#else 1342/* syscall 170 has been skipped */ 1343#endif 1344#if !defined(_LP64) 1345PRE_SYSCALL(compat_10_oshmsys) 1346(long long which_, long long a2_, long long a3_, long long a4_) { 1347 /* TODO */ 1348} 1349POST_SYSCALL(compat_10_oshmsys) 1350(long long res, long long which_, long long a2_, long long a3_, long long a4_) { 1351 /* TODO */ 1352} 1353#else 1354/* syscall 171 has been skipped */ 1355#endif 1356/* syscall 172 has been skipped */ 1357PRE_SYSCALL(pread) 1358(long long fd_, void *buf_, long long nbyte_, long long PAD_, 1359 long long offset_) { 1360 if (buf_) { 1361 PRE_WRITE(buf_, nbyte_); 1362 } 1363} 1364POST_SYSCALL(pread) 1365(long long res, long long fd_, void *buf_, long long nbyte_, long long PAD_, 1366 long long offset_) { 1367 if (res > 0) { 1368 POST_WRITE(buf_, res); 1369 } 1370} 1371PRE_SYSCALL(pwrite) 1372(long long fd_, void *buf_, long long nbyte_, long long PAD_, 1373 long long offset_) { 1374 if (buf_) { 1375 PRE_READ(buf_, nbyte_); 1376 } 1377} 1378POST_SYSCALL(pwrite) 1379(long long res, long long fd_, void *buf_, long long nbyte_, long long PAD_, 1380 long long offset_) { 1381 if (res > 0) { 1382 POST_READ(buf_, res); 1383 } 1384} 1385PRE_SYSCALL(compat_30_ntp_gettime)(void *ntvp_) { /* TODO */ } 1386POST_SYSCALL(compat_30_ntp_gettime)(long long res, void *ntvp_) { /* TODO */ } 1387#if defined(NTP) || !defined(_KERNEL_OPT) 1388PRE_SYSCALL(ntp_adjtime)(void *tp_) { /* Nothing to do */ } 1389POST_SYSCALL(ntp_adjtime)(long long res, void *tp_) { /* Nothing to do */ } 1390#else 1391/* syscall 176 has been skipped */ 1392#endif 1393/* syscall 177 has been skipped */ 1394/* syscall 178 has been skipped */ 1395/* syscall 179 has been skipped */ 1396/* syscall 180 has been skipped */ 1397PRE_SYSCALL(setgid)(long long gid_) { /* Nothing to do */ } 1398POST_SYSCALL(setgid)(long long res, long long gid_) { /* Nothing to do */ } 1399PRE_SYSCALL(setegid)(long long egid_) { /* Nothing to do */ } 1400POST_SYSCALL(setegid)(long long res, long long egid_) { /* Nothing to do */ } 1401PRE_SYSCALL(seteuid)(long long euid_) { /* Nothing to do */ } 1402POST_SYSCALL(seteuid)(long long res, long long euid_) { /* Nothing to do */ } 1403PRE_SYSCALL(lfs_bmapv)(void *fsidp_, void *blkiov_, long long blkcnt_) { 1404 /* TODO */ 1405} 1406POST_SYSCALL(lfs_bmapv) 1407(long long res, void *fsidp_, void *blkiov_, long long blkcnt_) { 1408 /* TODO */ 1409} 1410PRE_SYSCALL(lfs_markv)(void *fsidp_, void *blkiov_, long long blkcnt_) { 1411 /* TODO */ 1412} 1413POST_SYSCALL(lfs_markv) 1414(long long res, void *fsidp_, void *blkiov_, long long blkcnt_) { 1415 /* TODO */ 1416} 1417PRE_SYSCALL(lfs_segclean)(void *fsidp_, long long segment_) { /* TODO */ } 1418POST_SYSCALL(lfs_segclean)(long long res, void *fsidp_, long long segment_) { 1419 /* TODO */ 1420} 1421PRE_SYSCALL(compat_50_lfs_segwait)(void *fsidp_, void *tv_) { /* TODO */ } 1422POST_SYSCALL(compat_50_lfs_segwait)(long long res, void *fsidp_, void *tv_) { 1423 /* TODO */ 1424} 1425PRE_SYSCALL(compat_12_stat12)(void *path_, void *ub_) { /* TODO */ } 1426POST_SYSCALL(compat_12_stat12)(long long res, void *path_, void *ub_) { 1427 /* TODO */ 1428} 1429PRE_SYSCALL(compat_12_fstat12)(long long fd_, void *sb_) { /* TODO */ } 1430POST_SYSCALL(compat_12_fstat12)(long long res, long long fd_, void *sb_) { 1431 /* TODO */ 1432} 1433PRE_SYSCALL(compat_12_lstat12)(void *path_, void *ub_) { /* TODO */ } 1434POST_SYSCALL(compat_12_lstat12)(long long res, void *path_, void *ub_) { 1435 /* TODO */ 1436} 1437PRE_SYSCALL(pathconf)(void *path_, long long name_) { 1438 const char *path = (const char *)path_; 1439 if (path) { 1440 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 1441 } 1442} 1443POST_SYSCALL(pathconf)(long long res, void *path_, long long name_) { 1444 if (res != -1) { 1445 const char *path = (const char *)path_; 1446 if (path) { 1447 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 1448 } 1449 } 1450} 1451PRE_SYSCALL(fpathconf)(long long fd_, long long name_) { /* Nothing to do */ } 1452POST_SYSCALL(fpathconf)(long long res, long long fd_, long long name_) { 1453 /* Nothing to do */ 1454} 1455/* syscall 193 has been skipped */ 1456PRE_SYSCALL(getrlimit)(long long which_, void *rlp_) { 1457 PRE_WRITE(rlp_, struct_rlimit_sz); 1458} 1459POST_SYSCALL(getrlimit)(long long res, long long which_, void *rlp_) { 1460 if (res == 0) { 1461 POST_WRITE(rlp_, struct_rlimit_sz); 1462 } 1463} 1464PRE_SYSCALL(setrlimit)(long long which_, void *rlp_) { 1465 PRE_READ(rlp_, struct_rlimit_sz); 1466} 1467POST_SYSCALL(setrlimit)(long long res, long long which_, void *rlp_) { 1468 if (res == 0) { 1469 POST_READ(rlp_, struct_rlimit_sz); 1470 } 1471} 1472PRE_SYSCALL(compat_12_getdirentries) 1473(long long fd_, void *buf_, long long count_, void *basep_) { 1474 /* TODO */ 1475} 1476POST_SYSCALL(compat_12_getdirentries) 1477(long long res, long long fd_, void *buf_, long long count_, void *basep_) { 1478 /* TODO */ 1479} 1480PRE_SYSCALL(mmap) 1481(void *addr_, long long len_, long long prot_, long long flags_, long long fd_, 1482 long long PAD_, long long pos_) { 1483 /* Nothing to do */ 1484} 1485POST_SYSCALL(mmap) 1486(long long res, void *addr_, long long len_, long long prot_, long long flags_, 1487 long long fd_, long long PAD_, long long pos_) { 1488 /* Nothing to do */ 1489} 1490PRE_SYSCALL(__syscall)(long long code_, long long args_[SYS_MAXSYSARGS]) { 1491 /* Nothing to do */ 1492} 1493POST_SYSCALL(__syscall) 1494(long long res, long long code_, long long args_[SYS_MAXSYSARGS]) { 1495 /* Nothing to do */ 1496} 1497PRE_SYSCALL(lseek) 1498(long long fd_, long long PAD_, long long offset_, long long whence_) { 1499 /* Nothing to do */ 1500} 1501POST_SYSCALL(lseek) 1502(long long res, long long fd_, long long PAD_, long long offset_, 1503 long long whence_) { 1504 /* Nothing to do */ 1505} 1506PRE_SYSCALL(truncate)(void *path_, long long PAD_, long long length_) { 1507 const char *path = (const char *)path_; 1508 if (path) { 1509 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 1510 } 1511} 1512POST_SYSCALL(truncate) 1513(long long res, void *path_, long long PAD_, long long length_) { 1514 if (res == 0) { 1515 const char *path = (const char *)path_; 1516 if (path) { 1517 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 1518 } 1519 } 1520} 1521PRE_SYSCALL(ftruncate)(long long fd_, long long PAD_, long long length_) { 1522 /* Nothing to do */ 1523} 1524POST_SYSCALL(ftruncate) 1525(long long res, long long fd_, long long PAD_, long long length_) { 1526 /* Nothing to do */ 1527} 1528PRE_SYSCALL(__sysctl) 1529(void *name_, long long namelen_, void *oldv_, void *oldlenp_, void *newv_, 1530 long long newlen_) { 1531 const int *name = (const int *)name_; 1532 if (name) { 1533 PRE_READ(name, namelen_ * sizeof(*name)); 1534 } 1535 if (newv_) { 1536 PRE_READ(name, newlen_); 1537 } 1538} 1539POST_SYSCALL(__sysctl) 1540(long long res, void *name_, long long namelen_, void *oldv_, void *oldlenp_, 1541 void *newv_, long long newlen_) { 1542 if (res == 0) { 1543 const int *name = (const int *)name_; 1544 if (name) { 1545 POST_READ(name, namelen_ * sizeof(*name)); 1546 } 1547 if (newv_) { 1548 POST_READ(name, newlen_); 1549 } 1550 } 1551} 1552PRE_SYSCALL(mlock)(void *addr_, long long len_) { /* Nothing to do */ } 1553POST_SYSCALL(mlock)(long long res, void *addr_, long long len_) { 1554 /* Nothing to do */ 1555} 1556PRE_SYSCALL(munlock)(void *addr_, long long len_) { /* Nothing to do */ } 1557POST_SYSCALL(munlock)(long long res, void *addr_, long long len_) { 1558 /* Nothing to do */ 1559} 1560PRE_SYSCALL(undelete)(void *path_) { 1561 const char *path = (const char *)path_; 1562 if (path) { 1563 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 1564 } 1565} 1566POST_SYSCALL(undelete)(long long res, void *path_) { 1567 if (res == 0) { 1568 const char *path = (const char *)path_; 1569 if (path) { 1570 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 1571 } 1572 } 1573} 1574PRE_SYSCALL(compat_50_futimes)(long long fd_, void *tptr_) { /* TODO */ } 1575POST_SYSCALL(compat_50_futimes)(long long res, long long fd_, void *tptr_) { 1576 /* TODO */ 1577} 1578PRE_SYSCALL(getpgid)(long long pid_) { /* Nothing to do */ } 1579POST_SYSCALL(getpgid)(long long res, long long pid_) { /* Nothing to do */ } 1580PRE_SYSCALL(reboot)(long long opt_, void *bootstr_) { 1581 const char *bootstr = (const char *)bootstr_; 1582 if (bootstr) { 1583 PRE_READ(bootstr, __sanitizer::internal_strlen(bootstr) + 1); 1584 } 1585} 1586POST_SYSCALL(reboot)(long long res, long long opt_, void *bootstr_) { 1587 /* This call should never return */ 1588 const char *bootstr = (const char *)bootstr_; 1589 if (bootstr) { 1590 POST_READ(bootstr, __sanitizer::internal_strlen(bootstr) + 1); 1591 } 1592} 1593PRE_SYSCALL(poll)(void *fds_, long long nfds_, long long timeout_) { 1594 /* Nothing to do */ 1595} 1596POST_SYSCALL(poll) 1597(long long res, void *fds_, long long nfds_, long long timeout_) { 1598 /* Nothing to do */ 1599} 1600PRE_SYSCALL(afssys) 1601(long long id_, long long a1_, long long a2_, long long a3_, long long a4_, 1602 long long a5_, long long a6_) { 1603 /* TODO */ 1604} 1605POST_SYSCALL(afssys) 1606(long long res, long long id_, long long a1_, long long a2_, long long a3_, 1607 long long a4_, long long a5_, long long a6_) { 1608 /* TODO */ 1609} 1610/* syscall 211 has been skipped */ 1611/* syscall 212 has been skipped */ 1612/* syscall 213 has been skipped */ 1613/* syscall 214 has been skipped */ 1614/* syscall 215 has been skipped */ 1615/* syscall 216 has been skipped */ 1616/* syscall 217 has been skipped */ 1617/* syscall 218 has been skipped */ 1618/* syscall 219 has been skipped */ 1619PRE_SYSCALL(compat_14___semctl) 1620(long long semid_, long long semnum_, long long cmd_, void *arg_) { 1621 /* TODO */ 1622} 1623POST_SYSCALL(compat_14___semctl) 1624(long long res, long long semid_, long long semnum_, long long cmd_, 1625 void *arg_) { 1626 /* TODO */ 1627} 1628PRE_SYSCALL(semget)(long long key_, long long nsems_, long long semflg_) { 1629 /* Nothing to do */ 1630} 1631POST_SYSCALL(semget) 1632(long long res, long long key_, long long nsems_, long long semflg_) { 1633 /* Nothing to do */ 1634} 1635PRE_SYSCALL(semop)(long long semid_, void *sops_, long long nsops_) { 1636 if (sops_) { 1637 PRE_READ(sops_, nsops_ * struct_sembuf_sz); 1638 } 1639} 1640POST_SYSCALL(semop) 1641(long long res, long long semid_, void *sops_, long long nsops_) { 1642 if (res == 0) { 1643 if (sops_) { 1644 POST_READ(sops_, nsops_ * struct_sembuf_sz); 1645 } 1646 } 1647} 1648PRE_SYSCALL(semconfig)(long long flag_) { /* Nothing to do */ } 1649POST_SYSCALL(semconfig)(long long res, long long flag_) { /* Nothing to do */ } 1650PRE_SYSCALL(compat_14_msgctl)(long long msqid_, long long cmd_, void *buf_) { 1651 /* TODO */ 1652} 1653POST_SYSCALL(compat_14_msgctl) 1654(long long res, long long msqid_, long long cmd_, void *buf_) { 1655 /* TODO */ 1656} 1657PRE_SYSCALL(msgget)(long long key_, long long msgflg_) { /* Nothing to do */ } 1658POST_SYSCALL(msgget)(long long res, long long key_, long long msgflg_) { 1659 /* Nothing to do */ 1660} 1661PRE_SYSCALL(msgsnd) 1662(long long msqid_, void *msgp_, long long msgsz_, long long msgflg_) { 1663 if (msgp_) { 1664 PRE_READ(msgp_, msgsz_); 1665 } 1666} 1667POST_SYSCALL(msgsnd) 1668(long long res, long long msqid_, void *msgp_, long long msgsz_, 1669 long long msgflg_) { 1670 if (res == 0) { 1671 if (msgp_) { 1672 POST_READ(msgp_, msgsz_); 1673 } 1674 } 1675} 1676PRE_SYSCALL(msgrcv) 1677(long long msqid_, void *msgp_, long long msgsz_, long long msgtyp_, 1678 long long msgflg_) { 1679 /* Nothing to do */ 1680} 1681POST_SYSCALL(msgrcv) 1682(long long res, long long msqid_, void *msgp_, long long msgsz_, 1683 long long msgtyp_, long long msgflg_) { 1684 /* Nothing to do */ 1685} 1686PRE_SYSCALL(shmat)(long long shmid_, void *shmaddr_, long long shmflg_) { 1687 /* Nothing to do */ 1688} 1689POST_SYSCALL(shmat) 1690(long long res, long long shmid_, void *shmaddr_, long long shmflg_) { 1691 /* Nothing to do */ 1692} 1693PRE_SYSCALL(compat_14_shmctl)(long long shmid_, long long cmd_, void *buf_) { 1694 /* TODO */ 1695} 1696POST_SYSCALL(compat_14_shmctl) 1697(long long res, long long shmid_, long long cmd_, void *buf_) { 1698 /* TODO */ 1699} 1700PRE_SYSCALL(shmdt)(void *shmaddr_) { /* Nothing to do */ } 1701POST_SYSCALL(shmdt)(long long res, void *shmaddr_) { /* Nothing to do */ } 1702PRE_SYSCALL(shmget)(long long key_, long long size_, long long shmflg_) { 1703 /* Nothing to do */ 1704} 1705POST_SYSCALL(shmget) 1706(long long res, long long key_, long long size_, long long shmflg_) { 1707 /* Nothing to do */ 1708} 1709PRE_SYSCALL(compat_50_clock_gettime)(long long clock_id_, void *tp_) { 1710 /* TODO */ 1711} 1712POST_SYSCALL(compat_50_clock_gettime) 1713(long long res, long long clock_id_, void *tp_) { 1714 /* TODO */ 1715} 1716PRE_SYSCALL(compat_50_clock_settime)(long long clock_id_, void *tp_) { 1717 /* TODO */ 1718} 1719POST_SYSCALL(compat_50_clock_settime) 1720(long long res, long long clock_id_, void *tp_) { 1721 /* TODO */ 1722} 1723PRE_SYSCALL(compat_50_clock_getres)(long long clock_id_, void *tp_) { 1724 /* TODO */ 1725} 1726POST_SYSCALL(compat_50_clock_getres) 1727(long long res, long long clock_id_, void *tp_) { 1728 /* TODO */ 1729} 1730PRE_SYSCALL(timer_create)(long long clock_id_, void *evp_, void *timerid_) { 1731 /* Nothing to do */ 1732} 1733POST_SYSCALL(timer_create) 1734(long long res, long long clock_id_, void *evp_, void *timerid_) { 1735 /* Nothing to do */ 1736} 1737PRE_SYSCALL(timer_delete)(long long timerid_) { /* Nothing to do */ } 1738POST_SYSCALL(timer_delete)(long long res, long long timerid_) { 1739 /* Nothing to do */ 1740} 1741PRE_SYSCALL(compat_50_timer_settime) 1742(long long timerid_, long long flags_, void *value_, void *ovalue_) { 1743 /* TODO */ 1744} 1745POST_SYSCALL(compat_50_timer_settime) 1746(long long res, long long timerid_, long long flags_, void *value_, 1747 void *ovalue_) { 1748 /* TODO */ 1749} 1750PRE_SYSCALL(compat_50_timer_gettime)(long long timerid_, void *value_) { 1751 /* TODO */ 1752} 1753POST_SYSCALL(compat_50_timer_gettime) 1754(long long res, long long timerid_, void *value_) { 1755 /* TODO */ 1756} 1757PRE_SYSCALL(timer_getoverrun)(long long timerid_) { /* Nothing to do */ } 1758POST_SYSCALL(timer_getoverrun)(long long res, long long timerid_) { 1759 /* Nothing to do */ 1760} 1761PRE_SYSCALL(compat_50_nanosleep)(void *rqtp_, void *rmtp_) { /* TODO */ } 1762POST_SYSCALL(compat_50_nanosleep)(long long res, void *rqtp_, void *rmtp_) { 1763 /* TODO */ 1764} 1765PRE_SYSCALL(fdatasync)(long long fd_) { /* Nothing to do */ } 1766POST_SYSCALL(fdatasync)(long long res, long long fd_) { /* Nothing to do */ } 1767PRE_SYSCALL(mlockall)(long long flags_) { /* Nothing to do */ } 1768POST_SYSCALL(mlockall)(long long res, long long flags_) { /* Nothing to do */ } 1769PRE_SYSCALL(munlockall)(void) { /* Nothing to do */ } 1770POST_SYSCALL(munlockall)(long long res) { /* Nothing to do */ } 1771PRE_SYSCALL(compat_50___sigtimedwait)(void *set_, void *info_, void *timeout_) { 1772 /* TODO */ 1773} 1774POST_SYSCALL(compat_50___sigtimedwait) 1775(long long res, void *set_, void *info_, void *timeout_) { 1776 /* TODO */ 1777} 1778PRE_SYSCALL(sigqueueinfo)(long long pid_, void *info_) { 1779 if (info_) { 1780 PRE_READ(info_, siginfo_t_sz); 1781 } 1782} 1783POST_SYSCALL(sigqueueinfo)(long long res, long long pid_, void *info_) {} 1784PRE_SYSCALL(modctl)(long long cmd_, void *arg_) { /* TODO */ } 1785POST_SYSCALL(modctl)(long long res, long long cmd_, void *arg_) { /* TODO */ } 1786PRE_SYSCALL(_ksem_init)(long long value_, void *idp_) { /* Nothing to do */ } 1787POST_SYSCALL(_ksem_init)(long long res, long long value_, void *idp_) { 1788 /* Nothing to do */ 1789} 1790PRE_SYSCALL(_ksem_open) 1791(void *name_, long long oflag_, long long mode_, long long value_, void *idp_) { 1792 const char *name = (const char *)name_; 1793 if (name) { 1794 PRE_READ(name, __sanitizer::internal_strlen(name) + 1); 1795 } 1796} 1797POST_SYSCALL(_ksem_open) 1798(long long res, void *name_, long long oflag_, long long mode_, 1799 long long value_, void *idp_) { 1800 const char *name = (const char *)name_; 1801 if (name) { 1802 POST_READ(name, __sanitizer::internal_strlen(name) + 1); 1803 } 1804} 1805PRE_SYSCALL(_ksem_unlink)(void *name_) { 1806 const char *name = (const char *)name_; 1807 if (name) { 1808 PRE_READ(name, __sanitizer::internal_strlen(name) + 1); 1809 } 1810} 1811POST_SYSCALL(_ksem_unlink)(long long res, void *name_) { 1812 const char *name = (const char *)name_; 1813 if (name) { 1814 POST_READ(name, __sanitizer::internal_strlen(name) + 1); 1815 } 1816} 1817PRE_SYSCALL(_ksem_close)(long long id_) { /* Nothing to do */ } 1818POST_SYSCALL(_ksem_close)(long long res, long long id_) { /* Nothing to do */ } 1819PRE_SYSCALL(_ksem_post)(long long id_) { /* Nothing to do */ } 1820POST_SYSCALL(_ksem_post)(long long res, long long id_) { /* Nothing to do */ } 1821PRE_SYSCALL(_ksem_wait)(long long id_) { /* Nothing to do */ } 1822POST_SYSCALL(_ksem_wait)(long long res, long long id_) { /* Nothing to do */ } 1823PRE_SYSCALL(_ksem_trywait)(long long id_) { /* Nothing to do */ } 1824POST_SYSCALL(_ksem_trywait)(long long res, long long id_) { 1825 /* Nothing to do */ 1826} 1827PRE_SYSCALL(_ksem_getvalue)(long long id_, void *value_) { /* Nothing to do */ } 1828POST_SYSCALL(_ksem_getvalue)(long long res, long long id_, void *value_) { 1829 /* Nothing to do */ 1830} 1831PRE_SYSCALL(_ksem_destroy)(long long id_) { /* Nothing to do */ } 1832POST_SYSCALL(_ksem_destroy)(long long res, long long id_) { 1833 /* Nothing to do */ 1834} 1835PRE_SYSCALL(_ksem_timedwait)(long long id_, void *abstime_) { 1836 if (abstime_) { 1837 PRE_READ(abstime_, struct_timespec_sz); 1838 } 1839} 1840POST_SYSCALL(_ksem_timedwait)(long long res, long long id_, void *abstime_) {} 1841PRE_SYSCALL(mq_open) 1842(void *name_, long long oflag_, long long mode_, void *attr_) { 1843 const char *name = (const char *)name_; 1844 if (name) { 1845 PRE_READ(name, __sanitizer::internal_strlen(name) + 1); 1846 } 1847} 1848POST_SYSCALL(mq_open) 1849(long long res, void *name_, long long oflag_, long long mode_, void *attr_) { 1850 const char *name = (const char *)name_; 1851 if (name) { 1852 POST_READ(name, __sanitizer::internal_strlen(name) + 1); 1853 } 1854} 1855PRE_SYSCALL(mq_close)(long long mqdes_) { /* Nothing to do */ } 1856POST_SYSCALL(mq_close)(long long res, long long mqdes_) { /* Nothing to do */ } 1857PRE_SYSCALL(mq_unlink)(void *name_) { 1858 const char *name = (const char *)name_; 1859 if (name) { 1860 PRE_READ(name, __sanitizer::internal_strlen(name) + 1); 1861 } 1862} 1863POST_SYSCALL(mq_unlink)(long long res, void *name_) { 1864 const char *name = (const char *)name_; 1865 if (name) { 1866 POST_READ(name, __sanitizer::internal_strlen(name) + 1); 1867 } 1868} 1869PRE_SYSCALL(mq_getattr)(long long mqdes_, void *mqstat_) { /* Nothing to do */ } 1870POST_SYSCALL(mq_getattr)(long long res, long long mqdes_, void *mqstat_) { 1871 /* Nothing to do */ 1872} 1873PRE_SYSCALL(mq_setattr)(long long mqdes_, void *mqstat_, void *omqstat_) { 1874 if (mqstat_) { 1875 PRE_READ(mqstat_, struct_mq_attr_sz); 1876 } 1877} 1878POST_SYSCALL(mq_setattr) 1879(long long res, long long mqdes_, void *mqstat_, void *omqstat_) {} 1880PRE_SYSCALL(mq_notify)(long long mqdes_, void *notification_) { 1881 if (notification_) { 1882 PRE_READ(notification_, struct_sigevent_sz); 1883 } 1884} 1885POST_SYSCALL(mq_notify)(long long res, long long mqdes_, void *notification_) {} 1886PRE_SYSCALL(mq_send) 1887(long long mqdes_, void *msg_ptr_, long long msg_len_, long long msg_prio_) { 1888 if (msg_ptr_) { 1889 PRE_READ(msg_ptr_, msg_len_); 1890 } 1891} 1892POST_SYSCALL(mq_send) 1893(long long res, long long mqdes_, void *msg_ptr_, long long msg_len_, 1894 long long msg_prio_) {} 1895PRE_SYSCALL(mq_receive) 1896(long long mqdes_, void *msg_ptr_, long long msg_len_, void *msg_prio_) { 1897 /* Nothing to do */ 1898} 1899POST_SYSCALL(mq_receive) 1900(long long res, long long mqdes_, void *msg_ptr_, long long msg_len_, 1901 void *msg_prio_) { 1902 /* Nothing to do */ 1903} 1904PRE_SYSCALL(compat_50_mq_timedsend) 1905(long long mqdes_, void *msg_ptr_, long long msg_len_, long long msg_prio_, 1906 void *abs_timeout_) { 1907 /* TODO */ 1908} 1909POST_SYSCALL(compat_50_mq_timedsend) 1910(long long res, long long mqdes_, void *msg_ptr_, long long msg_len_, 1911 long long msg_prio_, void *abs_timeout_) { 1912 /* TODO */ 1913} 1914PRE_SYSCALL(compat_50_mq_timedreceive) 1915(long long mqdes_, void *msg_ptr_, long long msg_len_, void *msg_prio_, 1916 void *abs_timeout_) { 1917 /* TODO */ 1918} 1919POST_SYSCALL(compat_50_mq_timedreceive) 1920(long long res, long long mqdes_, void *msg_ptr_, long long msg_len_, 1921 void *msg_prio_, void *abs_timeout_) { 1922 /* TODO */ 1923} 1924/* syscall 267 has been skipped */ 1925/* syscall 268 has been skipped */ 1926/* syscall 269 has been skipped */ 1927PRE_SYSCALL(__posix_rename)(void *from_, void *to_) { 1928 const char *from = (const char *)from_; 1929 const char *to = (const char *)to_; 1930 if (from_) { 1931 PRE_READ(from, __sanitizer::internal_strlen(from) + 1); 1932 } 1933 if (to) { 1934 PRE_READ(to, __sanitizer::internal_strlen(to) + 1); 1935 } 1936} 1937POST_SYSCALL(__posix_rename)(long long res, void *from_, void *to_) { 1938 const char *from = (const char *)from_; 1939 const char *to = (const char *)to_; 1940 if (from) { 1941 POST_READ(from, __sanitizer::internal_strlen(from) + 1); 1942 } 1943 if (to) { 1944 POST_READ(to, __sanitizer::internal_strlen(to) + 1); 1945 } 1946} 1947PRE_SYSCALL(swapctl)(long long cmd_, void *arg_, long long misc_) { /* TODO */ } 1948POST_SYSCALL(swapctl) 1949(long long res, long long cmd_, void *arg_, long long misc_) { 1950 /* TODO */ 1951} 1952PRE_SYSCALL(compat_30_getdents)(long long fd_, void *buf_, long long count_) { 1953 /* TODO */ 1954} 1955POST_SYSCALL(compat_30_getdents) 1956(long long res, long long fd_, void *buf_, long long count_) { 1957 /* TODO */ 1958} 1959PRE_SYSCALL(minherit)(void *addr_, long long len_, long long inherit_) { 1960 /* Nothing to do */ 1961} 1962POST_SYSCALL(minherit) 1963(long long res, void *addr_, long long len_, long long inherit_) { 1964 /* Nothing to do */ 1965} 1966PRE_SYSCALL(lchmod)(void *path_, long long mode_) { 1967 const char *path = (const char *)path_; 1968 if (path) { 1969 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 1970 } 1971} 1972POST_SYSCALL(lchmod)(long long res, void *path_, long long mode_) { 1973 const char *path = (const char *)path_; 1974 if (path) { 1975 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 1976 } 1977} 1978PRE_SYSCALL(lchown)(void *path_, long long uid_, long long gid_) { 1979 const char *path = (const char *)path_; 1980 if (path) { 1981 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 1982 } 1983} 1984POST_SYSCALL(lchown) 1985(long long res, void *path_, long long uid_, long long gid_) { 1986 const char *path = (const char *)path_; 1987 if (path) { 1988 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 1989 } 1990} 1991PRE_SYSCALL(compat_50_lutimes)(void *path_, void *tptr_) { /* TODO */ } 1992POST_SYSCALL(compat_50_lutimes)(long long res, void *path_, void *tptr_) { 1993 /* TODO */ 1994} 1995PRE_SYSCALL(__msync13)(void *addr_, long long len_, long long flags_) { 1996 /* Nothing to do */ 1997} 1998POST_SYSCALL(__msync13) 1999(long long res, void *addr_, long long len_, long long flags_) { 2000 /* Nothing to do */ 2001} 2002PRE_SYSCALL(compat_30___stat13)(void *path_, void *ub_) { /* TODO */ } 2003POST_SYSCALL(compat_30___stat13)(long long res, void *path_, void *ub_) { 2004 /* TODO */ 2005} 2006PRE_SYSCALL(compat_30___fstat13)(long long fd_, void *sb_) { /* TODO */ } 2007POST_SYSCALL(compat_30___fstat13)(long long res, long long fd_, void *sb_) { 2008 /* TODO */ 2009} 2010PRE_SYSCALL(compat_30___lstat13)(void *path_, void *ub_) { /* TODO */ } 2011POST_SYSCALL(compat_30___lstat13)(long long res, void *path_, void *ub_) { 2012 /* TODO */ 2013} 2014PRE_SYSCALL(__sigaltstack14)(void *nss_, void *oss_) { 2015 if (nss_) { 2016 PRE_READ(nss_, struct_sigaltstack_sz); 2017 } 2018 if (oss_) { 2019 PRE_READ(oss_, struct_sigaltstack_sz); 2020 } 2021} 2022POST_SYSCALL(__sigaltstack14)(long long res, void *nss_, void *oss_) {} 2023PRE_SYSCALL(__vfork14)(void) { /* Nothing to do */ } 2024POST_SYSCALL(__vfork14)(long long res) { /* Nothing to do */ } 2025PRE_SYSCALL(__posix_chown)(void *path_, long long uid_, long long gid_) { 2026 const char *path = (const char *)path_; 2027 if (path) { 2028 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2029 } 2030} 2031POST_SYSCALL(__posix_chown) 2032(long long res, void *path_, long long uid_, long long gid_) { 2033 const char *path = (const char *)path_; 2034 if (path) { 2035 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2036 } 2037} 2038PRE_SYSCALL(__posix_fchown)(long long fd_, long long uid_, long long gid_) { 2039 /* Nothing to do */ 2040} 2041POST_SYSCALL(__posix_fchown) 2042(long long res, long long fd_, long long uid_, long long gid_) { 2043 /* Nothing to do */ 2044} 2045PRE_SYSCALL(__posix_lchown)(void *path_, long long uid_, long long gid_) { 2046 const char *path = (const char *)path_; 2047 if (path) { 2048 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2049 } 2050} 2051POST_SYSCALL(__posix_lchown) 2052(long long res, void *path_, long long uid_, long long gid_) { 2053 const char *path = (const char *)path_; 2054 if (path) { 2055 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2056 } 2057} 2058PRE_SYSCALL(getsid)(long long pid_) { /* Nothing to do */ } 2059POST_SYSCALL(getsid)(long long res, long long pid_) { /* Nothing to do */ } 2060PRE_SYSCALL(__clone)(long long flags_, void *stack_) { /* Nothing to do */ } 2061POST_SYSCALL(__clone)(long long res, long long flags_, void *stack_) { 2062 /* Nothing to do */ 2063} 2064PRE_SYSCALL(fktrace) 2065(long long fd_, long long ops_, long long facs_, long long pid_) { 2066 /* Nothing to do */ 2067} 2068POST_SYSCALL(fktrace) 2069(long long res, long long fd_, long long ops_, long long facs_, 2070 long long pid_) { 2071 /* Nothing to do */ 2072} 2073PRE_SYSCALL(preadv) 2074(long long fd_, void *iovp_, long long iovcnt_, long long PAD_, 2075 long long offset_) { 2076 /* Nothing to do */ 2077} 2078POST_SYSCALL(preadv) 2079(long long res, long long fd_, void *iovp_, long long iovcnt_, long long PAD_, 2080 long long offset_) { 2081 /* Nothing to do */ 2082} 2083PRE_SYSCALL(pwritev) 2084(long long fd_, void *iovp_, long long iovcnt_, long long PAD_, 2085 long long offset_) { 2086 /* Nothing to do */ 2087} 2088POST_SYSCALL(pwritev) 2089(long long res, long long fd_, void *iovp_, long long iovcnt_, long long PAD_, 2090 long long offset_) { 2091 /* Nothing to do */ 2092} 2093PRE_SYSCALL(compat_16___sigaction14) 2094(long long signum_, void *nsa_, void *osa_) { 2095 /* TODO */ 2096} 2097POST_SYSCALL(compat_16___sigaction14) 2098(long long res, long long signum_, void *nsa_, void *osa_) { 2099 /* TODO */ 2100} 2101PRE_SYSCALL(__sigpending14)(void *set_) { /* Nothing to do */ } 2102POST_SYSCALL(__sigpending14)(long long res, void *set_) { /* Nothing to do */ } 2103PRE_SYSCALL(__sigprocmask14)(long long how_, void *set_, void *oset_) { 2104 /* Nothing to do */ 2105} 2106POST_SYSCALL(__sigprocmask14) 2107(long long res, long long how_, void *set_, void *oset_) { 2108 /* Nothing to do */ 2109} 2110PRE_SYSCALL(__sigsuspend14)(void *set_) { 2111 if (set_) { 2112 PRE_READ(set_, sizeof(__sanitizer_sigset_t)); 2113 } 2114} 2115POST_SYSCALL(__sigsuspend14)(long long res, void *set_) { 2116 if (set_) { 2117 PRE_READ(set_, sizeof(__sanitizer_sigset_t)); 2118 } 2119} 2120PRE_SYSCALL(compat_16___sigreturn14)(void *sigcntxp_) { /* TODO */ } 2121POST_SYSCALL(compat_16___sigreturn14)(long long res, void *sigcntxp_) { 2122 /* TODO */ 2123} 2124PRE_SYSCALL(__getcwd)(void *bufp_, long long length_) { /* Nothing to do */ } 2125POST_SYSCALL(__getcwd)(long long res, void *bufp_, long long length_) { 2126 /* Nothing to do */ 2127} 2128PRE_SYSCALL(fchroot)(long long fd_) { /* Nothing to do */ } 2129POST_SYSCALL(fchroot)(long long res, long long fd_) { /* Nothing to do */ } 2130PRE_SYSCALL(compat_30_fhopen)(void *fhp_, long long flags_) { /* TODO */ } 2131POST_SYSCALL(compat_30_fhopen)(long long res, void *fhp_, long long flags_) { 2132 /* TODO */ 2133} 2134PRE_SYSCALL(compat_30_fhstat)(void *fhp_, void *sb_) { /* TODO */ } 2135POST_SYSCALL(compat_30_fhstat)(long long res, void *fhp_, void *sb_) { 2136 /* TODO */ 2137} 2138PRE_SYSCALL(compat_20_fhstatfs)(void *fhp_, void *buf_) { /* TODO */ } 2139POST_SYSCALL(compat_20_fhstatfs)(long long res, void *fhp_, void *buf_) { 2140 /* TODO */ 2141} 2142PRE_SYSCALL(compat_50_____semctl13) 2143(long long semid_, long long semnum_, long long cmd_, void *arg_) { 2144 /* TODO */ 2145} 2146POST_SYSCALL(compat_50_____semctl13) 2147(long long res, long long semid_, long long semnum_, long long cmd_, 2148 void *arg_) { 2149 /* TODO */ 2150} 2151PRE_SYSCALL(compat_50___msgctl13) 2152(long long msqid_, long long cmd_, void *buf_) { 2153 /* TODO */ 2154} 2155POST_SYSCALL(compat_50___msgctl13) 2156(long long res, long long msqid_, long long cmd_, void *buf_) { 2157 /* TODO */ 2158} 2159PRE_SYSCALL(compat_50___shmctl13) 2160(long long shmid_, long long cmd_, void *buf_) { 2161 /* TODO */ 2162} 2163POST_SYSCALL(compat_50___shmctl13) 2164(long long res, long long shmid_, long long cmd_, void *buf_) { 2165 /* TODO */ 2166} 2167PRE_SYSCALL(lchflags)(void *path_, long long flags_) { 2168 const char *path = (const char *)path_; 2169 if (path) { 2170 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2171 } 2172} 2173POST_SYSCALL(lchflags)(long long res, void *path_, long long flags_) { 2174 const char *path = (const char *)path_; 2175 if (path) { 2176 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2177 } 2178} 2179PRE_SYSCALL(issetugid)(void) { /* Nothing to do */ } 2180POST_SYSCALL(issetugid)(long long res) { /* Nothing to do */ } 2181PRE_SYSCALL(utrace)(void *label_, void *addr_, long long len_) { 2182 const char *label = (const char *)label_; 2183 if (label) { 2184 PRE_READ(label, __sanitizer::internal_strlen(label) + 1); 2185 } 2186 if (addr_) { 2187 PRE_READ(addr_, len_); 2188 } 2189} 2190POST_SYSCALL(utrace)(long long res, void *label_, void *addr_, long long len_) { 2191 const char *label = (const char *)label_; 2192 if (label) { 2193 POST_READ(label, __sanitizer::internal_strlen(label) + 1); 2194 } 2195 if (addr_) { 2196 POST_READ(addr_, len_); 2197 } 2198} 2199PRE_SYSCALL(getcontext)(void *ucp_) { /* Nothing to do */ } 2200POST_SYSCALL(getcontext)(long long res, void *ucp_) { /* Nothing to do */ } 2201PRE_SYSCALL(setcontext)(void *ucp_) { 2202 if (ucp_) { 2203 PRE_READ(ucp_, ucontext_t_sz); 2204 } 2205} 2206POST_SYSCALL(setcontext)(long long res, void *ucp_) {} 2207PRE_SYSCALL(_lwp_create)(void *ucp_, long long flags_, void *new_lwp_) { 2208 if (ucp_) { 2209 PRE_READ(ucp_, ucontext_t_sz); 2210 } 2211} 2212POST_SYSCALL(_lwp_create) 2213(long long res, void *ucp_, long long flags_, void *new_lwp_) {} 2214PRE_SYSCALL(_lwp_exit)(void) { /* Nothing to do */ } 2215POST_SYSCALL(_lwp_exit)(long long res) { /* Nothing to do */ } 2216PRE_SYSCALL(_lwp_self)(void) { /* Nothing to do */ } 2217POST_SYSCALL(_lwp_self)(long long res) { /* Nothing to do */ } 2218PRE_SYSCALL(_lwp_wait)(long long wait_for_, void *departed_) { 2219 /* Nothing to do */ 2220} 2221POST_SYSCALL(_lwp_wait)(long long res, long long wait_for_, void *departed_) { 2222 /* Nothing to do */ 2223} 2224PRE_SYSCALL(_lwp_suspend)(long long target_) { /* Nothing to do */ } 2225POST_SYSCALL(_lwp_suspend)(long long res, long long target_) { 2226 /* Nothing to do */ 2227} 2228PRE_SYSCALL(_lwp_continue)(long long target_) { /* Nothing to do */ } 2229POST_SYSCALL(_lwp_continue)(long long res, long long target_) { 2230 /* Nothing to do */ 2231} 2232PRE_SYSCALL(_lwp_wakeup)(long long target_) { /* Nothing to do */ } 2233POST_SYSCALL(_lwp_wakeup)(long long res, long long target_) { 2234 /* Nothing to do */ 2235} 2236PRE_SYSCALL(_lwp_getprivate)(void) { /* Nothing to do */ } 2237POST_SYSCALL(_lwp_getprivate)(long long res) { /* Nothing to do */ } 2238PRE_SYSCALL(_lwp_setprivate)(void *ptr_) { /* Nothing to do */ } 2239POST_SYSCALL(_lwp_setprivate)(long long res, void *ptr_) { /* Nothing to do */ } 2240PRE_SYSCALL(_lwp_kill)(long long target_, long long signo_) { 2241 /* Nothing to do */ 2242} 2243POST_SYSCALL(_lwp_kill)(long long res, long long target_, long long signo_) { 2244 /* Nothing to do */ 2245} 2246PRE_SYSCALL(_lwp_detach)(long long target_) { /* Nothing to do */ } 2247POST_SYSCALL(_lwp_detach)(long long res, long long target_) { 2248 /* Nothing to do */ 2249} 2250PRE_SYSCALL(compat_50__lwp_park) 2251(void *ts_, long long unpark_, void *hint_, void *unparkhint_) { 2252 /* TODO */ 2253} 2254POST_SYSCALL(compat_50__lwp_park) 2255(long long res, void *ts_, long long unpark_, void *hint_, void *unparkhint_) { 2256 /* TODO */ 2257} 2258PRE_SYSCALL(_lwp_unpark)(long long target_, void *hint_) { /* Nothing to do */ } 2259POST_SYSCALL(_lwp_unpark)(long long res, long long target_, void *hint_) { 2260 /* Nothing to do */ 2261} 2262PRE_SYSCALL(_lwp_unpark_all)(void *targets_, long long ntargets_, void *hint_) { 2263 if (targets_) { 2264 PRE_READ(targets_, ntargets_ * sizeof(__sanitizer_lwpid_t)); 2265 } 2266} 2267POST_SYSCALL(_lwp_unpark_all) 2268(long long res, void *targets_, long long ntargets_, void *hint_) {} 2269PRE_SYSCALL(_lwp_setname)(long long target_, void *name_) { 2270 const char *name = (const char *)name_; 2271 if (name) { 2272 PRE_READ(name, __sanitizer::internal_strlen(name) + 1); 2273 } 2274} 2275POST_SYSCALL(_lwp_setname)(long long res, long long target_, void *name_) { 2276 const char *name = (const char *)name_; 2277 if (name) { 2278 POST_READ(name, __sanitizer::internal_strlen(name) + 1); 2279 } 2280} 2281PRE_SYSCALL(_lwp_getname)(long long target_, void *name_, long long len_) { 2282 /* Nothing to do */ 2283} 2284POST_SYSCALL(_lwp_getname) 2285(long long res, long long target_, void *name_, long long len_) { 2286 /* Nothing to do */ 2287} 2288PRE_SYSCALL(_lwp_ctl)(long long features_, void **address_) { 2289 /* Nothing to do */ 2290} 2291POST_SYSCALL(_lwp_ctl)(long long res, long long features_, void **address_) { 2292 /* Nothing to do */ 2293} 2294/* syscall 326 has been skipped */ 2295/* syscall 327 has been skipped */ 2296/* syscall 328 has been skipped */ 2297/* syscall 329 has been skipped */ 2298PRE_SYSCALL(compat_60_sa_register) 2299(void *newv_, void **oldv_, long long flags_, long long stackinfo_offset_) { 2300 /* TODO */ 2301} 2302POST_SYSCALL(compat_60_sa_register) 2303(long long res, void *newv_, void **oldv_, long long flags_, 2304 long long stackinfo_offset_) { 2305 /* TODO */ 2306} 2307PRE_SYSCALL(compat_60_sa_stacks)(long long num_, void *stacks_) { /* TODO */ } 2308POST_SYSCALL(compat_60_sa_stacks) 2309(long long res, long long num_, void *stacks_) { 2310 /* TODO */ 2311} 2312PRE_SYSCALL(compat_60_sa_enable)(void) { /* TODO */ } 2313POST_SYSCALL(compat_60_sa_enable)(long long res) { /* TODO */ } 2314PRE_SYSCALL(compat_60_sa_setconcurrency)(long long concurrency_) { /* TODO */ } 2315POST_SYSCALL(compat_60_sa_setconcurrency) 2316(long long res, long long concurrency_) { 2317 /* TODO */ 2318} 2319PRE_SYSCALL(compat_60_sa_yield)(void) { /* TODO */ } 2320POST_SYSCALL(compat_60_sa_yield)(long long res) { /* TODO */ } 2321PRE_SYSCALL(compat_60_sa_preempt)(long long sa_id_) { /* TODO */ } 2322POST_SYSCALL(compat_60_sa_preempt)(long long res, long long sa_id_) { 2323 /* TODO */ 2324} 2325/* syscall 336 has been skipped */ 2326/* syscall 337 has been skipped */ 2327/* syscall 338 has been skipped */ 2328/* syscall 339 has been skipped */ 2329PRE_SYSCALL(__sigaction_sigtramp) 2330(long long signum_, void *nsa_, void *osa_, void *tramp_, long long vers_) { 2331 if (nsa_) { 2332 PRE_READ(nsa_, sizeof(__sanitizer_sigaction)); 2333 } 2334} 2335POST_SYSCALL(__sigaction_sigtramp) 2336(long long res, long long signum_, void *nsa_, void *osa_, void *tramp_, 2337 long long vers_) { 2338 if (nsa_) { 2339 PRE_READ(nsa_, sizeof(__sanitizer_sigaction)); 2340 } 2341} 2342PRE_SYSCALL(pmc_get_info)(long long ctr_, long long op_, void *args_) { 2343 /* TODO */ 2344} 2345POST_SYSCALL(pmc_get_info) 2346(long long res, long long ctr_, long long op_, void *args_) { 2347 /* TODO */ 2348} 2349PRE_SYSCALL(pmc_control)(long long ctr_, long long op_, void *args_) { 2350 /* TODO */ 2351} 2352POST_SYSCALL(pmc_control) 2353(long long res, long long ctr_, long long op_, void *args_) { 2354 /* TODO */ 2355} 2356PRE_SYSCALL(rasctl)(void *addr_, long long len_, long long op_) { 2357 /* Nothing to do */ 2358} 2359POST_SYSCALL(rasctl) 2360(long long res, void *addr_, long long len_, long long op_) { 2361 /* Nothing to do */ 2362} 2363PRE_SYSCALL(kqueue)(void) { /* Nothing to do */ } 2364POST_SYSCALL(kqueue)(long long res) { /* Nothing to do */ } 2365PRE_SYSCALL(compat_50_kevent) 2366(long long fd_, void *changelist_, long long nchanges_, void *eventlist_, 2367 long long nevents_, void *timeout_) { 2368 /* TODO */ 2369} 2370POST_SYSCALL(compat_50_kevent) 2371(long long res, long long fd_, void *changelist_, long long nchanges_, 2372 void *eventlist_, long long nevents_, void *timeout_) { 2373 /* TODO */ 2374} 2375PRE_SYSCALL(_sched_setparam) 2376(long long pid_, long long lid_, long long policy_, void *params_) { 2377 if (params_) { 2378 PRE_READ(params_, struct_sched_param_sz); 2379 } 2380} 2381POST_SYSCALL(_sched_setparam) 2382(long long res, long long pid_, long long lid_, long long policy_, 2383 void *params_) { 2384 if (params_) { 2385 PRE_READ(params_, struct_sched_param_sz); 2386 } 2387} 2388PRE_SYSCALL(_sched_getparam) 2389(long long pid_, long long lid_, void *policy_, void *params_) { 2390 /* Nothing to do */ 2391} 2392POST_SYSCALL(_sched_getparam) 2393(long long res, long long pid_, long long lid_, void *policy_, void *params_) { 2394 /* Nothing to do */ 2395} 2396PRE_SYSCALL(_sched_setaffinity) 2397(long long pid_, long long lid_, long long size_, void *cpuset_) { 2398 if (cpuset_) { 2399 PRE_READ(cpuset_, size_); 2400 } 2401} 2402POST_SYSCALL(_sched_setaffinity) 2403(long long res, long long pid_, long long lid_, long long size_, 2404 void *cpuset_) { 2405 if (cpuset_) { 2406 PRE_READ(cpuset_, size_); 2407 } 2408} 2409PRE_SYSCALL(_sched_getaffinity) 2410(long long pid_, long long lid_, long long size_, void *cpuset_) { 2411 /* Nothing to do */ 2412} 2413POST_SYSCALL(_sched_getaffinity) 2414(long long res, long long pid_, long long lid_, long long size_, 2415 void *cpuset_) { 2416 /* Nothing to do */ 2417} 2418PRE_SYSCALL(sched_yield)(void) { /* Nothing to do */ } 2419POST_SYSCALL(sched_yield)(long long res) { /* Nothing to do */ } 2420PRE_SYSCALL(_sched_protect)(long long priority_) { /* Nothing to do */ } 2421POST_SYSCALL(_sched_protect)(long long res, long long priority_) { 2422 /* Nothing to do */ 2423} 2424/* syscall 352 has been skipped */ 2425/* syscall 353 has been skipped */ 2426PRE_SYSCALL(fsync_range) 2427(long long fd_, long long flags_, long long start_, long long length_) { 2428 /* Nothing to do */ 2429} 2430POST_SYSCALL(fsync_range) 2431(long long res, long long fd_, long long flags_, long long start_, 2432 long long length_) { 2433 /* Nothing to do */ 2434} 2435PRE_SYSCALL(uuidgen)(void *store_, long long count_) { /* Nothing to do */ } 2436POST_SYSCALL(uuidgen)(long long res, void *store_, long long count_) { 2437 /* Nothing to do */ 2438} 2439PRE_SYSCALL(getvfsstat)(void *buf_, long long bufsize_, long long flags_) { 2440 /* Nothing to do */ 2441} 2442POST_SYSCALL(getvfsstat) 2443(long long res, void *buf_, long long bufsize_, long long flags_) { 2444 /* Nothing to do */ 2445} 2446PRE_SYSCALL(statvfs1)(void *path_, void *buf_, long long flags_) { 2447 const char *path = (const char *)path_; 2448 if (path) { 2449 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2450 } 2451} 2452POST_SYSCALL(statvfs1) 2453(long long res, void *path_, void *buf_, long long flags_) { 2454 const char *path = (const char *)path_; 2455 if (path) { 2456 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2457 } 2458} 2459PRE_SYSCALL(fstatvfs1)(long long fd_, void *buf_, long long flags_) { 2460 /* Nothing to do */ 2461} 2462POST_SYSCALL(fstatvfs1) 2463(long long res, long long fd_, void *buf_, long long flags_) { 2464 /* Nothing to do */ 2465} 2466PRE_SYSCALL(compat_30_fhstatvfs1)(void *fhp_, void *buf_, long long flags_) { 2467 /* TODO */ 2468} 2469POST_SYSCALL(compat_30_fhstatvfs1) 2470(long long res, void *fhp_, void *buf_, long long flags_) { 2471 /* TODO */ 2472} 2473PRE_SYSCALL(extattrctl) 2474(void *path_, long long cmd_, void *filename_, long long attrnamespace_, 2475 void *attrname_) { 2476 const char *path = (const char *)path_; 2477 if (path) { 2478 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2479 } 2480} 2481POST_SYSCALL(extattrctl) 2482(long long res, void *path_, long long cmd_, void *filename_, 2483 long long attrnamespace_, void *attrname_) { 2484 const char *path = (const char *)path_; 2485 if (path) { 2486 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2487 } 2488} 2489PRE_SYSCALL(extattr_set_file) 2490(void *path_, long long attrnamespace_, void *attrname_, void *data_, 2491 long long nbytes_) { 2492 const char *path = (const char *)path_; 2493 if (path) { 2494 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2495 } 2496} 2497POST_SYSCALL(extattr_set_file) 2498(long long res, void *path_, long long attrnamespace_, void *attrname_, 2499 void *data_, long long nbytes_) { 2500 const char *path = (const char *)path_; 2501 if (path) { 2502 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2503 } 2504} 2505PRE_SYSCALL(extattr_get_file) 2506(void *path_, long long attrnamespace_, void *attrname_, void *data_, 2507 long long nbytes_) { 2508 const char *path = (const char *)path_; 2509 if (path) { 2510 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2511 } 2512} 2513POST_SYSCALL(extattr_get_file) 2514(long long res, void *path_, long long attrnamespace_, void *attrname_, 2515 void *data_, long long nbytes_) { 2516 const char *path = (const char *)path_; 2517 if (path) { 2518 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2519 } 2520} 2521PRE_SYSCALL(extattr_delete_file) 2522(void *path_, long long attrnamespace_, void *attrname_) { 2523 const char *path = (const char *)path_; 2524 if (path) { 2525 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2526 } 2527} 2528POST_SYSCALL(extattr_delete_file) 2529(long long res, void *path_, long long attrnamespace_, void *attrname_) { 2530 const char *path = (const char *)path_; 2531 if (path) { 2532 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2533 } 2534} 2535PRE_SYSCALL(extattr_set_fd) 2536(long long fd_, long long attrnamespace_, void *attrname_, void *data_, 2537 long long nbytes_) { 2538 /* TODO */ 2539} 2540POST_SYSCALL(extattr_set_fd) 2541(long long res, long long fd_, long long attrnamespace_, void *attrname_, 2542 void *data_, long long nbytes_) { 2543 /* TODO */ 2544} 2545PRE_SYSCALL(extattr_get_fd) 2546(long long fd_, long long attrnamespace_, void *attrname_, void *data_, 2547 long long nbytes_) { 2548 /* TODO */ 2549} 2550POST_SYSCALL(extattr_get_fd) 2551(long long res, long long fd_, long long attrnamespace_, void *attrname_, 2552 void *data_, long long nbytes_) { 2553 /* TODO */ 2554} 2555PRE_SYSCALL(extattr_delete_fd) 2556(long long fd_, long long attrnamespace_, void *attrname_) { 2557 /* TODO */ 2558} 2559POST_SYSCALL(extattr_delete_fd) 2560(long long res, long long fd_, long long attrnamespace_, void *attrname_) { 2561 /* TODO */ 2562} 2563PRE_SYSCALL(extattr_set_link) 2564(void *path_, long long attrnamespace_, void *attrname_, void *data_, 2565 long long nbytes_) { 2566 const char *path = (const char *)path_; 2567 if (path) { 2568 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2569 } 2570} 2571POST_SYSCALL(extattr_set_link) 2572(long long res, void *path_, long long attrnamespace_, void *attrname_, 2573 void *data_, long long nbytes_) { 2574 const char *path = (const char *)path_; 2575 if (path) { 2576 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2577 } 2578} 2579PRE_SYSCALL(extattr_get_link) 2580(void *path_, long long attrnamespace_, void *attrname_, void *data_, 2581 long long nbytes_) { 2582 const char *path = (const char *)path_; 2583 if (path) { 2584 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2585 } 2586} 2587POST_SYSCALL(extattr_get_link) 2588(long long res, void *path_, long long attrnamespace_, void *attrname_, 2589 void *data_, long long nbytes_) { 2590 const char *path = (const char *)path_; 2591 if (path) { 2592 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2593 } 2594} 2595PRE_SYSCALL(extattr_delete_link) 2596(void *path_, long long attrnamespace_, void *attrname_) { 2597 const char *path = (const char *)path_; 2598 if (path) { 2599 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2600 } 2601} 2602POST_SYSCALL(extattr_delete_link) 2603(long long res, void *path_, long long attrnamespace_, void *attrname_) { 2604 const char *path = (const char *)path_; 2605 if (path) { 2606 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2607 } 2608} 2609PRE_SYSCALL(extattr_list_fd) 2610(long long fd_, long long attrnamespace_, void *data_, long long nbytes_) { 2611 /* TODO */ 2612} 2613POST_SYSCALL(extattr_list_fd) 2614(long long res, long long fd_, long long attrnamespace_, void *data_, 2615 long long nbytes_) { 2616 /* TODO */ 2617} 2618PRE_SYSCALL(extattr_list_file) 2619(void *path_, long long attrnamespace_, void *data_, long long nbytes_) { 2620 const char *path = (const char *)path_; 2621 if (path) { 2622 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2623 } 2624} 2625POST_SYSCALL(extattr_list_file) 2626(long long res, void *path_, long long attrnamespace_, void *data_, 2627 long long nbytes_) { 2628 const char *path = (const char *)path_; 2629 if (path) { 2630 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2631 } 2632} 2633PRE_SYSCALL(extattr_list_link) 2634(void *path_, long long attrnamespace_, void *data_, long long nbytes_) { 2635 const char *path = (const char *)path_; 2636 if (path) { 2637 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2638 } 2639} 2640POST_SYSCALL(extattr_list_link) 2641(long long res, void *path_, long long attrnamespace_, void *data_, 2642 long long nbytes_) { 2643 const char *path = (const char *)path_; 2644 if (path) { 2645 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2646 } 2647} 2648PRE_SYSCALL(compat_50_pselect) 2649(long long nd_, void *in_, void *ou_, void *ex_, void *ts_, void *mask_) { 2650 /* TODO */ 2651} 2652POST_SYSCALL(compat_50_pselect) 2653(long long res, long long nd_, void *in_, void *ou_, void *ex_, void *ts_, 2654 void *mask_) { 2655 /* TODO */ 2656} 2657PRE_SYSCALL(compat_50_pollts) 2658(void *fds_, long long nfds_, void *ts_, void *mask_) { 2659 /* TODO */ 2660} 2661POST_SYSCALL(compat_50_pollts) 2662(long long res, void *fds_, long long nfds_, void *ts_, void *mask_) { 2663 /* TODO */ 2664} 2665PRE_SYSCALL(setxattr) 2666(void *path_, void *name_, void *value_, long long size_, long long flags_) { 2667 const char *path = (const char *)path_; 2668 if (path) { 2669 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2670 } 2671} 2672POST_SYSCALL(setxattr) 2673(long long res, void *path_, void *name_, void *value_, long long size_, 2674 long long flags_) { 2675 const char *path = (const char *)path_; 2676 if (path) { 2677 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2678 } 2679} 2680PRE_SYSCALL(lsetxattr) 2681(void *path_, void *name_, void *value_, long long size_, long long flags_) { 2682 const char *path = (const char *)path_; 2683 if (path) { 2684 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2685 } 2686} 2687POST_SYSCALL(lsetxattr) 2688(long long res, void *path_, void *name_, void *value_, long long size_, 2689 long long flags_) { 2690 const char *path = (const char *)path_; 2691 if (path) { 2692 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2693 } 2694} 2695PRE_SYSCALL(fsetxattr) 2696(long long fd_, void *name_, void *value_, long long size_, long long flags_) { 2697 /* Nothing to do */ 2698} 2699POST_SYSCALL(fsetxattr) 2700(long long res, long long fd_, void *name_, void *value_, long long size_, 2701 long long flags_) { 2702 /* Nothing to do */ 2703} 2704PRE_SYSCALL(getxattr)(void *path_, void *name_, void *value_, long long size_) { 2705 const char *path = (const char *)path_; 2706 if (path) { 2707 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2708 } 2709} 2710POST_SYSCALL(getxattr) 2711(long long res, void *path_, void *name_, void *value_, long long size_) { 2712 const char *path = (const char *)path_; 2713 if (path) { 2714 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2715 } 2716} 2717PRE_SYSCALL(lgetxattr) 2718(void *path_, void *name_, void *value_, long long size_) { 2719 const char *path = (const char *)path_; 2720 if (path) { 2721 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2722 } 2723} 2724POST_SYSCALL(lgetxattr) 2725(long long res, void *path_, void *name_, void *value_, long long size_) { 2726 const char *path = (const char *)path_; 2727 if (path) { 2728 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2729 } 2730} 2731PRE_SYSCALL(fgetxattr) 2732(long long fd_, void *name_, void *value_, long long size_) { 2733 /* Nothing to do */ 2734} 2735POST_SYSCALL(fgetxattr) 2736(long long res, long long fd_, void *name_, void *value_, long long size_) { 2737 /* Nothing to do */ 2738} 2739PRE_SYSCALL(listxattr)(void *path_, void *list_, long long size_) { 2740 const char *path = (const char *)path_; 2741 if (path) { 2742 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2743 } 2744} 2745POST_SYSCALL(listxattr) 2746(long long res, void *path_, void *list_, long long size_) { 2747 const char *path = (const char *)path_; 2748 if (path) { 2749 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2750 } 2751} 2752PRE_SYSCALL(llistxattr)(void *path_, void *list_, long long size_) { 2753 const char *path = (const char *)path_; 2754 if (path) { 2755 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2756 } 2757} 2758POST_SYSCALL(llistxattr) 2759(long long res, void *path_, void *list_, long long size_) { 2760 const char *path = (const char *)path_; 2761 if (path) { 2762 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2763 } 2764} 2765PRE_SYSCALL(flistxattr)(long long fd_, void *list_, long long size_) { 2766 /* TODO */ 2767} 2768POST_SYSCALL(flistxattr) 2769(long long res, long long fd_, void *list_, long long size_) { 2770 /* TODO */ 2771} 2772PRE_SYSCALL(removexattr)(void *path_, void *name_) { 2773 const char *path = (const char *)path_; 2774 if (path) { 2775 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2776 } 2777} 2778POST_SYSCALL(removexattr)(long long res, void *path_, void *name_) { 2779 const char *path = (const char *)path_; 2780 if (path) { 2781 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2782 } 2783} 2784PRE_SYSCALL(lremovexattr)(void *path_, void *name_) { 2785 const char *path = (const char *)path_; 2786 if (path) { 2787 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2788 } 2789} 2790POST_SYSCALL(lremovexattr)(long long res, void *path_, void *name_) { 2791 const char *path = (const char *)path_; 2792 if (path) { 2793 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2794 } 2795} 2796PRE_SYSCALL(fremovexattr)(long long fd_, void *name_) { /* TODO */ } 2797POST_SYSCALL(fremovexattr)(long long res, long long fd_, void *name_) { 2798 /* TODO */ 2799} 2800PRE_SYSCALL(compat_50___stat30)(void *path_, void *ub_) { /* TODO */ } 2801POST_SYSCALL(compat_50___stat30)(long long res, void *path_, void *ub_) { 2802 /* TODO */ 2803} 2804PRE_SYSCALL(compat_50___fstat30)(long long fd_, void *sb_) { /* TODO */ } 2805POST_SYSCALL(compat_50___fstat30)(long long res, long long fd_, void *sb_) { 2806 /* TODO */ 2807} 2808PRE_SYSCALL(compat_50___lstat30)(void *path_, void *ub_) { /* TODO */ } 2809POST_SYSCALL(compat_50___lstat30)(long long res, void *path_, void *ub_) { 2810 /* TODO */ 2811} 2812PRE_SYSCALL(__getdents30)(long long fd_, void *buf_, long long count_) { 2813 /* Nothing to do */ 2814} 2815POST_SYSCALL(__getdents30) 2816(long long res, long long fd_, void *buf_, long long count_) { 2817 /* Nothing to do */ 2818} 2819PRE_SYSCALL(posix_fadvise)(long long) { /* Nothing to do */ } 2820POST_SYSCALL(posix_fadvise)(long long res, long long) { /* Nothing to do */ } 2821PRE_SYSCALL(compat_30___fhstat30)(void *fhp_, void *sb_) { /* TODO */ } 2822POST_SYSCALL(compat_30___fhstat30)(long long res, void *fhp_, void *sb_) { 2823 /* TODO */ 2824} 2825PRE_SYSCALL(compat_50___ntp_gettime30)(void *ntvp_) { /* TODO */ } 2826POST_SYSCALL(compat_50___ntp_gettime30)(long long res, void *ntvp_) { 2827 /* TODO */ 2828} 2829PRE_SYSCALL(__socket30) 2830(long long domain_, long long type_, long long protocol_) { 2831 /* Nothing to do */ 2832} 2833POST_SYSCALL(__socket30) 2834(long long res, long long domain_, long long type_, long long protocol_) { 2835 /* Nothing to do */ 2836} 2837PRE_SYSCALL(__getfh30)(void *fname_, void *fhp_, void *fh_size_) { 2838 const char *fname = (const char *)fname_; 2839 if (fname) { 2840 PRE_READ(fname, __sanitizer::internal_strlen(fname) + 1); 2841 } 2842} 2843POST_SYSCALL(__getfh30) 2844(long long res, void *fname_, void *fhp_, void *fh_size_) { 2845 const char *fname = (const char *)fname_; 2846 if (res == 0) { 2847 if (fname) { 2848 POST_READ(fname, __sanitizer::internal_strlen(fname) + 1); 2849 } 2850 } 2851} 2852PRE_SYSCALL(__fhopen40)(void *fhp_, long long fh_size_, long long flags_) { 2853 if (fhp_) { 2854 PRE_READ(fhp_, fh_size_); 2855 } 2856} 2857POST_SYSCALL(__fhopen40) 2858(long long res, void *fhp_, long long fh_size_, long long flags_) {} 2859PRE_SYSCALL(__fhstatvfs140) 2860(void *fhp_, long long fh_size_, void *buf_, long long flags_) { 2861 if (fhp_) { 2862 PRE_READ(fhp_, fh_size_); 2863 } 2864} 2865POST_SYSCALL(__fhstatvfs140) 2866(long long res, void *fhp_, long long fh_size_, void *buf_, long long flags_) {} 2867PRE_SYSCALL(compat_50___fhstat40)(void *fhp_, long long fh_size_, void *sb_) { 2868 if (fhp_) { 2869 PRE_READ(fhp_, fh_size_); 2870 } 2871} 2872POST_SYSCALL(compat_50___fhstat40) 2873(long long res, void *fhp_, long long fh_size_, void *sb_) {} 2874PRE_SYSCALL(aio_cancel)(long long fildes_, void *aiocbp_) { 2875 if (aiocbp_) { 2876 PRE_READ(aiocbp_, sizeof(struct __sanitizer_aiocb)); 2877 } 2878} 2879POST_SYSCALL(aio_cancel)(long long res, long long fildes_, void *aiocbp_) {} 2880PRE_SYSCALL(aio_error)(void *aiocbp_) { 2881 if (aiocbp_) { 2882 PRE_READ(aiocbp_, sizeof(struct __sanitizer_aiocb)); 2883 } 2884} 2885POST_SYSCALL(aio_error)(long long res, void *aiocbp_) {} 2886PRE_SYSCALL(aio_fsync)(long long op_, void *aiocbp_) { 2887 if (aiocbp_) { 2888 PRE_READ(aiocbp_, sizeof(struct __sanitizer_aiocb)); 2889 } 2890} 2891POST_SYSCALL(aio_fsync)(long long res, long long op_, void *aiocbp_) {} 2892PRE_SYSCALL(aio_read)(void *aiocbp_) { 2893 if (aiocbp_) { 2894 PRE_READ(aiocbp_, sizeof(struct __sanitizer_aiocb)); 2895 } 2896} 2897POST_SYSCALL(aio_read)(long long res, void *aiocbp_) {} 2898PRE_SYSCALL(aio_return)(void *aiocbp_) { 2899 if (aiocbp_) { 2900 PRE_READ(aiocbp_, sizeof(struct __sanitizer_aiocb)); 2901 } 2902} 2903POST_SYSCALL(aio_return)(long long res, void *aiocbp_) {} 2904PRE_SYSCALL(compat_50_aio_suspend) 2905(void *list_, long long nent_, void *timeout_) { 2906 /* TODO */ 2907} 2908POST_SYSCALL(compat_50_aio_suspend) 2909(long long res, void *list_, long long nent_, void *timeout_) { 2910 /* TODO */ 2911} 2912PRE_SYSCALL(aio_write)(void *aiocbp_) { 2913 if (aiocbp_) { 2914 PRE_READ(aiocbp_, sizeof(struct __sanitizer_aiocb)); 2915 } 2916} 2917POST_SYSCALL(aio_write)(long long res, void *aiocbp_) {} 2918PRE_SYSCALL(lio_listio) 2919(long long mode_, void *list_, long long nent_, void *sig_) { 2920 /* Nothing to do */ 2921} 2922POST_SYSCALL(lio_listio) 2923(long long res, long long mode_, void *list_, long long nent_, void *sig_) { 2924 /* Nothing to do */ 2925} 2926/* syscall 407 has been skipped */ 2927/* syscall 408 has been skipped */ 2928/* syscall 409 has been skipped */ 2929PRE_SYSCALL(__mount50) 2930(void *type_, void *path_, long long flags_, void *data_, long long data_len_) { 2931 const char *type = (const char *)type_; 2932 const char *path = (const char *)path_; 2933 if (type) { 2934 PRE_READ(type, __sanitizer::internal_strlen(type) + 1); 2935 } 2936 if (path) { 2937 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 2938 } 2939 if (data_) { 2940 PRE_READ(data_, data_len_); 2941 } 2942} 2943POST_SYSCALL(__mount50) 2944(long long res, void *type_, void *path_, long long flags_, void *data_, 2945 long long data_len_) { 2946 const char *type = (const char *)type_; 2947 const char *path = (const char *)path_; 2948 if (type) { 2949 POST_READ(type, __sanitizer::internal_strlen(type) + 1); 2950 } 2951 if (path) { 2952 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 2953 } 2954 if (data_) { 2955 POST_READ(data_, data_len_); 2956 } 2957} 2958PRE_SYSCALL(mremap) 2959(void *old_address_, long long old_size_, void *new_address_, 2960 long long new_size_, long long flags_) { 2961 /* Nothing to do */ 2962} 2963POST_SYSCALL(mremap) 2964(long long res, void *old_address_, long long old_size_, void *new_address_, 2965 long long new_size_, long long flags_) { 2966 /* Nothing to do */ 2967} 2968PRE_SYSCALL(pset_create)(void *psid_) { /* Nothing to do */ } 2969POST_SYSCALL(pset_create)(long long res, void *psid_) { /* Nothing to do */ } 2970PRE_SYSCALL(pset_destroy)(long long psid_) { /* Nothing to do */ } 2971POST_SYSCALL(pset_destroy)(long long res, long long psid_) { 2972 /* Nothing to do */ 2973} 2974PRE_SYSCALL(pset_assign)(long long psid_, long long cpuid_, void *opsid_) { 2975 /* Nothing to do */ 2976} 2977POST_SYSCALL(pset_assign) 2978(long long res, long long psid_, long long cpuid_, void *opsid_) { 2979 /* Nothing to do */ 2980} 2981PRE_SYSCALL(_pset_bind) 2982(long long idtype_, long long first_id_, long long second_id_, long long psid_, 2983 void *opsid_) { 2984 /* Nothing to do */ 2985} 2986POST_SYSCALL(_pset_bind) 2987(long long res, long long idtype_, long long first_id_, long long second_id_, 2988 long long psid_, void *opsid_) { 2989 /* Nothing to do */ 2990} 2991PRE_SYSCALL(__posix_fadvise50) 2992(long long fd_, long long PAD_, long long offset_, long long len_, 2993 long long advice_) { 2994 /* Nothing to do */ 2995} 2996POST_SYSCALL(__posix_fadvise50) 2997(long long res, long long fd_, long long PAD_, long long offset_, 2998 long long len_, long long advice_) { 2999 /* Nothing to do */ 3000} 3001PRE_SYSCALL(__select50) 3002(long long nd_, void *in_, void *ou_, void *ex_, void *tv_) { 3003 /* Nothing to do */ 3004} 3005POST_SYSCALL(__select50) 3006(long long res, long long nd_, void *in_, void *ou_, void *ex_, void *tv_) { 3007 /* Nothing to do */ 3008} 3009PRE_SYSCALL(__gettimeofday50)(void *tp_, void *tzp_) { /* Nothing to do */ } 3010POST_SYSCALL(__gettimeofday50)(long long res, void *tp_, void *tzp_) { 3011 /* Nothing to do */ 3012} 3013PRE_SYSCALL(__settimeofday50)(void *tv_, void *tzp_) { 3014 if (tv_) { 3015 PRE_READ(tv_, timeval_sz); 3016 } 3017 if (tzp_) { 3018 PRE_READ(tzp_, struct_timezone_sz); 3019 } 3020} 3021POST_SYSCALL(__settimeofday50)(long long res, void *tv_, void *tzp_) {} 3022PRE_SYSCALL(__utimes50)(void *path_, void *tptr_) { 3023 struct __sanitizer_timespec **tptr = (struct __sanitizer_timespec **)tptr_; 3024 const char *path = (const char *)path_; 3025 if (path) { 3026 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3027 } 3028 if (tptr) { 3029 PRE_READ(tptr[0], struct_timespec_sz); 3030 PRE_READ(tptr[1], struct_timespec_sz); 3031 } 3032} 3033POST_SYSCALL(__utimes50)(long long res, void *path_, void *tptr_) {} 3034PRE_SYSCALL(__adjtime50)(void *delta_, void *olddelta_) { 3035 if (delta_) { 3036 PRE_READ(delta_, timeval_sz); 3037 } 3038} 3039POST_SYSCALL(__adjtime50)(long long res, void *delta_, void *olddelta_) {} 3040PRE_SYSCALL(__lfs_segwait50)(void *fsidp_, void *tv_) { /* TODO */ } 3041POST_SYSCALL(__lfs_segwait50)(long long res, void *fsidp_, void *tv_) { 3042 /* TODO */ 3043} 3044PRE_SYSCALL(__futimes50)(long long fd_, void *tptr_) { 3045 struct __sanitizer_timespec **tptr = (struct __sanitizer_timespec **)tptr_; 3046 if (tptr) { 3047 PRE_READ(tptr[0], struct_timespec_sz); 3048 PRE_READ(tptr[1], struct_timespec_sz); 3049 } 3050} 3051POST_SYSCALL(__futimes50)(long long res, long long fd_, void *tptr_) {} 3052PRE_SYSCALL(__lutimes50)(void *path_, void *tptr_) { 3053 struct __sanitizer_timespec **tptr = (struct __sanitizer_timespec **)tptr_; 3054 const char *path = (const char *)path_; 3055 if (path) { 3056 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3057 } 3058 if (tptr) { 3059 PRE_READ(tptr[0], struct_timespec_sz); 3060 PRE_READ(tptr[1], struct_timespec_sz); 3061 } 3062} 3063POST_SYSCALL(__lutimes50)(long long res, void *path_, void *tptr_) { 3064 struct __sanitizer_timespec **tptr = (struct __sanitizer_timespec **)tptr_; 3065 const char *path = (const char *)path_; 3066 if (path) { 3067 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3068 } 3069 if (tptr) { 3070 POST_READ(tptr[0], struct_timespec_sz); 3071 POST_READ(tptr[1], struct_timespec_sz); 3072 } 3073} 3074PRE_SYSCALL(__setitimer50)(long long which_, void *itv_, void *oitv_) { 3075 struct __sanitizer_itimerval *itv = (struct __sanitizer_itimerval *)itv_; 3076 if (itv) { 3077 PRE_READ(&itv->it_interval.tv_sec, sizeof(__sanitizer_time_t)); 3078 PRE_READ(&itv->it_interval.tv_usec, sizeof(__sanitizer_suseconds_t)); 3079 PRE_READ(&itv->it_value.tv_sec, sizeof(__sanitizer_time_t)); 3080 PRE_READ(&itv->it_value.tv_usec, sizeof(__sanitizer_suseconds_t)); 3081 } 3082} 3083POST_SYSCALL(__setitimer50) 3084(long long res, long long which_, void *itv_, void *oitv_) {} 3085PRE_SYSCALL(__getitimer50)(long long which_, void *itv_) { /* Nothing to do */ } 3086POST_SYSCALL(__getitimer50)(long long res, long long which_, void *itv_) { 3087 /* Nothing to do */ 3088} 3089PRE_SYSCALL(__clock_gettime50)(long long clock_id_, void *tp_) { 3090 /* Nothing to do */ 3091} 3092POST_SYSCALL(__clock_gettime50)(long long res, long long clock_id_, void *tp_) { 3093 /* Nothing to do */ 3094} 3095PRE_SYSCALL(__clock_settime50)(long long clock_id_, void *tp_) { 3096 if (tp_) { 3097 PRE_READ(tp_, struct_timespec_sz); 3098 } 3099} 3100POST_SYSCALL(__clock_settime50) 3101(long long res, long long clock_id_, void *tp_) {} 3102PRE_SYSCALL(__clock_getres50)(long long clock_id_, void *tp_) { 3103 /* Nothing to do */ 3104} 3105POST_SYSCALL(__clock_getres50)(long long res, long long clock_id_, void *tp_) { 3106 /* Nothing to do */ 3107} 3108PRE_SYSCALL(__nanosleep50)(void *rqtp_, void *rmtp_) { 3109 if (rqtp_) { 3110 PRE_READ(rqtp_, struct_timespec_sz); 3111 } 3112} 3113POST_SYSCALL(__nanosleep50)(long long res, void *rqtp_, void *rmtp_) {} 3114PRE_SYSCALL(____sigtimedwait50)(void *set_, void *info_, void *timeout_) { 3115 if (set_) { 3116 PRE_READ(set_, sizeof(__sanitizer_sigset_t)); 3117 } 3118 if (timeout_) { 3119 PRE_READ(timeout_, struct_timespec_sz); 3120 } 3121} 3122POST_SYSCALL(____sigtimedwait50) 3123(long long res, void *set_, void *info_, void *timeout_) {} 3124PRE_SYSCALL(__mq_timedsend50) 3125(long long mqdes_, void *msg_ptr_, long long msg_len_, long long msg_prio_, 3126 void *abs_timeout_) { 3127 if (msg_ptr_) { 3128 PRE_READ(msg_ptr_, msg_len_); 3129 } 3130 if (abs_timeout_) { 3131 PRE_READ(abs_timeout_, struct_timespec_sz); 3132 } 3133} 3134POST_SYSCALL(__mq_timedsend50) 3135(long long res, long long mqdes_, void *msg_ptr_, long long msg_len_, 3136 long long msg_prio_, void *abs_timeout_) {} 3137PRE_SYSCALL(__mq_timedreceive50) 3138(long long mqdes_, void *msg_ptr_, long long msg_len_, void *msg_prio_, 3139 void *abs_timeout_) { 3140 if (msg_ptr_) { 3141 PRE_READ(msg_ptr_, msg_len_); 3142 } 3143 if (abs_timeout_) { 3144 PRE_READ(abs_timeout_, struct_timespec_sz); 3145 } 3146} 3147POST_SYSCALL(__mq_timedreceive50) 3148(long long res, long long mqdes_, void *msg_ptr_, long long msg_len_, 3149 void *msg_prio_, void *abs_timeout_) {} 3150PRE_SYSCALL(compat_60__lwp_park) 3151(void *ts_, long long unpark_, void *hint_, void *unparkhint_) { 3152 /* TODO */ 3153} 3154POST_SYSCALL(compat_60__lwp_park) 3155(long long res, void *ts_, long long unpark_, void *hint_, void *unparkhint_) { 3156 /* TODO */ 3157} 3158PRE_SYSCALL(__kevent50) 3159(long long fd_, void *changelist_, long long nchanges_, void *eventlist_, 3160 long long nevents_, void *timeout_) { 3161 if (changelist_) { 3162 PRE_READ(changelist_, nchanges_ * struct_kevent_sz); 3163 } 3164 if (timeout_) { 3165 PRE_READ(timeout_, struct_timespec_sz); 3166 } 3167} 3168POST_SYSCALL(__kevent50) 3169(long long res, long long fd_, void *changelist_, long long nchanges_, 3170 void *eventlist_, long long nevents_, void *timeout_) {} 3171PRE_SYSCALL(__pselect50) 3172(long long nd_, void *in_, void *ou_, void *ex_, void *ts_, void *mask_) { 3173 if (ts_) { 3174 PRE_READ(ts_, struct_timespec_sz); 3175 } 3176 if (mask_) { 3177 PRE_READ(mask_, sizeof(struct __sanitizer_sigset_t)); 3178 } 3179} 3180POST_SYSCALL(__pselect50) 3181(long long res, long long nd_, void *in_, void *ou_, void *ex_, void *ts_, 3182 void *mask_) {} 3183PRE_SYSCALL(__pollts50)(void *fds_, long long nfds_, void *ts_, void *mask_) { 3184 if (ts_) { 3185 PRE_READ(ts_, struct_timespec_sz); 3186 } 3187 if (mask_) { 3188 PRE_READ(mask_, sizeof(struct __sanitizer_sigset_t)); 3189 } 3190} 3191POST_SYSCALL(__pollts50) 3192(long long res, void *fds_, long long nfds_, void *ts_, void *mask_) {} 3193PRE_SYSCALL(__aio_suspend50)(void *list_, long long nent_, void *timeout_) { 3194 int i; 3195 const struct aiocb *const *list = (const struct aiocb *const *)list_; 3196 if (list) { 3197 for (i = 0; i < nent_; i++) { 3198 if (list[i]) { 3199 PRE_READ(list[i], sizeof(struct __sanitizer_aiocb)); 3200 } 3201 } 3202 } 3203 if (timeout_) { 3204 PRE_READ(timeout_, struct_timespec_sz); 3205 } 3206} 3207POST_SYSCALL(__aio_suspend50) 3208(long long res, void *list_, long long nent_, void *timeout_) {} 3209PRE_SYSCALL(__stat50)(void *path_, void *ub_) { 3210 const char *path = (const char *)path_; 3211 if (path) { 3212 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3213 } 3214} 3215POST_SYSCALL(__stat50)(long long res, void *path_, void *ub_) { 3216 const char *path = (const char *)path_; 3217 if (res == 0) { 3218 if (path) { 3219 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3220 } 3221 } 3222} 3223PRE_SYSCALL(__fstat50)(long long fd_, void *sb_) { /* Nothing to do */ } 3224POST_SYSCALL(__fstat50)(long long res, long long fd_, void *sb_) { 3225 /* Nothing to do */ 3226} 3227PRE_SYSCALL(__lstat50)(void *path_, void *ub_) { 3228 const char *path = (const char *)path_; 3229 if (path) { 3230 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3231 } 3232} 3233POST_SYSCALL(__lstat50)(long long res, void *path_, void *ub_) { 3234 const char *path = (const char *)path_; 3235 if (res == 0) { 3236 if (path) { 3237 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3238 } 3239 } 3240} 3241PRE_SYSCALL(____semctl50) 3242(long long semid_, long long semnum_, long long cmd_, void *arg_) { 3243 /* Nothing to do */ 3244} 3245POST_SYSCALL(____semctl50) 3246(long long res, long long semid_, long long semnum_, long long cmd_, 3247 void *arg_) { 3248 /* Nothing to do */ 3249} 3250PRE_SYSCALL(__shmctl50)(long long shmid_, long long cmd_, void *buf_) { 3251 /* Nothing to do */ 3252} 3253POST_SYSCALL(__shmctl50) 3254(long long res, long long shmid_, long long cmd_, void *buf_) { 3255 /* Nothing to do */ 3256} 3257PRE_SYSCALL(__msgctl50)(long long msqid_, long long cmd_, void *buf_) { 3258 /* Nothing to do */ 3259} 3260POST_SYSCALL(__msgctl50) 3261(long long res, long long msqid_, long long cmd_, void *buf_) { 3262 /* Nothing to do */ 3263} 3264PRE_SYSCALL(__getrusage50)(long long who_, void *rusage_) { 3265 /* Nothing to do */ 3266} 3267POST_SYSCALL(__getrusage50)(long long res, long long who_, void *rusage_) { 3268 /* Nothing to do */ 3269} 3270PRE_SYSCALL(__timer_settime50) 3271(long long timerid_, long long flags_, void *value_, void *ovalue_) { 3272 struct __sanitizer_itimerval *value = (struct __sanitizer_itimerval *)value_; 3273 if (value) { 3274 PRE_READ(&value->it_interval.tv_sec, sizeof(__sanitizer_time_t)); 3275 PRE_READ(&value->it_interval.tv_usec, sizeof(__sanitizer_suseconds_t)); 3276 PRE_READ(&value->it_value.tv_sec, sizeof(__sanitizer_time_t)); 3277 PRE_READ(&value->it_value.tv_usec, sizeof(__sanitizer_suseconds_t)); 3278 } 3279} 3280POST_SYSCALL(__timer_settime50) 3281(long long res, long long timerid_, long long flags_, void *value_, 3282 void *ovalue_) { 3283 struct __sanitizer_itimerval *value = (struct __sanitizer_itimerval *)value_; 3284 if (res == 0) { 3285 if (value) { 3286 POST_READ(&value->it_interval.tv_sec, sizeof(__sanitizer_time_t)); 3287 POST_READ(&value->it_interval.tv_usec, sizeof(__sanitizer_suseconds_t)); 3288 POST_READ(&value->it_value.tv_sec, sizeof(__sanitizer_time_t)); 3289 POST_READ(&value->it_value.tv_usec, sizeof(__sanitizer_suseconds_t)); 3290 } 3291 } 3292} 3293PRE_SYSCALL(__timer_gettime50)(long long timerid_, void *value_) { 3294 /* Nothing to do */ 3295} 3296POST_SYSCALL(__timer_gettime50) 3297(long long res, long long timerid_, void *value_) { 3298 /* Nothing to do */ 3299} 3300#if defined(NTP) || !defined(_KERNEL_OPT) 3301PRE_SYSCALL(__ntp_gettime50)(void *ntvp_) { /* Nothing to do */ } 3302POST_SYSCALL(__ntp_gettime50)(long long res, void *ntvp_) { 3303 /* Nothing to do */ 3304} 3305#else 3306/* syscall 448 has been skipped */ 3307#endif 3308PRE_SYSCALL(__wait450) 3309(long long pid_, void *status_, long long options_, void *rusage_) { 3310 /* Nothing to do */ 3311} 3312POST_SYSCALL(__wait450) 3313(long long res, long long pid_, void *status_, long long options_, 3314 void *rusage_) { 3315 /* Nothing to do */ 3316} 3317PRE_SYSCALL(__mknod50)(void *path_, long long mode_, long long dev_) { 3318 const char *path = (const char *)path_; 3319 if (path) { 3320 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3321 } 3322} 3323POST_SYSCALL(__mknod50) 3324(long long res, void *path_, long long mode_, long long dev_) { 3325 const char *path = (const char *)path_; 3326 if (res == 0) { 3327 if (path) { 3328 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3329 } 3330 } 3331} 3332PRE_SYSCALL(__fhstat50)(void *fhp_, long long fh_size_, void *sb_) { 3333 if (fhp_) { 3334 PRE_READ(fhp_, fh_size_); 3335 } 3336} 3337POST_SYSCALL(__fhstat50) 3338(long long res, void *fhp_, long long fh_size_, void *sb_) { 3339 if (res == 0) { 3340 if (fhp_) { 3341 POST_READ(fhp_, fh_size_); 3342 } 3343 } 3344} 3345/* syscall 452 has been skipped */ 3346PRE_SYSCALL(pipe2)(void *fildes_, long long flags_) { /* Nothing to do */ } 3347POST_SYSCALL(pipe2)(long long res, void *fildes_, long long flags_) { 3348 /* Nothing to do */ 3349} 3350PRE_SYSCALL(dup3)(long long from_, long long to_, long long flags_) { 3351 /* Nothing to do */ 3352} 3353POST_SYSCALL(dup3) 3354(long long res, long long from_, long long to_, long long flags_) { 3355 /* Nothing to do */ 3356} 3357PRE_SYSCALL(kqueue1)(long long flags_) { /* Nothing to do */ } 3358POST_SYSCALL(kqueue1)(long long res, long long flags_) { /* Nothing to do */ } 3359PRE_SYSCALL(paccept) 3360(long long s_, void *name_, void *anamelen_, void *mask_, long long flags_) { 3361 if (mask_) { 3362 PRE_READ(mask_, sizeof(__sanitizer_sigset_t)); 3363 } 3364} 3365POST_SYSCALL(paccept) 3366(long long res, long long s_, void *name_, void *anamelen_, void *mask_, 3367 long long flags_) { 3368 if (res >= 0) { 3369 if (mask_) { 3370 PRE_READ(mask_, sizeof(__sanitizer_sigset_t)); 3371 } 3372 } 3373} 3374PRE_SYSCALL(linkat) 3375(long long fd1_, void *name1_, long long fd2_, void *name2_, long long flags_) { 3376 const char *name1 = (const char *)name1_; 3377 const char *name2 = (const char *)name2_; 3378 if (name1) { 3379 PRE_READ(name1, __sanitizer::internal_strlen(name1) + 1); 3380 } 3381 if (name2) { 3382 PRE_READ(name2, __sanitizer::internal_strlen(name2) + 1); 3383 } 3384} 3385POST_SYSCALL(linkat) 3386(long long res, long long fd1_, void *name1_, long long fd2_, void *name2_, 3387 long long flags_) { 3388 const char *name1 = (const char *)name1_; 3389 const char *name2 = (const char *)name2_; 3390 if (res == 0) { 3391 if (name1) { 3392 POST_READ(name1, __sanitizer::internal_strlen(name1) + 1); 3393 } 3394 if (name2) { 3395 POST_READ(name2, __sanitizer::internal_strlen(name2) + 1); 3396 } 3397 } 3398} 3399PRE_SYSCALL(renameat) 3400(long long fromfd_, void *from_, long long tofd_, void *to_) { 3401 const char *from = (const char *)from_; 3402 const char *to = (const char *)to_; 3403 if (from) { 3404 PRE_READ(from, __sanitizer::internal_strlen(from) + 1); 3405 } 3406 if (to) { 3407 PRE_READ(to, __sanitizer::internal_strlen(to) + 1); 3408 } 3409} 3410POST_SYSCALL(renameat) 3411(long long res, long long fromfd_, void *from_, long long tofd_, void *to_) { 3412 const char *from = (const char *)from_; 3413 const char *to = (const char *)to_; 3414 if (res == 0) { 3415 if (from) { 3416 POST_READ(from, __sanitizer::internal_strlen(from) + 1); 3417 } 3418 if (to) { 3419 POST_READ(to, __sanitizer::internal_strlen(to) + 1); 3420 } 3421 } 3422} 3423PRE_SYSCALL(mkfifoat)(long long fd_, void *path_, long long mode_) { 3424 const char *path = (const char *)path_; 3425 if (path) { 3426 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3427 } 3428} 3429POST_SYSCALL(mkfifoat) 3430(long long res, long long fd_, void *path_, long long mode_) { 3431 const char *path = (const char *)path_; 3432 if (res == 0) { 3433 if (path) { 3434 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3435 } 3436 } 3437} 3438PRE_SYSCALL(mknodat) 3439(long long fd_, void *path_, long long mode_, long long PAD_, long long dev_) { 3440 const char *path = (const char *)path_; 3441 if (path) { 3442 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3443 } 3444} 3445POST_SYSCALL(mknodat) 3446(long long res, long long fd_, void *path_, long long mode_, long long PAD_, 3447 long long dev_) { 3448 const char *path = (const char *)path_; 3449 if (res == 0) { 3450 if (path) { 3451 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3452 } 3453 } 3454} 3455PRE_SYSCALL(mkdirat)(long long fd_, void *path_, long long mode_) { 3456 const char *path = (const char *)path_; 3457 if (path) { 3458 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3459 } 3460} 3461POST_SYSCALL(mkdirat) 3462(long long res, long long fd_, void *path_, long long mode_) { 3463 const char *path = (const char *)path_; 3464 if (res == 0) { 3465 if (path) { 3466 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3467 } 3468 } 3469} 3470PRE_SYSCALL(faccessat) 3471(long long fd_, void *path_, long long amode_, long long flag_) { 3472 const char *path = (const char *)path_; 3473 if (path) { 3474 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3475 } 3476} 3477POST_SYSCALL(faccessat) 3478(long long res, long long fd_, void *path_, long long amode_, long long flag_) { 3479 const char *path = (const char *)path_; 3480 if (res == 0) { 3481 if (path) { 3482 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3483 } 3484 } 3485} 3486PRE_SYSCALL(fchmodat) 3487(long long fd_, void *path_, long long mode_, long long flag_) { 3488 const char *path = (const char *)path_; 3489 if (path) { 3490 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3491 } 3492} 3493POST_SYSCALL(fchmodat) 3494(long long res, long long fd_, void *path_, long long mode_, long long flag_) { 3495 const char *path = (const char *)path_; 3496 if (res == 0) { 3497 if (path) { 3498 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3499 } 3500 } 3501} 3502PRE_SYSCALL(fchownat) 3503(long long fd_, void *path_, long long owner_, long long group_, 3504 long long flag_) { 3505 const char *path = (const char *)path_; 3506 if (path) { 3507 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3508 } 3509} 3510POST_SYSCALL(fchownat) 3511(long long res, long long fd_, void *path_, long long owner_, long long group_, 3512 long long flag_) { 3513 const char *path = (const char *)path_; 3514 if (res == 0) { 3515 if (path) { 3516 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3517 } 3518 } 3519} 3520PRE_SYSCALL(fexecve)(long long fd_, void *argp_, void *envp_) { /* TODO */ } 3521POST_SYSCALL(fexecve)(long long res, long long fd_, void *argp_, void *envp_) { 3522 /* TODO */ 3523} 3524PRE_SYSCALL(fstatat)(long long fd_, void *path_, void *buf_, long long flag_) { 3525 const char *path = (const char *)path_; 3526 if (path) { 3527 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3528 } 3529} 3530POST_SYSCALL(fstatat) 3531(long long res, long long fd_, void *path_, void *buf_, long long flag_) { 3532 const char *path = (const char *)path_; 3533 if (path) { 3534 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3535 } 3536} 3537PRE_SYSCALL(utimensat) 3538(long long fd_, void *path_, void *tptr_, long long flag_) { 3539 const char *path = (const char *)path_; 3540 if (path) { 3541 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3542 } 3543 if (tptr_) { 3544 PRE_READ(tptr_, struct_timespec_sz); 3545 } 3546} 3547POST_SYSCALL(utimensat) 3548(long long res, long long fd_, void *path_, void *tptr_, long long flag_) { 3549 const char *path = (const char *)path_; 3550 if (res > 0) { 3551 if (path) { 3552 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3553 } 3554 if (tptr_) { 3555 POST_READ(tptr_, struct_timespec_sz); 3556 } 3557 } 3558} 3559PRE_SYSCALL(openat) 3560(long long fd_, void *path_, long long oflags_, long long mode_) { 3561 const char *path = (const char *)path_; 3562 if (path) { 3563 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3564 } 3565} 3566POST_SYSCALL(openat) 3567(long long res, long long fd_, void *path_, long long oflags_, 3568 long long mode_) { 3569 const char *path = (const char *)path_; 3570 if (res > 0) { 3571 if (path) { 3572 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3573 } 3574 } 3575} 3576PRE_SYSCALL(readlinkat) 3577(long long fd_, void *path_, void *buf_, long long bufsize_) { 3578 const char *path = (const char *)path_; 3579 if (path) { 3580 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3581 } 3582} 3583POST_SYSCALL(readlinkat) 3584(long long res, long long fd_, void *path_, void *buf_, long long bufsize_) { 3585 const char *path = (const char *)path_; 3586 if (res > 0) { 3587 if (path) { 3588 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3589 } 3590 } 3591} 3592PRE_SYSCALL(symlinkat)(void *path1_, long long fd_, void *path2_) { 3593 const char *path1 = (const char *)path1_; 3594 const char *path2 = (const char *)path2_; 3595 if (path1) { 3596 PRE_READ(path1, __sanitizer::internal_strlen(path1) + 1); 3597 } 3598 if (path2) { 3599 PRE_READ(path2, __sanitizer::internal_strlen(path2) + 1); 3600 } 3601} 3602POST_SYSCALL(symlinkat) 3603(long long res, void *path1_, long long fd_, void *path2_) { 3604 const char *path1 = (const char *)path1_; 3605 const char *path2 = (const char *)path2_; 3606 if (res == 0) { 3607 if (path1) { 3608 POST_READ(path1, __sanitizer::internal_strlen(path1) + 1); 3609 } 3610 if (path2) { 3611 POST_READ(path2, __sanitizer::internal_strlen(path2) + 1); 3612 } 3613 } 3614} 3615PRE_SYSCALL(unlinkat)(long long fd_, void *path_, long long flag_) { 3616 const char *path = (const char *)path_; 3617 if (path) { 3618 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3619 } 3620} 3621POST_SYSCALL(unlinkat) 3622(long long res, long long fd_, void *path_, long long flag_) { 3623 const char *path = (const char *)path_; 3624 if (res == 0) { 3625 if (path) { 3626 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3627 } 3628 } 3629} 3630PRE_SYSCALL(futimens)(long long fd_, void *tptr_) { 3631 struct __sanitizer_timespec **tptr = (struct __sanitizer_timespec **)tptr_; 3632 if (tptr) { 3633 PRE_READ(tptr[0], struct_timespec_sz); 3634 PRE_READ(tptr[1], struct_timespec_sz); 3635 } 3636} 3637POST_SYSCALL(futimens)(long long res, long long fd_, void *tptr_) { 3638 struct __sanitizer_timespec **tptr = (struct __sanitizer_timespec **)tptr_; 3639 if (res == 0) { 3640 if (tptr) { 3641 POST_READ(tptr[0], struct_timespec_sz); 3642 POST_READ(tptr[1], struct_timespec_sz); 3643 } 3644 } 3645} 3646PRE_SYSCALL(__quotactl)(void *path_, void *args_) { 3647 const char *path = (const char *)path_; 3648 if (path) { 3649 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3650 } 3651} 3652POST_SYSCALL(__quotactl)(long long res, void *path_, void *args_) { 3653 const char *path = (const char *)path_; 3654 if (res == 0) { 3655 if (path) { 3656 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3657 } 3658 } 3659} 3660PRE_SYSCALL(posix_spawn) 3661(void *pid_, void *path_, void *file_actions_, void *attrp_, void *argv_, 3662 void *envp_) { 3663 const char *path = (const char *)path_; 3664 if (path) { 3665 PRE_READ(path, __sanitizer::internal_strlen(path) + 1); 3666 } 3667} 3668POST_SYSCALL(posix_spawn) 3669(long long res, void *pid_, void *path_, void *file_actions_, void *attrp_, 3670 void *argv_, void *envp_) { 3671 const char *path = (const char *)path_; 3672 if (pid_) { 3673 if (path) { 3674 POST_READ(path, __sanitizer::internal_strlen(path) + 1); 3675 } 3676 } 3677} 3678PRE_SYSCALL(recvmmsg) 3679(long long s_, void *mmsg_, long long vlen_, long long flags_, void *timeout_) { 3680 if (timeout_) { 3681 PRE_READ(timeout_, struct_timespec_sz); 3682 } 3683} 3684POST_SYSCALL(recvmmsg) 3685(long long res, long long s_, void *mmsg_, long long vlen_, long long flags_, 3686 void *timeout_) { 3687 if (res >= 0) { 3688 if (timeout_) { 3689 POST_READ(timeout_, struct_timespec_sz); 3690 } 3691 } 3692} 3693PRE_SYSCALL(sendmmsg) 3694(long long s_, void *mmsg_, long long vlen_, long long flags_) { 3695 struct __sanitizer_mmsghdr *mmsg = (struct __sanitizer_mmsghdr *)mmsg_; 3696 unsigned int vlen = (vlen_ > 1024 ? 1024 : vlen_); 3697 if (mmsg) { 3698 PRE_READ(mmsg, sizeof(struct __sanitizer_mmsghdr) * vlen); 3699 } 3700} 3701POST_SYSCALL(sendmmsg) 3702(long long res, long long s_, void *mmsg_, long long vlen_, long long flags_) { 3703 struct __sanitizer_mmsghdr *mmsg = (struct __sanitizer_mmsghdr *)mmsg_; 3704 unsigned int vlen = (vlen_ > 1024 ? 1024 : vlen_); 3705 if (res >= 0) { 3706 if (mmsg) { 3707 POST_READ(mmsg, sizeof(struct __sanitizer_mmsghdr) * vlen); 3708 } 3709 } 3710} 3711PRE_SYSCALL(clock_nanosleep) 3712(long long clock_id_, long long flags_, void *rqtp_, void *rmtp_) { 3713 if (rqtp_) { 3714 PRE_READ(rqtp_, struct_timespec_sz); 3715 } 3716} 3717POST_SYSCALL(clock_nanosleep) 3718(long long res, long long clock_id_, long long flags_, void *rqtp_, 3719 void *rmtp_) { 3720 if (rqtp_) { 3721 POST_READ(rqtp_, struct_timespec_sz); 3722 } 3723} 3724PRE_SYSCALL(___lwp_park60) 3725(long long clock_id_, long long flags_, void *ts_, long long unpark_, 3726 void *hint_, void *unparkhint_) { 3727 if (ts_) { 3728 PRE_READ(ts_, struct_timespec_sz); 3729 } 3730} 3731POST_SYSCALL(___lwp_park60) 3732(long long res, long long clock_id_, long long flags_, void *ts_, 3733 long long unpark_, void *hint_, void *unparkhint_) { 3734 if (res == 0) { 3735 if (ts_) { 3736 POST_READ(ts_, struct_timespec_sz); 3737 } 3738 } 3739} 3740PRE_SYSCALL(posix_fallocate) 3741(long long fd_, long long PAD_, long long pos_, long long len_) { 3742 /* Nothing to do */ 3743} 3744POST_SYSCALL(posix_fallocate) 3745(long long res, long long fd_, long long PAD_, long long pos_, long long len_) { 3746 /* Nothing to do */ 3747} 3748PRE_SYSCALL(fdiscard) 3749(long long fd_, long long PAD_, long long pos_, long long len_) { 3750 /* Nothing to do */ 3751} 3752POST_SYSCALL(fdiscard) 3753(long long res, long long fd_, long long PAD_, long long pos_, long long len_) { 3754 /* Nothing to do */ 3755} 3756PRE_SYSCALL(wait6) 3757(long long idtype_, long long id_, void *status_, long long options_, 3758 void *wru_, void *info_) { 3759 /* Nothing to do */ 3760} 3761POST_SYSCALL(wait6) 3762(long long res, long long idtype_, long long id_, void *status_, 3763 long long options_, void *wru_, void *info_) { 3764 /* Nothing to do */ 3765} 3766PRE_SYSCALL(clock_getcpuclockid2) 3767(long long idtype_, long long id_, void *clock_id_) { 3768 /* Nothing to do */ 3769} 3770POST_SYSCALL(clock_getcpuclockid2) 3771(long long res, long long idtype_, long long id_, void *clock_id_) { 3772 /* Nothing to do */ 3773} 3774#undef SYS_MAXSYSARGS 3775} // extern "C" 3776 3777#undef PRE_SYSCALL 3778#undef PRE_READ 3779#undef PRE_WRITE 3780#undef POST_SYSCALL 3781#undef POST_READ 3782#undef POST_WRITE 3783 3784#endif // SANITIZER_NETBSD 3785