syswrap-linux-variants.c revision 4cfea4f9480393ed6799db463b2e0fb8865a1a2f
1ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
2ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/*--------------------------------------------------------------------*/
3ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/*--- Handlers for syscalls on minor variants of Linux kernels.    ---*/
4ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/*---                                     syswrap-linux-variants.c ---*/
5ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/*--------------------------------------------------------------------*/
6ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
7ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/*
8ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   This file is part of Valgrind, a dynamic binary instrumentation
9ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   framework.
10ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
11e4b0bf07b0ee0a18eacc5aba91686ab5fc1d327bsewardj   Copyright (C) 2000-2006 Julian Seward
12ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj      jseward@acm.org
13ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
14ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   This program is free software; you can redistribute it and/or
15ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   modify it under the terms of the GNU General Public License as
16ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   published by the Free Software Foundation; either version 2 of the
17ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   License, or (at your option) any later version.
18ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
19ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   This program is distributed in the hope that it will be useful, but
20ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   WITHOUT ANY WARRANTY; without even the implied warranty of
21ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
22ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   General Public License for more details.
23ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
24ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   You should have received a copy of the GNU General Public License
25ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   along with this program; if not, write to the Free Software
26ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
27ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   02111-1307, USA.
28ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
29ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   The GNU General Public License is contained in the file COPYING.
30ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj*/
31ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
32ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/* The files syswrap-generic.c, syswrap-linux.c, syswrap-x86-linux.c,
33ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   syswrap-amd64-linux.c and syswrap-ppc32-linux.c, and associated
34ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   vki*.h header files, constitute Valgrind's model of how a vanilla
35ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   Linux kernel behaves with respect to syscalls.
36ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
37ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   On a few occasions, it is useful to run with a kernel that has some
38ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   (minor) extensions to the vanilla model, either due to running on a
39ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   hacked kernel, or using a vanilla kernel which has incorporated a
40ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   custom kernel module.  Rather than clutter the standard model, all
41ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   such variant handlers are placed in here.
42ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
43ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   Unlike the C files for the standard model, this file should also
44ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   contain all constants/types needed for said wrappers.  The vki*.h
45ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   headers should not be polluted with non-vanilla info. */
46ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
47ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
48ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_basics.h"
494cfea4f9480393ed6799db463b2e0fb8865a1a2fsewardj#include "pub_core_vki.h"
50ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_threadstate.h"
51ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_aspacemgr.h"
52ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_debuginfo.h"    // VG_(di_notify_*)
53ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_transtab.h"     // VG_(discard_translations)
54ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_debuglog.h"
55ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_libcbase.h"
56ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_libcassert.h"
57ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_libcfile.h"
58ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_libcprint.h"
59ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_libcproc.h"
60ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_mallocfree.h"
61ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_tooliface.h"
62ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_options.h"
63ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_scheduler.h"
64ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_signals.h"
65ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_syscall.h"
66ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
67ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "priv_types_n_macros.h"
68ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "priv_syswrap-linux-variants.h"
69ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
70ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
71ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/* ---------------------------------------------------------------
72ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   BProc wrappers
73ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   ------------------------------------------------------------ */
74ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
75ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/* Return 0 means hand to kernel, non-0 means fail w/ that value. */
76ce5a566e128da79452a69db9cfe2ecb81395fdccsewardjInt ML_(linux_variant_PRE_sys_bproc)( UWord arg1, UWord arg2,
77ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj                                      UWord arg3, UWord arg4,
78ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj                                      UWord arg5, UWord arg6 )
79ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj{
80ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   return 0;
81ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj}
82ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
83ce5a566e128da79452a69db9cfe2ecb81395fdccsewardjvoid ML_(linux_variant_POST_sys_bproc)( UWord arg1, UWord arg2,
84ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj                                        UWord arg3, UWord arg4,
85ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj                                        UWord arg5, UWord arg6 )
86ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj{
87ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj}
88ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
89ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
90ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/*--------------------------------------------------------------------*/
91ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/*--- end                                 syswrap-linux-variants.c ---*/
92ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/*--------------------------------------------------------------------*/
93