14df0bfc0614379192c780c944415dc420d9cfe8epetarj 24df0bfc0614379192c780c944415dc420d9cfe8epetarj/*--------------------------------------------------------------------*/ 34df0bfc0614379192c780c944415dc420d9cfe8epetarj/*--- Platform-specific syscalls stuff. syswrap-mips64-linux.c ----*/ 44df0bfc0614379192c780c944415dc420d9cfe8epetarj/*--------------------------------------------------------------------*/ 54df0bfc0614379192c780c944415dc420d9cfe8epetarj 64df0bfc0614379192c780c944415dc420d9cfe8epetarj/* 74df0bfc0614379192c780c944415dc420d9cfe8epetarj This file is part of Valgrind, a dynamic binary instrumentation 84df0bfc0614379192c780c944415dc420d9cfe8epetarj framework. 94df0bfc0614379192c780c944415dc420d9cfe8epetarj 10b3a1e4bffbdbbf38304f216af405009868f43628sewardj Copyright (C) 2010-2015 RT-RK 114df0bfc0614379192c780c944415dc420d9cfe8epetarj mips-valgrind@rt-rk.com 124df0bfc0614379192c780c944415dc420d9cfe8epetarj 134df0bfc0614379192c780c944415dc420d9cfe8epetarj This program is free software; you can redistribute it and/or 144df0bfc0614379192c780c944415dc420d9cfe8epetarj modify it under the terms of the GNU General Public License as 154df0bfc0614379192c780c944415dc420d9cfe8epetarj published by the Free Software Foundation; either version 2 of the 164df0bfc0614379192c780c944415dc420d9cfe8epetarj License, or (at your option) any later version. 174df0bfc0614379192c780c944415dc420d9cfe8epetarj 184df0bfc0614379192c780c944415dc420d9cfe8epetarj This program is distributed in the hope that it will be useful, but 194df0bfc0614379192c780c944415dc420d9cfe8epetarj WITHOUT ANY WARRANTY; without even the implied warranty of 204df0bfc0614379192c780c944415dc420d9cfe8epetarj MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 214df0bfc0614379192c780c944415dc420d9cfe8epetarj General Public License for more details. 224df0bfc0614379192c780c944415dc420d9cfe8epetarj 234df0bfc0614379192c780c944415dc420d9cfe8epetarj You should have received a copy of the GNU General Public License 244df0bfc0614379192c780c944415dc420d9cfe8epetarj along with this program; if not, write to the Free Software 254df0bfc0614379192c780c944415dc420d9cfe8epetarj Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 264df0bfc0614379192c780c944415dc420d9cfe8epetarj 02111-1307, USA. 274df0bfc0614379192c780c944415dc420d9cfe8epetarj 284df0bfc0614379192c780c944415dc420d9cfe8epetarj The GNU General Public License is contained in the file COPYING. 294df0bfc0614379192c780c944415dc420d9cfe8epetarj*/ 304df0bfc0614379192c780c944415dc420d9cfe8epetarj 314df0bfc0614379192c780c944415dc420d9cfe8epetarj#if defined(VGP_mips64_linux) 324df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_basics.h" 334df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_vki.h" 344df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_vkiscnums.h" 354df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_threadstate.h" 364df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_aspacemgr.h" 374df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_debuglog.h" 384df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_libcbase.h" 394df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_libcassert.h" 404df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_libcprint.h" 414df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_libcproc.h" 424df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_libcsignal.h" 434df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_options.h" 444df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_scheduler.h" 454df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_sigframe.h" /* For VG_(sigframe_destroy)() */ 464df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_signals.h" 474df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_syscall.h" 484df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_syswrap.h" 494df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_tooliface.h" 504df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_transtab.h" /* VG_(discard_translations) */ 514df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "priv_types_n_macros.h" 524df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "priv_syswrap-generic.h" /* for decls of generic wrappers */ 534df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "priv_syswrap-linux.h" /* for decls of linux-ish wrappers */ 544df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "priv_syswrap-main.h" 554df0bfc0614379192c780c944415dc420d9cfe8epetarj 564df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_debuginfo.h" /* VG_(di_notify_*) */ 574df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_xarray.h" 584df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_clientstate.h" /* VG_(brk_base), VG_(brk_limit) */ 594df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_errormgr.h" 60c91f58449e6fc2a4ce0851639a342c4277612fbbflorian#include "pub_core_gdbserver.h" /* VG_(gdbserver) */ 614df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_libcfile.h" 624df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_machine.h" /* VG_(get_SP) */ 634df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_mallocfree.h" 644df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_stacktrace.h" /* For VG_(get_and_pp_StackTrace)() */ 654df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "pub_core_ume.h" 664df0bfc0614379192c780c944415dc420d9cfe8epetarj 674df0bfc0614379192c780c944415dc420d9cfe8epetarj#include "config.h" 684df0bfc0614379192c780c944415dc420d9cfe8epetarj 694df0bfc0614379192c780c944415dc420d9cfe8epetarj#include <errno.h> 704df0bfc0614379192c780c944415dc420d9cfe8epetarj 714df0bfc0614379192c780c944415dc420d9cfe8epetarj/* --------------------------------------------------------------------- 724df0bfc0614379192c780c944415dc420d9cfe8epetarj clone() handling 734df0bfc0614379192c780c944415dc420d9cfe8epetarj ------------------------------------------------------------------ */ 744df0bfc0614379192c780c944415dc420d9cfe8epetarj 754df0bfc0614379192c780c944415dc420d9cfe8epetarj/* Call f(arg1), but first switch stacks, using 'stack' as the new stack, and 764df0bfc0614379192c780c944415dc420d9cfe8epetarj use 'retaddr' as f's return-to address. Also, clear all the integer registers 774df0bfc0614379192c780c944415dc420d9cfe8epetarj before entering f. */ 784df0bfc0614379192c780c944415dc420d9cfe8epetarj__attribute__ ((noreturn)) 794df0bfc0614379192c780c944415dc420d9cfe8epetarjvoid ML_(call_on_new_stack_0_1) ( Addr stack, /* $4 - $a0 */ 804df0bfc0614379192c780c944415dc420d9cfe8epetarj Addr retaddr, /* $5 - $a1 */ 814df0bfc0614379192c780c944415dc420d9cfe8epetarj void (*f_desc) (Word), /* $6 - $a2 */ 824df0bfc0614379192c780c944415dc420d9cfe8epetarj Word arg1 ); /* $7 - $a3 */ 834df0bfc0614379192c780c944415dc420d9cfe8epetarjasm ( 844df0bfc0614379192c780c944415dc420d9cfe8epetarj".text\n" 854df0bfc0614379192c780c944415dc420d9cfe8epetarj".globl vgModuleLocal_call_on_new_stack_0_1\n" 864df0bfc0614379192c780c944415dc420d9cfe8epetarj"vgModuleLocal_call_on_new_stack_0_1:\n" 874df0bfc0614379192c780c944415dc420d9cfe8epetarj" move $29, $4\n" /* set stack */ 884df0bfc0614379192c780c944415dc420d9cfe8epetarj" move $4, $7\n" /* arg1 to $4 */ 894df0bfc0614379192c780c944415dc420d9cfe8epetarj" move $25, $6\n" 904df0bfc0614379192c780c944415dc420d9cfe8epetarj" move $31, $5\n" /* retaddr to $ra */ 914df0bfc0614379192c780c944415dc420d9cfe8epetarj" jr $25\n" /* jump to f */ 924df0bfc0614379192c780c944415dc420d9cfe8epetarj" break 0x7\n" /* should never get here */ 934df0bfc0614379192c780c944415dc420d9cfe8epetarj".previous\n" 944df0bfc0614379192c780c944415dc420d9cfe8epetarj); 954df0bfc0614379192c780c944415dc420d9cfe8epetarj 964df0bfc0614379192c780c944415dc420d9cfe8epetarj/* Perform a clone system call. clone is strange because it has fork()-like 974df0bfc0614379192c780c944415dc420d9cfe8epetarj return-twice semantics, so it needs special handling here. 984df0bfc0614379192c780c944415dc420d9cfe8epetarj 994df0bfc0614379192c780c944415dc420d9cfe8epetarj Upon entry, we have: 1004df0bfc0614379192c780c944415dc420d9cfe8epetarj 1014df0bfc0614379192c780c944415dc420d9cfe8epetarj word (fn)(void*) in a0 = 4 1024df0bfc0614379192c780c944415dc420d9cfe8epetarj void* child_stack in a1 = 5 1034df0bfc0614379192c780c944415dc420d9cfe8epetarj word flags in a2 = 6 1044df0bfc0614379192c780c944415dc420d9cfe8epetarj void* arg in a3 = 7 1054df0bfc0614379192c780c944415dc420d9cfe8epetarj pid_t* parent_tid in a4 = 8 1064df0bfc0614379192c780c944415dc420d9cfe8epetarj void* tls in a5 = 9 1074df0bfc0614379192c780c944415dc420d9cfe8epetarj pid_t* child_tid in a6 = 10 1084df0bfc0614379192c780c944415dc420d9cfe8epetarj 1094df0bfc0614379192c780c944415dc420d9cfe8epetarj System call requires: 1104df0bfc0614379192c780c944415dc420d9cfe8epetarj 1114df0bfc0614379192c780c944415dc420d9cfe8epetarj int $__NR_clone in v0 1124df0bfc0614379192c780c944415dc420d9cfe8epetarj int flags in a0 = 4 1134df0bfc0614379192c780c944415dc420d9cfe8epetarj void* child_stack in a1 = 5 1144df0bfc0614379192c780c944415dc420d9cfe8epetarj pid_t* parent_tid in a2 = 6 1154df0bfc0614379192c780c944415dc420d9cfe8epetarj void* tls_ptr in a3 = 7 1164df0bfc0614379192c780c944415dc420d9cfe8epetarj pid_t* child_tid in a4 = 8 */ 1174df0bfc0614379192c780c944415dc420d9cfe8epetarj 1184df0bfc0614379192c780c944415dc420d9cfe8epetarj#define __NR_CLONE __NR_clone 1194df0bfc0614379192c780c944415dc420d9cfe8epetarj#define __NR_EXIT __NR_exit 1204df0bfc0614379192c780c944415dc420d9cfe8epetarj 1214df0bfc0614379192c780c944415dc420d9cfe8epetarjULong do_syscall_clone_mips64_linux ( Word (*fn) (void *), /* a0 - 4 */ 1224df0bfc0614379192c780c944415dc420d9cfe8epetarj void* stack, /* a1 - 5 */ 1234df0bfc0614379192c780c944415dc420d9cfe8epetarj Int flags, /* a2 - 6 */ 1244df0bfc0614379192c780c944415dc420d9cfe8epetarj void* arg, /* a3 - 7 */ 1254df0bfc0614379192c780c944415dc420d9cfe8epetarj Int* parent_tid, /* a4 - 8 */ 1264df0bfc0614379192c780c944415dc420d9cfe8epetarj void* /* Int tls */, /* a5 - 9 */ 1274df0bfc0614379192c780c944415dc420d9cfe8epetarj Int* child_tid ); /* a6 - 10 */ 1284df0bfc0614379192c780c944415dc420d9cfe8epetarj 1294df0bfc0614379192c780c944415dc420d9cfe8epetarjasm( 1304df0bfc0614379192c780c944415dc420d9cfe8epetarj".text\n" 1314df0bfc0614379192c780c944415dc420d9cfe8epetarj".set noreorder\n" 1324df0bfc0614379192c780c944415dc420d9cfe8epetarj".set nomacro\n" 1334df0bfc0614379192c780c944415dc420d9cfe8epetarj".globl do_syscall_clone_mips64_linux\n" 1344df0bfc0614379192c780c944415dc420d9cfe8epetarj"do_syscall_clone_mips64_linux:\n" 1354df0bfc0614379192c780c944415dc420d9cfe8epetarj" daddiu $29, $29, -32\n" 1364df0bfc0614379192c780c944415dc420d9cfe8epetarj" sd $31, 0($29)\n" 1374df0bfc0614379192c780c944415dc420d9cfe8epetarj" sd $30, 8($29)\n" 1384df0bfc0614379192c780c944415dc420d9cfe8epetarj" sd $28, 16($29)\n" 1394df0bfc0614379192c780c944415dc420d9cfe8epetarj 1404df0bfc0614379192c780c944415dc420d9cfe8epetarj" daddiu $5, $5, -32\n" 1414df0bfc0614379192c780c944415dc420d9cfe8epetarj" sd $4, 0($5)\n" /* fn */ 1424df0bfc0614379192c780c944415dc420d9cfe8epetarj" sd $7, 8($5)\n" /* arg */ 1434df0bfc0614379192c780c944415dc420d9cfe8epetarj" sd $6, 16($5)\n" /* flags */ 1444df0bfc0614379192c780c944415dc420d9cfe8epetarj 1454df0bfc0614379192c780c944415dc420d9cfe8epetarj/* 1. arg for syscalls */ 1464df0bfc0614379192c780c944415dc420d9cfe8epetarj" move $4, $6\n" /* flags */ 1474df0bfc0614379192c780c944415dc420d9cfe8epetarj" move $6, $8\n" /* parent */ 1484df0bfc0614379192c780c944415dc420d9cfe8epetarj" move $7, $a5\n" /* tls */ 1494df0bfc0614379192c780c944415dc420d9cfe8epetarj" move $8, $a6\n" /* child */ 1504df0bfc0614379192c780c944415dc420d9cfe8epetarj 1514df0bfc0614379192c780c944415dc420d9cfe8epetarj/* 2. do a syscall to clone */ 1524df0bfc0614379192c780c944415dc420d9cfe8epetarj" li $2, 5055\n" /* syscall num for clone */ 1534df0bfc0614379192c780c944415dc420d9cfe8epetarj" syscall\n" 1544df0bfc0614379192c780c944415dc420d9cfe8epetarj 1554df0bfc0614379192c780c944415dc420d9cfe8epetarj/* 3. See if we are a child, call fn and after that exit */ 1564df0bfc0614379192c780c944415dc420d9cfe8epetarj" bnez $7, p_or_error\n" 1574df0bfc0614379192c780c944415dc420d9cfe8epetarj" nop\n" 1584df0bfc0614379192c780c944415dc420d9cfe8epetarj 1594df0bfc0614379192c780c944415dc420d9cfe8epetarj" bnez $2, p_or_error\n" 1604df0bfc0614379192c780c944415dc420d9cfe8epetarj" nop\n" 1614df0bfc0614379192c780c944415dc420d9cfe8epetarj 1624df0bfc0614379192c780c944415dc420d9cfe8epetarj" ld $25,0($29)\n" 1634df0bfc0614379192c780c944415dc420d9cfe8epetarj" jalr $25\n" 1644df0bfc0614379192c780c944415dc420d9cfe8epetarj" ld $4,8($29)\n" 1654df0bfc0614379192c780c944415dc420d9cfe8epetarj 1664df0bfc0614379192c780c944415dc420d9cfe8epetarj" move $4, $2\n\t" /* retval from fn is in $v0 */ 1674df0bfc0614379192c780c944415dc420d9cfe8epetarj" li $2, 5058\n\t" /* NR_exit */ 1684df0bfc0614379192c780c944415dc420d9cfe8epetarj" syscall\n\t" 1694df0bfc0614379192c780c944415dc420d9cfe8epetarj" nop\n\t" 1704df0bfc0614379192c780c944415dc420d9cfe8epetarj/* 4. If we are parent or error, just return to caller */ 1714df0bfc0614379192c780c944415dc420d9cfe8epetarj" p_or_error:\n" 1724df0bfc0614379192c780c944415dc420d9cfe8epetarj" ld $31, 0($29)\n" 1734df0bfc0614379192c780c944415dc420d9cfe8epetarj" ld $30, 8($29)\n" 1744df0bfc0614379192c780c944415dc420d9cfe8epetarj" ld $28, 16($29)\n" 1754df0bfc0614379192c780c944415dc420d9cfe8epetarj" jr $31\n" 1764df0bfc0614379192c780c944415dc420d9cfe8epetarj" daddi $29,$29, 32\n" 1774df0bfc0614379192c780c944415dc420d9cfe8epetarj".previous\n" 1784df0bfc0614379192c780c944415dc420d9cfe8epetarj); 1794df0bfc0614379192c780c944415dc420d9cfe8epetarj 1804df0bfc0614379192c780c944415dc420d9cfe8epetarj#undef __NR_CLONE 1814df0bfc0614379192c780c944415dc420d9cfe8epetarj#undef __NR_EXIT 1824df0bfc0614379192c780c944415dc420d9cfe8epetarj 1834df0bfc0614379192c780c944415dc420d9cfe8epetarj/* forward declarations */ 1844df0bfc0614379192c780c944415dc420d9cfe8epetarjstatic void setup_child ( ThreadArchState *, ThreadArchState *); 1854df0bfc0614379192c780c944415dc420d9cfe8epetarjstatic SysRes sys_set_tls ( ThreadId tid, Addr tlsptr); 1864df0bfc0614379192c780c944415dc420d9cfe8epetarj 1874df0bfc0614379192c780c944415dc420d9cfe8epetarj/* When a client clones, we need to keep track of the new thread. This means: 188ad4e979f408239dabbaae955d8ffcb84a51a5c85florian 1. allocate a ThreadId+ThreadState+stack for the thread 1894df0bfc0614379192c780c944415dc420d9cfe8epetarj 1904df0bfc0614379192c780c944415dc420d9cfe8epetarj 2. initialize the thread's new VCPU state 1914df0bfc0614379192c780c944415dc420d9cfe8epetarj 1924df0bfc0614379192c780c944415dc420d9cfe8epetarj 3. create the thread using the same args as the client requested, but using 1934df0bfc0614379192c780c944415dc420d9cfe8epetarj the scheduler entrypoint for IP, and a separate stack for SP. */ 1944df0bfc0614379192c780c944415dc420d9cfe8epetarjstatic SysRes do_clone ( ThreadId ptid, 1954df0bfc0614379192c780c944415dc420d9cfe8epetarj UInt flags, Addr sp, 1964df0bfc0614379192c780c944415dc420d9cfe8epetarj Int* parent_tidptr, 1974df0bfc0614379192c780c944415dc420d9cfe8epetarj Int* child_tidptr, 1984df0bfc0614379192c780c944415dc420d9cfe8epetarj Addr child_tls ) 1994df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 2004df0bfc0614379192c780c944415dc420d9cfe8epetarj const Bool debug = False; 2014df0bfc0614379192c780c944415dc420d9cfe8epetarj ThreadId ctid = VG_ (alloc_ThreadState) (); 2024df0bfc0614379192c780c944415dc420d9cfe8epetarj ThreadState * ptst = VG_ (get_ThreadState) (ptid); 2034df0bfc0614379192c780c944415dc420d9cfe8epetarj ThreadState * ctst = VG_ (get_ThreadState) (ctid); 2044df0bfc0614379192c780c944415dc420d9cfe8epetarj UInt ret = 0; 2054df0bfc0614379192c780c944415dc420d9cfe8epetarj UWord * stack; 2064df0bfc0614379192c780c944415dc420d9cfe8epetarj SysRes res; 2074df0bfc0614379192c780c944415dc420d9cfe8epetarj vki_sigset_t blockall, savedmask; 2084df0bfc0614379192c780c944415dc420d9cfe8epetarj 2094df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_(sigfillset)(&blockall); 2104df0bfc0614379192c780c944415dc420d9cfe8epetarj vg_assert(VG_(is_running_thread)(ptid)); 2114df0bfc0614379192c780c944415dc420d9cfe8epetarj vg_assert(VG_(is_valid_tid)(ctid)); 2124df0bfc0614379192c780c944415dc420d9cfe8epetarj stack = (UWord *)ML_(allocstack)(ctid); 2134df0bfc0614379192c780c944415dc420d9cfe8epetarj if (stack == NULL) { 2144df0bfc0614379192c780c944415dc420d9cfe8epetarj res = VG_(mk_SysRes_Error)(VKI_ENOMEM); 2154df0bfc0614379192c780c944415dc420d9cfe8epetarj goto out; 2164df0bfc0614379192c780c944415dc420d9cfe8epetarj } 2174df0bfc0614379192c780c944415dc420d9cfe8epetarj setup_child(&ctst->arch, &ptst->arch); 2184df0bfc0614379192c780c944415dc420d9cfe8epetarj 2194df0bfc0614379192c780c944415dc420d9cfe8epetarj /* on MIPS we need to set V0 and A3 to zero */ 2204df0bfc0614379192c780c944415dc420d9cfe8epetarj ctst->arch.vex.guest_r2 = 0; 2214df0bfc0614379192c780c944415dc420d9cfe8epetarj ctst->arch.vex.guest_r7 = 0; 2224df0bfc0614379192c780c944415dc420d9cfe8epetarj if (sp != 0) 2234df0bfc0614379192c780c944415dc420d9cfe8epetarj ctst->arch.vex.guest_r29 = sp; 2244df0bfc0614379192c780c944415dc420d9cfe8epetarj 2254df0bfc0614379192c780c944415dc420d9cfe8epetarj ctst->os_state.parent = ptid; 2264df0bfc0614379192c780c944415dc420d9cfe8epetarj ctst->sig_mask = ptst->sig_mask; 2274df0bfc0614379192c780c944415dc420d9cfe8epetarj ctst->tmp_sig_mask = ptst->sig_mask; 2284df0bfc0614379192c780c944415dc420d9cfe8epetarj 2294df0bfc0614379192c780c944415dc420d9cfe8epetarj ctst->os_state.threadgroup = ptst->os_state.threadgroup; 2301c750c93f0f5c25063413787814e82fbe33947f9petarj 2311c750c93f0f5c25063413787814e82fbe33947f9petarj ML_(guess_and_register_stack) (sp, ctst); 2324df0bfc0614379192c780c944415dc420d9cfe8epetarj 2334df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_TRACK(pre_thread_ll_create, ptid, ctid); 2344df0bfc0614379192c780c944415dc420d9cfe8epetarj if (flags & VKI_CLONE_SETTLS) { 2354df0bfc0614379192c780c944415dc420d9cfe8epetarj if (debug) 2364df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_(printf)("clone child has SETTLS: tls at %#lx\n", child_tls); 2374df0bfc0614379192c780c944415dc420d9cfe8epetarj res = sys_set_tls(ctid, child_tls); 2384df0bfc0614379192c780c944415dc420d9cfe8epetarj if (sr_isError(res)) 2394df0bfc0614379192c780c944415dc420d9cfe8epetarj goto out; 2404df0bfc0614379192c780c944415dc420d9cfe8epetarj ctst->arch.vex.guest_r27 = child_tls; 2414df0bfc0614379192c780c944415dc420d9cfe8epetarj } 2424df0bfc0614379192c780c944415dc420d9cfe8epetarj 2434df0bfc0614379192c780c944415dc420d9cfe8epetarj flags &= ~VKI_CLONE_SETTLS; 2444df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_ (sigprocmask) (VKI_SIG_SETMASK, &blockall, &savedmask); 2454df0bfc0614379192c780c944415dc420d9cfe8epetarj /* Create the new thread */ 2464df0bfc0614379192c780c944415dc420d9cfe8epetarj ret = do_syscall_clone_mips64_linux(ML_(start_thread_NORETURN), 2474df0bfc0614379192c780c944415dc420d9cfe8epetarj stack, flags, &VG_(threads)[ctid], 2484df0bfc0614379192c780c944415dc420d9cfe8epetarj parent_tidptr, NULL /*child_tls*/, 2494df0bfc0614379192c780c944415dc420d9cfe8epetarj child_tidptr); 2504df0bfc0614379192c780c944415dc420d9cfe8epetarj if (debug) 2514df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_(printf)("ret: 0x%x\n", ret); 2524df0bfc0614379192c780c944415dc420d9cfe8epetarj 2534df0bfc0614379192c780c944415dc420d9cfe8epetarj res = VG_(mk_SysRes_mips64_linux)( /* val */ ret, 0, /* errflag */ 0); 2544df0bfc0614379192c780c944415dc420d9cfe8epetarj 2554df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_(sigprocmask)(VKI_SIG_SETMASK, &savedmask, NULL); 2564df0bfc0614379192c780c944415dc420d9cfe8epetarj 2574df0bfc0614379192c780c944415dc420d9cfe8epetarj out: 2584df0bfc0614379192c780c944415dc420d9cfe8epetarj if (sr_isError (res)) { 2594df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_ (cleanup_thread) (&ctst->arch); 2604df0bfc0614379192c780c944415dc420d9cfe8epetarj ctst->status = VgTs_Empty; 2614df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_TRACK (pre_thread_ll_exit, ctid); 2624df0bfc0614379192c780c944415dc420d9cfe8epetarj } 2634df0bfc0614379192c780c944415dc420d9cfe8epetarj ptst->arch.vex.guest_r2 = 0; 2644df0bfc0614379192c780c944415dc420d9cfe8epetarj 2654df0bfc0614379192c780c944415dc420d9cfe8epetarj return res; 2664df0bfc0614379192c780c944415dc420d9cfe8epetarj} 2674df0bfc0614379192c780c944415dc420d9cfe8epetarj 2684df0bfc0614379192c780c944415dc420d9cfe8epetarj/* --------------------------------------------------------------------- 2694df0bfc0614379192c780c944415dc420d9cfe8epetarj More thread stuff 2704df0bfc0614379192c780c944415dc420d9cfe8epetarj ------------------------------------------------------------------ */ 2714df0bfc0614379192c780c944415dc420d9cfe8epetarjvoid VG_(cleanup_thread) ( ThreadArchState * arch ) { }; 2724df0bfc0614379192c780c944415dc420d9cfe8epetarj 2734df0bfc0614379192c780c944415dc420d9cfe8epetarjvoid setup_child ( /* OUT */ ThreadArchState * child, 2744df0bfc0614379192c780c944415dc420d9cfe8epetarj /* IN */ ThreadArchState * parent ) 2754df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 2764df0bfc0614379192c780c944415dc420d9cfe8epetarj /* We inherit our parent's guest state. */ 2774df0bfc0614379192c780c944415dc420d9cfe8epetarj child->vex = parent->vex; 2784df0bfc0614379192c780c944415dc420d9cfe8epetarj child->vex_shadow1 = parent->vex_shadow1; 2794df0bfc0614379192c780c944415dc420d9cfe8epetarj child->vex_shadow2 = parent->vex_shadow2; 2804df0bfc0614379192c780c944415dc420d9cfe8epetarj} 2814df0bfc0614379192c780c944415dc420d9cfe8epetarj 2824df0bfc0614379192c780c944415dc420d9cfe8epetarjSysRes sys_set_tls ( ThreadId tid, Addr tlsptr ) 2834df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 2844df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_(threads)[tid].arch.vex.guest_ULR = tlsptr; 2854df0bfc0614379192c780c944415dc420d9cfe8epetarj return VG_(mk_SysRes_Success)( 0 ); 2864df0bfc0614379192c780c944415dc420d9cfe8epetarj} 2874df0bfc0614379192c780c944415dc420d9cfe8epetarj 2884df0bfc0614379192c780c944415dc420d9cfe8epetarj/* --------------------------------------------------------------------- 2894df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE/POST wrappers for mips/Linux-specific syscalls 2904df0bfc0614379192c780c944415dc420d9cfe8epetarj ------------------------------------------------------------------ */ 2914df0bfc0614379192c780c944415dc420d9cfe8epetarj 2924df0bfc0614379192c780c944415dc420d9cfe8epetarj#define PRE(name) DEFN_PRE_TEMPLATE(mips_linux, name) 2934df0bfc0614379192c780c944415dc420d9cfe8epetarj#define POST(name) DEFN_POST_TEMPLATE(mips_linux, name) 2944df0bfc0614379192c780c944415dc420d9cfe8epetarj 2954df0bfc0614379192c780c944415dc420d9cfe8epetarj/* Add prototypes for the wrappers declared here, so that gcc doesn't harass us 2964df0bfc0614379192c780c944415dc420d9cfe8epetarj for not having prototypes. Really this is a kludge -- the right thing to do 2974df0bfc0614379192c780c944415dc420d9cfe8epetarj is to make these wrappers 'static' since they aren't visible outside this 2984df0bfc0614379192c780c944415dc420d9cfe8epetarj file, but that requires even more macro magic. */ 2994df0bfc0614379192c780c944415dc420d9cfe8epetarj 3004df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_set_thread_area); 3014df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_clone); 3024df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_tee); 3034df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_splice); 3044df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_vmsplice); 3054df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_ustat); 3064df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_sysfs); 3074df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_swapon); 3084df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_swapoff); 3094df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_setdomainname); 3104df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_sethostname); 3114df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_reboot); 3124df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_cacheflush); 3134df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_sched_rr_get_interval); 3144df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_unshare); 3154df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_arch_prctl); 3164df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_ptrace); 3174df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_mmap); 3184df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_rt_sigreturn); 3194df0bfc0614379192c780c944415dc420d9cfe8epetarjDECL_TEMPLATE (mips_linux, sys_pipe); 3204df0bfc0614379192c780c944415dc420d9cfe8epetarj 3214df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_tee) 3224df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 323b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRINT("sys_tee ( %ld, %ld, %lu, %#lx )", SARG1, SARG2, ARG3, ARG4); 3244df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_REG_READ4(long, "sys_tee", int, fdin, int, fdout, vki_size_t, len, 3254df0bfc0614379192c780c944415dc420d9cfe8epetarj int, flags); 3264df0bfc0614379192c780c944415dc420d9cfe8epetarj} 3274df0bfc0614379192c780c944415dc420d9cfe8epetarj 3284df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_splice) 3294df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 330b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRINT("sys_splice ( %ld, %#lx, %ld, %#lx, %lu, %#lx )", 331b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian SARG1, ARG2, SARG3, ARG4, ARG5, ARG6); 3324df0bfc0614379192c780c944415dc420d9cfe8epetarj 3334df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_REG_READ6(long, "sys_splice", int, fdin, vki_loff_t, sizein, int, 3344df0bfc0614379192c780c944415dc420d9cfe8epetarj fdout, vki_loff_t, sizeout, vki_size_t, len, int, flags); 3354df0bfc0614379192c780c944415dc420d9cfe8epetarj} 3364df0bfc0614379192c780c944415dc420d9cfe8epetarj 3374df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_vmsplice) 3384df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 339b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRINT("sys_vmsplice ( %ld, %#lx, %lu, %ld )", SARG1, ARG2, ARG3, SARG4); 3404df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_REG_READ4(long, "sys_vmsplice", int, fdin, struct vki_iovec *, v, 3414df0bfc0614379192c780c944415dc420d9cfe8epetarj vki_size_t, len, int, flags); 3424df0bfc0614379192c780c944415dc420d9cfe8epetarj} 3434df0bfc0614379192c780c944415dc420d9cfe8epetarj 3444df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_unshare) 3454df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 346b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRINT("sys_unshare ( %lu )", ARG1); 347b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRE_REG_READ1(long, "sys_unshare", unsigned long, flags); 3484df0bfc0614379192c780c944415dc420d9cfe8epetarj} 3494df0bfc0614379192c780c944415dc420d9cfe8epetarj 3504df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_sched_rr_get_interval) 3514df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 352b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRINT("sys_sched_rr_get_interval ( %ld, %#lx)", SARG1, ARG2); 353b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRE_REG_READ2(long, "sched_rr_get_interval", vki_pid_t, pid, 3544df0bfc0614379192c780c944415dc420d9cfe8epetarj struct timespec *, timer); 3554df0bfc0614379192c780c944415dc420d9cfe8epetarj *flags |= SfMayBlock; 3564df0bfc0614379192c780c944415dc420d9cfe8epetarj} 3574df0bfc0614379192c780c944415dc420d9cfe8epetarj 3584df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_ustat) 3594df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 360b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRINT("sys_ustat ( %#lx, %#lx)", ARG1, ARG2); 3614df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_REG_READ2(long, "ustat", int, flags, const void *, path); 3624df0bfc0614379192c780c944415dc420d9cfe8epetarj} 3634df0bfc0614379192c780c944415dc420d9cfe8epetarj 3644df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_swapon) 3654df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 366b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRINT("sys_swapon ( %#lx, %#lx )", ARG1, ARG2); 3674df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_REG_READ2(long, "swapon", const void *, path, int, flags); 3684df0bfc0614379192c780c944415dc420d9cfe8epetarj} 3694df0bfc0614379192c780c944415dc420d9cfe8epetarj 3704df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_swapoff) 3714df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 3724df0bfc0614379192c780c944415dc420d9cfe8epetarj PRINT("sys_swapoff ( %#lx )", ARG1); 3734df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_REG_READ1(long, "swapoff", const void *, path); 3744df0bfc0614379192c780c944415dc420d9cfe8epetarj} 3754df0bfc0614379192c780c944415dc420d9cfe8epetarj 3764df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_sysfs) 3774df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 378b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRINT("sys_sysfs ( %ld, %#lx, %#lx )", SARG1, ARG2, ARG3); 3794df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_REG_READ3(long, "sysfs", int, flags, int, desc, const void *, path); 3804df0bfc0614379192c780c944415dc420d9cfe8epetarj} 3814df0bfc0614379192c780c944415dc420d9cfe8epetarj 3824df0bfc0614379192c780c944415dc420d9cfe8epetarj/* Very much MIPS specific */ 3834df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_cacheflush) 3844df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 38517da3da27c5fe84adb195bf07f204c56dfbd514adejanj PRINT("cacheflush (%lx, %lx, %lx)", ARG1, ARG2, ARG3); 38617da3da27c5fe84adb195bf07f204c56dfbd514adejanj PRE_REG_READ3(long, "cacheflush", unsigned long, addr, 387b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian unsigned long, nbytes, unsigned int, cache); 388ddd61ff058f02059064e083a8accaefed23d5548florian VG_ (discard_translations) ((Addr)ARG1, (ULong) ARG2, 38917da3da27c5fe84adb195bf07f204c56dfbd514adejanj "PRE(sys_cacheflush)"); 3904df0bfc0614379192c780c944415dc420d9cfe8epetarj SET_STATUS_Success(0); 3914df0bfc0614379192c780c944415dc420d9cfe8epetarj} 3924df0bfc0614379192c780c944415dc420d9cfe8epetarj 3934df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_reboot) 3944df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 395b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRINT("sys_reboot ( %ld, %ld, %lu, %#lx )", SARG1, ARG2, ARG3, ARG4); 396b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian // An approximation. ARG4 is only read conditionally by the kernel 397b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRE_REG_READ4(int, "reboot", 398b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian int, magic1, int, magic2, unsigned int, cmd, 399b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian void *, arg); 400b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian 4014df0bfc0614379192c780c944415dc420d9cfe8epetarj *flags |= SfMayBlock; 4024df0bfc0614379192c780c944415dc420d9cfe8epetarj} 4034df0bfc0614379192c780c944415dc420d9cfe8epetarj 4044df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_setdomainname) 4054df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 406b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRINT ("sys_setdomainname ( %#lx, %ld )", ARG1, SARG2); 4074df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_REG_READ2 (long, "setdomainname", const void *, name, int, len); 4084df0bfc0614379192c780c944415dc420d9cfe8epetarj} 4094df0bfc0614379192c780c944415dc420d9cfe8epetarj 4104df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_sethostname) 4114df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 412b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRINT ("sys_sethostname ( %#lx, %ld )", ARG1, SARG2); 4134df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_REG_READ2 (long, "sethostname", const void *, name, int, len); 4144df0bfc0614379192c780c944415dc420d9cfe8epetarj} 4154df0bfc0614379192c780c944415dc420d9cfe8epetarj 4164df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_ptrace) 4174df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 418b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRINT("sys_ptrace ( %ld, %ld, %#lx, %#lx )", SARG1, SARG2, ARG3, ARG4); 419b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRE_REG_READ4(int, "ptrace", 420b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian long, request, long, pid, unsigned long, addr, 421b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian unsigned long, data); 4224df0bfc0614379192c780c944415dc420d9cfe8epetarj switch (ARG1) { 4234df0bfc0614379192c780c944415dc420d9cfe8epetarj case VKI_PTRACE_PEEKTEXT: 4244df0bfc0614379192c780c944415dc420d9cfe8epetarj case VKI_PTRACE_PEEKDATA: 4254df0bfc0614379192c780c944415dc420d9cfe8epetarj case VKI_PTRACE_PEEKUSR: 4264df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_MEM_WRITE("ptrace(peek)", ARG4, sizeof(long)); 4274df0bfc0614379192c780c944415dc420d9cfe8epetarj break; 4284df0bfc0614379192c780c944415dc420d9cfe8epetarj case VKI_PTRACE_GETEVENTMSG: 4294df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_MEM_WRITE("ptrace(geteventmsg)", ARG4, sizeof(unsigned long)); 4304df0bfc0614379192c780c944415dc420d9cfe8epetarj break; 4314df0bfc0614379192c780c944415dc420d9cfe8epetarj case VKI_PTRACE_GETSIGINFO: 4324df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_MEM_WRITE("ptrace(getsiginfo)", ARG4, sizeof(vki_siginfo_t)); 4334df0bfc0614379192c780c944415dc420d9cfe8epetarj break; 4344df0bfc0614379192c780c944415dc420d9cfe8epetarj case VKI_PTRACE_SETSIGINFO: 4354df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_MEM_READ("ptrace(setsiginfo)", ARG4, sizeof(vki_siginfo_t)); 4364df0bfc0614379192c780c944415dc420d9cfe8epetarj break; 4377160332c2127a2487446423ac3735a5baae3ade6petarj case VKI_PTRACE_GETREGSET: 4387160332c2127a2487446423ac3735a5baae3ade6petarj ML_(linux_PRE_getregset)(tid, ARG3, ARG4); 4397160332c2127a2487446423ac3735a5baae3ade6petarj break; 4404df0bfc0614379192c780c944415dc420d9cfe8epetarj default: 4414df0bfc0614379192c780c944415dc420d9cfe8epetarj break; 4424df0bfc0614379192c780c944415dc420d9cfe8epetarj } 4434df0bfc0614379192c780c944415dc420d9cfe8epetarj} 4444df0bfc0614379192c780c944415dc420d9cfe8epetarj 4454df0bfc0614379192c780c944415dc420d9cfe8epetarjPOST(sys_ptrace) 4464df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 4474df0bfc0614379192c780c944415dc420d9cfe8epetarj switch (ARG1) { 4484df0bfc0614379192c780c944415dc420d9cfe8epetarj case VKI_PTRACE_PEEKTEXT: 4494df0bfc0614379192c780c944415dc420d9cfe8epetarj case VKI_PTRACE_PEEKDATA: 4504df0bfc0614379192c780c944415dc420d9cfe8epetarj case VKI_PTRACE_PEEKUSR: 4514df0bfc0614379192c780c944415dc420d9cfe8epetarj POST_MEM_WRITE (ARG4, sizeof(long)); 4524df0bfc0614379192c780c944415dc420d9cfe8epetarj break; 4534df0bfc0614379192c780c944415dc420d9cfe8epetarj case VKI_PTRACE_GETEVENTMSG: 4544df0bfc0614379192c780c944415dc420d9cfe8epetarj POST_MEM_WRITE (ARG4, sizeof(unsigned long)); 4554df0bfc0614379192c780c944415dc420d9cfe8epetarj break; 4564df0bfc0614379192c780c944415dc420d9cfe8epetarj case VKI_PTRACE_GETSIGINFO: 4574df0bfc0614379192c780c944415dc420d9cfe8epetarj POST_MEM_WRITE (ARG4, sizeof(vki_siginfo_t)); 4584df0bfc0614379192c780c944415dc420d9cfe8epetarj break; 4597160332c2127a2487446423ac3735a5baae3ade6petarj case VKI_PTRACE_GETREGSET: 4607160332c2127a2487446423ac3735a5baae3ade6petarj ML_(linux_POST_getregset)(tid, ARG3, ARG4); 4617160332c2127a2487446423ac3735a5baae3ade6petarj break; 4624df0bfc0614379192c780c944415dc420d9cfe8epetarj default: 4634df0bfc0614379192c780c944415dc420d9cfe8epetarj break; 4644df0bfc0614379192c780c944415dc420d9cfe8epetarj } 4654df0bfc0614379192c780c944415dc420d9cfe8epetarj} 4664df0bfc0614379192c780c944415dc420d9cfe8epetarj 4674df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE (sys_mmap) 4684df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 4694df0bfc0614379192c780c944415dc420d9cfe8epetarj SysRes r; 470b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian PRINT("sys_mmap ( %#lx, %lu, %ld, %ld, %ld, %lu )", 471b26101c4d128f0bfed780434c4e4f8d67f8aeee4florian ARG1, ARG2, SARG3, SARG4, SARG5, ARG6); 4724df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_REG_READ6(long, "mmap", unsigned long, start, vki_size_t, length, 4734df0bfc0614379192c780c944415dc420d9cfe8epetarj int, prot, int, flags, int, fd, unsigned long, offset); 4744df0bfc0614379192c780c944415dc420d9cfe8epetarj r = ML_(generic_PRE_sys_mmap)(tid, ARG1, ARG2, ARG3, ARG4, ARG5, 4754df0bfc0614379192c780c944415dc420d9cfe8epetarj (Off64T) ARG6); 4764df0bfc0614379192c780c944415dc420d9cfe8epetarj SET_STATUS_from_SysRes(r); 4774df0bfc0614379192c780c944415dc420d9cfe8epetarj} 4784df0bfc0614379192c780c944415dc420d9cfe8epetarj 4794df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_clone) 4804df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 4814df0bfc0614379192c780c944415dc420d9cfe8epetarj Bool badarg = False; 4824df0bfc0614379192c780c944415dc420d9cfe8epetarj UInt cloneflags; 4834df0bfc0614379192c780c944415dc420d9cfe8epetarj PRINT("sys_clone ( %lx, %#lx, %#lx, %#lx, %#lx )", ARG1, ARG2, ARG3, 4844df0bfc0614379192c780c944415dc420d9cfe8epetarj ARG4, ARG5); 4854df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_REG_READ2(int, "clone", unsigned long, flags, void *, child_stack); 4864df0bfc0614379192c780c944415dc420d9cfe8epetarj if (ARG1 & VKI_CLONE_PARENT_SETTID) { 4874df0bfc0614379192c780c944415dc420d9cfe8epetarj if (VG_(tdict).track_pre_reg_read) { 4884df0bfc0614379192c780c944415dc420d9cfe8epetarj PRA3("clone", int *, parent_tidptr); 4894df0bfc0614379192c780c944415dc420d9cfe8epetarj } 4904df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_MEM_WRITE("clone(parent_tidptr)", ARG3, sizeof(Int)); 4914df0bfc0614379192c780c944415dc420d9cfe8epetarj if (!VG_(am_is_valid_for_client)(ARG3, sizeof(Int), VKI_PROT_WRITE)) { 4924df0bfc0614379192c780c944415dc420d9cfe8epetarj badarg = True; 4934df0bfc0614379192c780c944415dc420d9cfe8epetarj } 4944df0bfc0614379192c780c944415dc420d9cfe8epetarj } 4954df0bfc0614379192c780c944415dc420d9cfe8epetarj if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) { 4964df0bfc0614379192c780c944415dc420d9cfe8epetarj if (VG_(tdict).track_pre_reg_read) { 4974df0bfc0614379192c780c944415dc420d9cfe8epetarj PRA5("clone", int *, child_tidptr); 4984df0bfc0614379192c780c944415dc420d9cfe8epetarj } 4994df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_MEM_WRITE("clone(child_tidptr)", ARG5, sizeof (Int)); 5004df0bfc0614379192c780c944415dc420d9cfe8epetarj if (!VG_(am_is_valid_for_client)(ARG5, sizeof (Int), VKI_PROT_WRITE)) 5014df0bfc0614379192c780c944415dc420d9cfe8epetarj badarg = True; 5024df0bfc0614379192c780c944415dc420d9cfe8epetarj } 5034df0bfc0614379192c780c944415dc420d9cfe8epetarj if (badarg) { 5044df0bfc0614379192c780c944415dc420d9cfe8epetarj SET_STATUS_Failure(VKI_EFAULT); 5054df0bfc0614379192c780c944415dc420d9cfe8epetarj return; 5064df0bfc0614379192c780c944415dc420d9cfe8epetarj } 5074df0bfc0614379192c780c944415dc420d9cfe8epetarj cloneflags = ARG1; 5084df0bfc0614379192c780c944415dc420d9cfe8epetarj if (!ML_(client_signal_OK)(ARG1 & VKI_CSIGNAL)) { 5094df0bfc0614379192c780c944415dc420d9cfe8epetarj SET_STATUS_Failure(VKI_EINVAL); 5104df0bfc0614379192c780c944415dc420d9cfe8epetarj return; 5114df0bfc0614379192c780c944415dc420d9cfe8epetarj } 5124df0bfc0614379192c780c944415dc420d9cfe8epetarj /* Only look at the flags we really care about */ 5134df0bfc0614379192c780c944415dc420d9cfe8epetarj switch (cloneflags & (VKI_CLONE_VM | VKI_CLONE_FS 5144df0bfc0614379192c780c944415dc420d9cfe8epetarj |VKI_CLONE_FILES | VKI_CLONE_VFORK)) { 5154df0bfc0614379192c780c944415dc420d9cfe8epetarj case VKI_CLONE_VM | VKI_CLONE_FS | VKI_CLONE_FILES: 5164df0bfc0614379192c780c944415dc420d9cfe8epetarj /* thread creation */ 5174df0bfc0614379192c780c944415dc420d9cfe8epetarj SET_STATUS_from_SysRes(do_clone(tid, 5184df0bfc0614379192c780c944415dc420d9cfe8epetarj ARG1, /* flags */ 5194df0bfc0614379192c780c944415dc420d9cfe8epetarj (Addr)ARG2, /* child SP */ 5204df0bfc0614379192c780c944415dc420d9cfe8epetarj (Int *)ARG3, /* parent_tidptr */ 5214df0bfc0614379192c780c944415dc420d9cfe8epetarj (Int *)ARG5, /* child_tidptr */ 5224df0bfc0614379192c780c944415dc420d9cfe8epetarj (Addr)ARG4)); /* child_tls */ 5234df0bfc0614379192c780c944415dc420d9cfe8epetarj break; 5244df0bfc0614379192c780c944415dc420d9cfe8epetarj 5254df0bfc0614379192c780c944415dc420d9cfe8epetarj case VKI_CLONE_VFORK | VKI_CLONE_VM: /* vfork */ 5264df0bfc0614379192c780c944415dc420d9cfe8epetarj /* FALLTHROUGH - assume vfork == fork */ 5274df0bfc0614379192c780c944415dc420d9cfe8epetarj cloneflags &= ~(VKI_CLONE_VFORK | VKI_CLONE_VM); 5284df0bfc0614379192c780c944415dc420d9cfe8epetarj case 0: /* plain fork */ 5294df0bfc0614379192c780c944415dc420d9cfe8epetarj SET_STATUS_from_SysRes(ML_(do_fork_clone)(tid, 5304df0bfc0614379192c780c944415dc420d9cfe8epetarj cloneflags, /* flags */ 5314df0bfc0614379192c780c944415dc420d9cfe8epetarj (Int *)ARG3, /* parent_tidptr */ 5324df0bfc0614379192c780c944415dc420d9cfe8epetarj (Int *)ARG5)); /* child_tidptr */ 5334df0bfc0614379192c780c944415dc420d9cfe8epetarj break; 5344df0bfc0614379192c780c944415dc420d9cfe8epetarj 5354df0bfc0614379192c780c944415dc420d9cfe8epetarj default: 5364df0bfc0614379192c780c944415dc420d9cfe8epetarj /* should we just ENOSYS? */ 5374df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_(message)(Vg_UserMsg, "Unsupported clone() flags: 0x%lx\n", ARG1); 5384df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_(message)(Vg_UserMsg, "\n"); 5394df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_(message)(Vg_UserMsg, "The only supported clone() uses are:\n"); 5404df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_(message)(Vg_UserMsg, 5414df0bfc0614379192c780c944415dc420d9cfe8epetarj " - via a threads library (LinuxThreads or NPTL)\n"); 5424df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_(message)(Vg_UserMsg, 5434df0bfc0614379192c780c944415dc420d9cfe8epetarj " - via the implementation of fork or vfork\n"); 5444df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_(unimplemented)("Valgrind does not support general clone()."); 5454df0bfc0614379192c780c944415dc420d9cfe8epetarj } 5464df0bfc0614379192c780c944415dc420d9cfe8epetarj if (SUCCESS) { 5474df0bfc0614379192c780c944415dc420d9cfe8epetarj if (ARG1 & VKI_CLONE_PARENT_SETTID) 5484df0bfc0614379192c780c944415dc420d9cfe8epetarj POST_MEM_WRITE(ARG3, sizeof(Int)); 5494df0bfc0614379192c780c944415dc420d9cfe8epetarj if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) 5504df0bfc0614379192c780c944415dc420d9cfe8epetarj POST_MEM_WRITE(ARG5, sizeof(Int)); 5514df0bfc0614379192c780c944415dc420d9cfe8epetarj /* Thread creation was successful; let the child have the chance to run */ 5524df0bfc0614379192c780c944415dc420d9cfe8epetarj *flags |= SfYieldAfter; 5534df0bfc0614379192c780c944415dc420d9cfe8epetarj } 5544df0bfc0614379192c780c944415dc420d9cfe8epetarj} 5554df0bfc0614379192c780c944415dc420d9cfe8epetarj 5564df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_rt_sigreturn) 5574df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 5584df0bfc0614379192c780c944415dc420d9cfe8epetarj /* See comments on PRE(sys_rt_sigreturn) in syswrap-s390x-linux.c for 5594df0bfc0614379192c780c944415dc420d9cfe8epetarj an explanation of what follows. */ 5604df0bfc0614379192c780c944415dc420d9cfe8epetarj ThreadState* tst; 5614df0bfc0614379192c780c944415dc420d9cfe8epetarj PRINT("sys_rt_sigreturn ( )"); 5624df0bfc0614379192c780c944415dc420d9cfe8epetarj 5634df0bfc0614379192c780c944415dc420d9cfe8epetarj vg_assert(VG_(is_valid_tid)(tid)); 5644df0bfc0614379192c780c944415dc420d9cfe8epetarj vg_assert(tid >= 1 && tid < VG_N_THREADS); 5654df0bfc0614379192c780c944415dc420d9cfe8epetarj vg_assert(VG_(is_running_thread)(tid)); 5664df0bfc0614379192c780c944415dc420d9cfe8epetarj 5674df0bfc0614379192c780c944415dc420d9cfe8epetarj tst = VG_(get_ThreadState)(tid); 5684df0bfc0614379192c780c944415dc420d9cfe8epetarj 5694df0bfc0614379192c780c944415dc420d9cfe8epetarj /* This is only so that the IA is (might be) useful to report if 5704df0bfc0614379192c780c944415dc420d9cfe8epetarj something goes wrong in the sigreturn */ 5714df0bfc0614379192c780c944415dc420d9cfe8epetarj ML_(fixup_guest_state_to_restart_syscall)(&tst->arch); 5724df0bfc0614379192c780c944415dc420d9cfe8epetarj 5734df0bfc0614379192c780c944415dc420d9cfe8epetarj /* Restore register state from frame and remove it */ 5744df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_(sigframe_destroy)(tid, True); 5754df0bfc0614379192c780c944415dc420d9cfe8epetarj 5764df0bfc0614379192c780c944415dc420d9cfe8epetarj /* Tell the driver not to update the guest state with the "result", 5774df0bfc0614379192c780c944415dc420d9cfe8epetarj and set a bogus result to keep it happy. */ 5784df0bfc0614379192c780c944415dc420d9cfe8epetarj *flags |= SfNoWriteResult; 5794df0bfc0614379192c780c944415dc420d9cfe8epetarj SET_STATUS_Success(0); 5804df0bfc0614379192c780c944415dc420d9cfe8epetarj 5814df0bfc0614379192c780c944415dc420d9cfe8epetarj /* Check to see if any signals arose as a result of this. */ 5824df0bfc0614379192c780c944415dc420d9cfe8epetarj *flags |= SfPollAfter; 5834df0bfc0614379192c780c944415dc420d9cfe8epetarj} 5844df0bfc0614379192c780c944415dc420d9cfe8epetarj 5854df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_set_thread_area) 5864df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 5874df0bfc0614379192c780c944415dc420d9cfe8epetarj PRINT("set_thread_area (%lx)", ARG1); 5884df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_REG_READ1(long, "set_thread_area", unsigned long, addr); 5894df0bfc0614379192c780c944415dc420d9cfe8epetarj SET_STATUS_from_SysRes(sys_set_tls(tid, ARG1)); 5904df0bfc0614379192c780c944415dc420d9cfe8epetarj} 5914df0bfc0614379192c780c944415dc420d9cfe8epetarj 5924df0bfc0614379192c780c944415dc420d9cfe8epetarjPRE(sys_pipe) 5934df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 5944df0bfc0614379192c780c944415dc420d9cfe8epetarj PRINT("sys_pipe ( %#lx )", ARG1); 5954df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_REG_READ1(int, "pipe", int *, filedes); 5964df0bfc0614379192c780c944415dc420d9cfe8epetarj PRE_MEM_WRITE( "pipe(filedes)", ARG1, 2*sizeof(int) ); 5974df0bfc0614379192c780c944415dc420d9cfe8epetarj} 5984df0bfc0614379192c780c944415dc420d9cfe8epetarj 5994df0bfc0614379192c780c944415dc420d9cfe8epetarjPOST(sys_pipe) 6004df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 6014df0bfc0614379192c780c944415dc420d9cfe8epetarj Int p0, p1; 6024df0bfc0614379192c780c944415dc420d9cfe8epetarj vg_assert(SUCCESS); 6034df0bfc0614379192c780c944415dc420d9cfe8epetarj p0 = RES; 6044df0bfc0614379192c780c944415dc420d9cfe8epetarj p1 = sr_ResEx(status->sres); 6054df0bfc0614379192c780c944415dc420d9cfe8epetarj 6064df0bfc0614379192c780c944415dc420d9cfe8epetarj if (!ML_(fd_allowed)(p0, "pipe", tid, True) || 6074df0bfc0614379192c780c944415dc420d9cfe8epetarj !ML_(fd_allowed)(p1, "pipe", tid, True)) { 6084df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_(close)(p0); 6094df0bfc0614379192c780c944415dc420d9cfe8epetarj VG_(close)(p1); 6104df0bfc0614379192c780c944415dc420d9cfe8epetarj SET_STATUS_Failure( VKI_EMFILE ); 6114df0bfc0614379192c780c944415dc420d9cfe8epetarj } else { 6124df0bfc0614379192c780c944415dc420d9cfe8epetarj if (VG_(clo_track_fds)) { 6134df0bfc0614379192c780c944415dc420d9cfe8epetarj ML_(record_fd_open_nameless)(tid, p0); 6144df0bfc0614379192c780c944415dc420d9cfe8epetarj ML_(record_fd_open_nameless)(tid, p1); 6154df0bfc0614379192c780c944415dc420d9cfe8epetarj } 6164df0bfc0614379192c780c944415dc420d9cfe8epetarj } 6174df0bfc0614379192c780c944415dc420d9cfe8epetarj} 6184df0bfc0614379192c780c944415dc420d9cfe8epetarj 6194df0bfc0614379192c780c944415dc420d9cfe8epetarj#undef PRE 6204df0bfc0614379192c780c944415dc420d9cfe8epetarj#undef POST 6214df0bfc0614379192c780c944415dc420d9cfe8epetarj 6224df0bfc0614379192c780c944415dc420d9cfe8epetarj/* --------------------------------------------------------------------- 6234df0bfc0614379192c780c944415dc420d9cfe8epetarj The mips64/Linux syscall table 6244df0bfc0614379192c780c944415dc420d9cfe8epetarj ------------------------------------------------------------------ */ 6254df0bfc0614379192c780c944415dc420d9cfe8epetarj 6264df0bfc0614379192c780c944415dc420d9cfe8epetarj/* Add an mips64-linux specific wrapper to a syscall table. */ 6274df0bfc0614379192c780c944415dc420d9cfe8epetarj#define PLAX_(sysno, name) WRAPPER_ENTRY_X_(mips_linux, sysno, name) 6284df0bfc0614379192c780c944415dc420d9cfe8epetarj#define PLAXY(sysno, name) WRAPPER_ENTRY_XY(mips_linux, sysno, name) 6294df0bfc0614379192c780c944415dc420d9cfe8epetarj 6304df0bfc0614379192c780c944415dc420d9cfe8epetarjstatic SyscallTableEntry syscall_main_table[] = { 6314df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_read, sys_read), /* 5000 */ 6324df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_write, sys_write), 6334df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_open, sys_open), 6344df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_close, sys_close), 6354df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_stat, sys_newstat), 6364df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_fstat, sys_newfstat), 6374df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_lstat, sys_newlstat), 6384df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_poll, sys_poll), 6394df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_lseek, sys_lseek), 6404df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_ (__NR_mmap, sys_mmap), 6414df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_mprotect, sys_mprotect), 6424df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_munmap, sys_munmap), 6434df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_brk, sys_brk), 6444df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_rt_sigaction, sys_rt_sigaction), 6454df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_rt_sigprocmask, sys_rt_sigprocmask), 6464df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_ioctl, sys_ioctl), 6474df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_eventfd2, sys_eventfd2), 6484df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_signalfd4, sys_signalfd4), 6494df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_pread64, sys_pread64), 6504df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_pwrite64, sys_pwrite64), 6514df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_readv, sys_readv), 6524df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_writev, sys_writev), 6534df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_access, sys_access), 6544df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAXY (__NR_pipe, sys_pipe), 6554df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_pipe2, sys_pipe2), 6564df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR__newselect,sys_select), 6574df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_sched_yield, sys_sched_yield), 6584df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_mremap, sys_mremap), 6594df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_msync, sys_msync), 6604df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_mincore, sys_mincore), 6614df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_madvise, sys_madvise), 6626b087764e018db13d67e9d896f02dc34df294da4philippe LINX_ (__NR_shmget, sys_shmget), 6634ab0a7935c4b73730b4bd0eb634b00be2406d044petarj LINXY (__NR_shmat, wrap_sys_shmat), 6646b087764e018db13d67e9d896f02dc34df294da4philippe LINXY (__NR_shmctl, sys_shmctl), 6654df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_dup, sys_dup), 6664df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_dup2, sys_dup2), 6674ab0a7935c4b73730b4bd0eb634b00be2406d044petarj LINXY (__NR_dup3, sys_dup3), 6684df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_pause, sys_pause), 6694df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_nanosleep, sys_nanosleep), 6704df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_getitimer, sys_getitimer), 6714df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_setitimer, sys_setitimer), 6724df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_alarm, sys_alarm), 6734df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_getpid, sys_getpid), 6744df0bfc0614379192c780c944415dc420d9cfe8epetarj /* LINX_(__NR_fallocate,sys_fallocate), */ 6754df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_sendfile, sys_sendfile), 6766b087764e018db13d67e9d896f02dc34df294da4philippe LINXY (__NR_socket, sys_socket), 6776b087764e018db13d67e9d896f02dc34df294da4philippe LINX_ (__NR_connect, sys_connect), 6786b087764e018db13d67e9d896f02dc34df294da4philippe LINXY (__NR_accept, sys_accept), 6794ab0a7935c4b73730b4bd0eb634b00be2406d044petarj LINXY (__NR_accept4, sys_accept4), 6806b087764e018db13d67e9d896f02dc34df294da4philippe LINX_ (__NR_sendto, sys_sendto), 6816b087764e018db13d67e9d896f02dc34df294da4philippe LINXY (__NR_recvfrom, sys_recvfrom), 6826b087764e018db13d67e9d896f02dc34df294da4philippe LINX_ (__NR_sendmsg, sys_sendmsg), 6836b087764e018db13d67e9d896f02dc34df294da4philippe LINXY (__NR_recvmsg, sys_recvmsg), 6846b087764e018db13d67e9d896f02dc34df294da4philippe LINX_ (__NR_shutdown, sys_shutdown), 6856b087764e018db13d67e9d896f02dc34df294da4philippe LINX_ (__NR_bind, sys_bind), 6866b087764e018db13d67e9d896f02dc34df294da4philippe LINX_ (__NR_listen, sys_listen), 6876b087764e018db13d67e9d896f02dc34df294da4philippe LINXY (__NR_getsockname, sys_getsockname), 6886b087764e018db13d67e9d896f02dc34df294da4philippe LINXY (__NR_getpeername, sys_getpeername), 6896b087764e018db13d67e9d896f02dc34df294da4philippe LINXY (__NR_socketpair, sys_socketpair), 6906b087764e018db13d67e9d896f02dc34df294da4philippe LINX_ (__NR_setsockopt, sys_setsockopt), 6916b087764e018db13d67e9d896f02dc34df294da4philippe LINXY (__NR_getsockopt, sys_getsockopt), 6924df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_ (__NR_clone, sys_clone), 6934df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_fork, sys_fork), 6944df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_execve, sys_execve), 6954df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_exit, sys_exit), 6964df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_wait4, sys_wait4), 6974df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_kill, sys_kill), 6984df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_uname, sys_newuname), 6996b087764e018db13d67e9d896f02dc34df294da4philippe LINX_ (__NR_semget, sys_semget), 7006b087764e018db13d67e9d896f02dc34df294da4philippe LINX_ (__NR_semop, sys_semop), 7016b087764e018db13d67e9d896f02dc34df294da4philippe LINXY (__NR_semctl, sys_semctl), 7026b087764e018db13d67e9d896f02dc34df294da4philippe LINXY (__NR_shmdt, sys_shmdt), 7036b087764e018db13d67e9d896f02dc34df294da4philippe LINX_ (__NR_msgget, sys_msgget), 7046b087764e018db13d67e9d896f02dc34df294da4philippe LINX_ (__NR_msgsnd, sys_msgsnd), 7056b087764e018db13d67e9d896f02dc34df294da4philippe LINXY (__NR_msgrcv, sys_msgrcv), 7066b087764e018db13d67e9d896f02dc34df294da4philippe LINXY (__NR_msgctl, sys_msgctl), 7074df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_fcntl, sys_fcntl), 7084df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_flock, sys_flock), 7094df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_fsync, sys_fsync), 7104df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_fdatasync, sys_fdatasync), 7114df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_truncate, sys_truncate), 7124df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_ftruncate, sys_ftruncate), 7134df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_getdents, sys_getdents), 7144df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_getcwd, sys_getcwd), 7154df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_chdir, sys_chdir), 7164df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_fchdir, sys_fchdir), 7174df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_rename, sys_rename), 7184df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_mkdir, sys_mkdir), 7194df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_rmdir, sys_rmdir), 7204df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_creat, sys_creat), 7214df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_link, sys_link), 7224df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_unlink, sys_unlink), 7234df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_symlink, sys_symlink), 7244df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_readlink, sys_readlink), 7254df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_chmod, sys_chmod), 7264df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_fchmod, sys_fchmod), 7274df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_chown, sys_chown), 7284df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_fchown, sys_fchown), 7294df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_lchown, sys_lchown), 7304df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_umask, sys_umask), 7314df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_gettimeofday, sys_gettimeofday), 7324df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_getrlimit, sys_getrlimit), 7334df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_getrusage, sys_getrusage), 7344df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_sysinfo, sys_sysinfo), 7354df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_times, sys_times), 7364df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAXY (__NR_ptrace, sys_ptrace), 7374df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_getuid, sys_getuid), 7384df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_syslog, sys_syslog), 7394df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_getgid, sys_getgid), 7404df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_setuid, sys_setuid), 7414df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_setgid, sys_setgid), 7424df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_geteuid, sys_geteuid), 7434df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_getegid, sys_getegid), 7444df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_setpgid, sys_setpgid), 7454df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_getppid, sys_getppid), 7464df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_getpgrp, sys_getpgrp), 7474df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_setsid, sys_setsid), 7484df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_setreuid, sys_setreuid), 7494df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_setregid, sys_setregid), 7504df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_getgroups, sys_getgroups), 7514df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_setgroups, sys_setgroups), 7524df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_setresuid, sys_setresuid), 7534df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_getresuid, sys_getresuid), 7544df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_setresgid, sys_setresgid), 7554df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_getresgid, sys_getresgid), 7564df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_getpgid, sys_getpgid), 7574df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_setfsuid, sys_setfsuid), 7584df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_setfsgid, sys_setfsgid), 7594df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_getsid, sys_getsid), 7604df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_capget, sys_capget), 7614df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_capset, sys_capset), 7624df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_rt_sigpending, sys_rt_sigpending), 7634df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_rt_sigtimedwait, sys_rt_sigtimedwait), 7644df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo), 7654df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_rt_sigsuspend, sys_rt_sigsuspend), 7664df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_sigaltstack, sys_sigaltstack), 7674df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_utime, sys_utime), 7684df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_mknod, sys_mknod), 7694df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_personality, sys_personality), 7704df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_ (__NR_ustat, sys_ustat), 7714df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_statfs, sys_statfs), 7724df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_fstatfs, sys_fstatfs), 7734df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_ (__NR_sysfs, sys_sysfs), 7744df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_getpriority, sys_getpriority), 7754df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_setpriority, sys_setpriority), 7764df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_sched_setparam, sys_sched_setparam), 7774df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_sched_getparam, sys_sched_getparam), 7784df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_sched_setscheduler, sys_sched_setscheduler), 7794df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_sched_getscheduler, sys_sched_getscheduler), 7804df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_sched_get_priority_max, sys_sched_get_priority_max), 7814df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_sched_get_priority_min, sys_sched_get_priority_min), 7824df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_ (__NR_sched_rr_get_interval, sys_sched_rr_get_interval), 7834df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_mlock, sys_mlock), 7844df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_munlock, sys_munlock), 7854df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_mlockall, sys_mlockall), 7864df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_munlockall, sys_munlockall), 7874df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_vhangup, sys_vhangup), 7888a3377f03c4865cda1dd1e9a152861fdb77315fasewardj LINX_ (__NR_pivot_root,sys_pivot_root), 7894df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR__sysctl, sys_sysctl), 7904df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_prctl, sys_prctl), 7914df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_adjtimex, sys_adjtimex), 7924df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_setrlimit, sys_setrlimit), 7934df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_chroot, sys_chroot), 7944df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_sync, sys_sync), 7954df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_acct, sys_acct), 7964df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_settimeofday, sys_settimeofday), 7974df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_mount, sys_mount), 7984df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_umount2, sys_umount), 7994df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_ (__NR_swapon, sys_swapon), 8004df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_ (__NR_swapoff, sys_swapoff), 8014df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_ (__NR_reboot, sys_reboot), 8024df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_ (__NR_sethostname, sys_sethostname), 8034df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_ (__NR_setdomainname, sys_setdomainname), 8044df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_create_module, sys_ni_syscall), 8054df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_init_module, sys_init_module), 8064df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_delete_module, sys_delete_module), 8074df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_get_kernel_syms, sys_ni_syscall), 8084df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_query_module, sys_ni_syscall), 8094df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_quotactl, sys_quotactl), 8104df0bfc0614379192c780c944415dc420d9cfe8epetarj /* GENX_(__NR_nfsservctl,sys_nfsservctl), */ 8114df0bfc0614379192c780c944415dc420d9cfe8epetarj GENXY (__NR_getpmsg, sys_getpmsg), 8124df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_putpmsg, sys_putpmsg), 8134df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_afs_syscall, sys_ni_syscall), 8144df0bfc0614379192c780c944415dc420d9cfe8epetarj /* GENX_(__NR_reserved177,sys_reserved177), */ 8154df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_gettid, sys_gettid), 8164df0bfc0614379192c780c944415dc420d9cfe8epetarj /* GENX_(__NR_readahead,sys_readahead), */ 8174df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_setxattr, sys_setxattr), 8184df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_lsetxattr, sys_lsetxattr), 8194df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_fsetxattr, sys_fsetxattr), 8204df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_getxattr, sys_getxattr), 8214df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_lgetxattr, sys_lgetxattr), 8224df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_fgetxattr, sys_fgetxattr), 8234df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_listxattr, sys_listxattr), 8244df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_llistxattr, sys_llistxattr), 8254df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_flistxattr, sys_flistxattr), 8264df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_removexattr, sys_removexattr), 8274df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_lremovexattr, sys_lremovexattr), 8284df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_fremovexattr, sys_fremovexattr), 8294df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_tkill, sys_tkill), 8304df0bfc0614379192c780c944415dc420d9cfe8epetarj /* GENX_(__NR_reserved193,sys_reserved193), */ 8314df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_futex, sys_futex), 8324df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_sched_setaffinity, sys_sched_setaffinity), 8334df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_sched_getaffinity, sys_sched_getaffinity), 8344df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_ (__NR_cacheflush, sys_cacheflush), 8354df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_io_setup, sys_io_setup), 8364df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_io_destroy, sys_io_destroy), 8374df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_io_getevents, sys_io_getevents), 8384df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_io_submit, sys_io_submit), 8394df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_io_cancel, sys_io_cancel), 8404df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_exit_group, sys_exit_group), 8414df0bfc0614379192c780c944415dc420d9cfe8epetarj /* LINXY (__NR_lookup_dcookie, sys_lookup_dcookie), */ 8424df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_epoll_create, sys_epoll_create), 8434ab0a7935c4b73730b4bd0eb634b00be2406d044petarj LINXY (__NR_epoll_create1, sys_epoll_create1), 8444df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_epoll_ctl, sys_epoll_ctl), 8454df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_epoll_wait, sys_epoll_wait), 8464df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_(__NR_rt_sigreturn,sys_rt_sigreturn), 8474df0bfc0614379192c780c944415dc420d9cfe8epetarj /* LINXY(__NR_fcntl64,sys_fcntl64), */ 8484df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_set_tid_address, sys_set_tid_address), 8496b087764e018db13d67e9d896f02dc34df294da4philippe LINX_ (__NR_semtimedop, sys_semtimedop), 8504df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_fadvise64, sys_fadvise64), 8514df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_timer_create, sys_timer_create), 8524df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_timer_settime, sys_timer_settime), 8534df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_timer_gettime, sys_timer_gettime), 8544df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_timer_getoverrun, sys_timer_getoverrun), 8554df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_timer_delete, sys_timer_delete), 8564df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_clock_settime, sys_clock_settime), 8574df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_clock_gettime, sys_clock_gettime), 8584df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_clock_getres, sys_clock_getres), 8594df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_clock_nanosleep, sys_clock_nanosleep), 8604df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_tgkill, sys_tgkill), 8614df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_utimes, sys_utimes), 8624df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_mbind, sys_mbind), 8634df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_get_mempolicy, sys_get_mempolicy), 8644df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_set_mempolicy, sys_set_mempolicy), 8654df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_mq_open, sys_mq_open), 8664df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_mq_unlink, sys_mq_unlink), 8674df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_mq_timedsend, sys_mq_timedsend), 8684df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_mq_timedreceive, sys_mq_timedreceive), 8694df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_mq_notify, sys_mq_notify), 8704df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_mq_getsetattr, sys_mq_getsetattr), 8714df0bfc0614379192c780c944415dc420d9cfe8epetarj GENX_ (__NR_vserver, sys_ni_syscall), 8724df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_waitid, sys_waitid), 8734df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_add_key, sys_add_key), 8744df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_request_key, sys_request_key), 8754df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_keyctl, sys_keyctl), 8764df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_ (__NR_set_thread_area, sys_set_thread_area), 8774df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_inotify_init, sys_inotify_init), 8784df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_inotify_add_watch, sys_inotify_add_watch), 8794df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_inotify_rm_watch, sys_inotify_rm_watch), 8804df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_openat, sys_openat), 8814df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_mkdirat, sys_mkdirat), 8824df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_mknodat, sys_mknodat), 8834df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_fchownat, sys_fchownat), 8844df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_futimesat, sys_futimesat), 8854df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_unlinkat, sys_unlinkat), 8864df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_renameat, sys_renameat), 8874df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_linkat, sys_linkat), 8884df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_symlinkat, sys_symlinkat), 8894df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_readlinkat, sys_readlinkat), 8904df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_fchmodat, sys_fchmodat), 8914df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_faccessat, sys_faccessat), 8924df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_pselect6, sys_pselect6), 8934df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_ppoll, sys_ppoll), 8944df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_ (__NR_unshare, sys_unshare), 8954df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_ (__NR_splice, sys_splice), 8964df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_sync_file_range, sys_sync_file_range), 8974df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_ (__NR_tee, sys_tee), 8984df0bfc0614379192c780c944415dc420d9cfe8epetarj PLAX_ (__NR_vmsplice, sys_vmsplice), 8994df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_set_robust_list, sys_set_robust_list), 9004df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_get_robust_list, sys_get_robust_list), 9014df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_epoll_pwait, sys_epoll_pwait), 9024df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_ioprio_set, sys_ioprio_set), 9034df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_ioprio_get, sys_ioprio_get), 9044df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_utimensat, sys_utimensat), 9054df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_signalfd, sys_signalfd), 9064df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_eventfd, sys_eventfd), 9074df0bfc0614379192c780c944415dc420d9cfe8epetarj LINX_ (__NR_fallocate, sys_fallocate), 9084df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_timerfd_create, sys_timerfd_create), 9094df0bfc0614379192c780c944415dc420d9cfe8epetarj LINXY (__NR_timerfd_gettime, sys_timerfd_gettime), 9104ab0a7935c4b73730b4bd0eb634b00be2406d044petarj LINXY (__NR_timerfd_settime, sys_timerfd_settime), 9113b3a0cb7e86a6c0fb1eeef3e60112d997f4d3a2fpetarj LINXY (__NR_newfstatat, sys_newfstatat), 9123b3a0cb7e86a6c0fb1eeef3e60112d997f4d3a2fpetarj LINXY (__NR_prlimit64, sys_prlimit64), 913ddc4a18e6aeaf9124b9d86cd515e1093ff00eeedtom LINXY (__NR_clock_adjtime, sys_clock_adjtime), 9143b3a0cb7e86a6c0fb1eeef3e60112d997f4d3a2fpetarj LINXY (__NR_process_vm_readv, sys_process_vm_readv), 915e6366711ec586437958764b451145749c7bcded1tom LINX_ (__NR_process_vm_writev, sys_process_vm_writev), 9169d7592e571487e08e2166212890e65b87e2905a4tom LINXY(__NR_getrandom, sys_getrandom), 9179e2645c0b8d76ece8eed2d08d1b7a8021da41252tom LINXY(__NR_memfd_create, sys_memfd_create), 9189e2645c0b8d76ece8eed2d08d1b7a8021da41252tom LINX_(__NR_syncfs, sys_syncfs) 9194df0bfc0614379192c780c944415dc420d9cfe8epetarj}; 9204df0bfc0614379192c780c944415dc420d9cfe8epetarj 9214df0bfc0614379192c780c944415dc420d9cfe8epetarjSyscallTableEntry * ML_(get_linux_syscall_entry) ( UInt sysno ) 9224df0bfc0614379192c780c944415dc420d9cfe8epetarj{ 9234df0bfc0614379192c780c944415dc420d9cfe8epetarj const UInt syscall_main_table_size 9244df0bfc0614379192c780c944415dc420d9cfe8epetarj = sizeof(syscall_main_table) / sizeof(syscall_main_table[0]); 9254df0bfc0614379192c780c944415dc420d9cfe8epetarj 9264df0bfc0614379192c780c944415dc420d9cfe8epetarj if (sysno < syscall_main_table_size) { 9274df0bfc0614379192c780c944415dc420d9cfe8epetarj SyscallTableEntry * sys = &syscall_main_table[sysno]; 9284df0bfc0614379192c780c944415dc420d9cfe8epetarj if (sys->before == NULL) 9294df0bfc0614379192c780c944415dc420d9cfe8epetarj return NULL; /* no entry */ 9304df0bfc0614379192c780c944415dc420d9cfe8epetarj else 9314df0bfc0614379192c780c944415dc420d9cfe8epetarj return sys; 9324df0bfc0614379192c780c944415dc420d9cfe8epetarj } 9334df0bfc0614379192c780c944415dc420d9cfe8epetarj /* Can't find a wrapper */ 9344df0bfc0614379192c780c944415dc420d9cfe8epetarj return NULL; 9354df0bfc0614379192c780c944415dc420d9cfe8epetarj} 9364df0bfc0614379192c780c944415dc420d9cfe8epetarj 9374df0bfc0614379192c780c944415dc420d9cfe8epetarj#endif /* defined(VGP_mips64_linux) */ 9384df0bfc0614379192c780c944415dc420d9cfe8epetarj 9394df0bfc0614379192c780c944415dc420d9cfe8epetarj/*--------------------------------------------------------------------*/ 9404df0bfc0614379192c780c944415dc420d9cfe8epetarj/*--- end syswrap-mips64-linux.c ---*/ 9414df0bfc0614379192c780c944415dc420d9cfe8epetarj/*--------------------------------------------------------------------*/ 942