]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Move linux-only syscall wrappers into m_syscalls.
authorNicholas Nethercote <njn@valgrind.org>
Tue, 17 May 2005 04:20:31 +0000 (04:20 +0000)
committerNicholas Nethercote <njn@valgrind.org>
Tue, 17 May 2005 04:20:31 +0000 (04:20 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3755

coregrind/linux/core_os.h
coregrind/m_syscalls/Makefile.am
coregrind/m_syscalls/priv_syscalls-linux.h [new file with mode: 0644]
coregrind/m_syscalls/priv_syscalls.h

index dfc8af4b4b363f134b50af72355e1853921f9d17..e1ead69e17d50c230c0f54e5c314ac197f758bc4 100644 (file)
 #ifndef __LINUX_CORE_OS_H
 #define __LINUX_CORE_OS_H
 
-// Macros for adding Linux-specific, arch-independent wrappers to a syscall
-// table.
-#define LINX_(const, name)    SYS_WRAPPER_ENTRY_X_(vgOS_linux, const, name) 
-#define LINXY(const, name)    SYS_WRAPPER_ENTRY_XY(vgOS_linux, const, name)
-
-// The following syscall wrappers are Linux-specific, but arch-independent.
-#define VGO_LINUX_SYSCALL_WRAPPER(x) \
-   extern UInt VGO_(linux_##x##_flags); \
-   extern void VGO_(linux_##x##_before)(ThreadId tid, ThreadState *tst); \
-   extern void VGO_(linux_##x##_after) (ThreadId tid, ThreadState *tst)
-
-VGO_LINUX_SYSCALL_WRAPPER(sys_exit_group);
-
-VGO_LINUX_SYSCALL_WRAPPER(sys_mount);
-VGO_LINUX_SYSCALL_WRAPPER(sys_oldumount);
-VGO_LINUX_SYSCALL_WRAPPER(sys_umount);
-
-VGO_LINUX_SYSCALL_WRAPPER(sys_llseek);
-VGO_LINUX_SYSCALL_WRAPPER(sys_adjtimex);
-
-VGO_LINUX_SYSCALL_WRAPPER(sys_setfsuid16);
-VGO_LINUX_SYSCALL_WRAPPER(sys_setfsgid16);
-VGO_LINUX_SYSCALL_WRAPPER(sys_setresuid16);  // man page says "non-standard";
-VGO_LINUX_SYSCALL_WRAPPER(sys_getresuid16);
-VGO_LINUX_SYSCALL_WRAPPER(sys_setresgid16);  // man page says "non-standard"
-VGO_LINUX_SYSCALL_WRAPPER(sys_getresgid16);
-
-VGO_LINUX_SYSCALL_WRAPPER(sys_setfsuid);
-VGO_LINUX_SYSCALL_WRAPPER(sys_setfsgid);
-VGO_LINUX_SYSCALL_WRAPPER(sys_setresuid);    // man page says "non-standard"
-VGO_LINUX_SYSCALL_WRAPPER(sys_getresuid);
-VGO_LINUX_SYSCALL_WRAPPER(sys_setresgid);    // man page says "non-standard"
-VGO_LINUX_SYSCALL_WRAPPER(sys_getresgid);
-
-VGO_LINUX_SYSCALL_WRAPPER(sys_ioperm);
-VGO_LINUX_SYSCALL_WRAPPER(sys_syslog);
-VGO_LINUX_SYSCALL_WRAPPER(sys_vhangup);
-VGO_LINUX_SYSCALL_WRAPPER(sys_sysinfo);
-VGO_LINUX_SYSCALL_WRAPPER(sys_personality);
-VGO_LINUX_SYSCALL_WRAPPER(sys_sysctl);
-VGO_LINUX_SYSCALL_WRAPPER(sys_prctl);
-
-VGO_LINUX_SYSCALL_WRAPPER(sys_sendfile);
-VGO_LINUX_SYSCALL_WRAPPER(sys_sendfile64);
-VGO_LINUX_SYSCALL_WRAPPER(sys_futex);
-
-VGO_LINUX_SYSCALL_WRAPPER(sys_epoll_create);
-VGO_LINUX_SYSCALL_WRAPPER(sys_epoll_ctl);
-VGO_LINUX_SYSCALL_WRAPPER(sys_epoll_wait);
-
-VGO_LINUX_SYSCALL_WRAPPER(sys_gettid);
-VGO_LINUX_SYSCALL_WRAPPER(sys_tkill);
-VGO_LINUX_SYSCALL_WRAPPER(sys_tgkill);
-
-VGO_LINUX_SYSCALL_WRAPPER(sys_fadvise64);
-VGO_LINUX_SYSCALL_WRAPPER(sys_fadvise64_64);
-
-VGO_LINUX_SYSCALL_WRAPPER(sys_io_setup);
-VGO_LINUX_SYSCALL_WRAPPER(sys_io_destroy);
-VGO_LINUX_SYSCALL_WRAPPER(sys_io_getevents);
-VGO_LINUX_SYSCALL_WRAPPER(sys_io_submit);
-VGO_LINUX_SYSCALL_WRAPPER(sys_io_cancel);
-
 #define FUTEX_SEMA     0
 
 #if FUTEX_SEMA
index d30f08a82ff7daea0e5679e18e4b14c43b68bdbc..ff7ee9668c28727af5aab68b50c65ef95e5067da 100644 (file)
@@ -8,6 +8,7 @@ EXTRA_DIST = \
 
 noinst_HEADERS = \
        priv_syscalls.h \
+       priv_syscalls-linux.h \
        priv_syscalls-amd64-linux.h \
        priv_syscalls-arm-linux.h \
        priv_syscalls-x86-linux.h
diff --git a/coregrind/m_syscalls/priv_syscalls-linux.h b/coregrind/m_syscalls/priv_syscalls-linux.h
new file mode 100644 (file)
index 0000000..86223cf
--- /dev/null
@@ -0,0 +1,101 @@
+
+/*--------------------------------------------------------------------*/
+/*--- Linux-specific syscalls stuff.         priv_syscalls-linux.h ---*/
+/*--------------------------------------------------------------------*/
+
+/*
+   This file is part of Valgrind, a dynamic binary instrumentation
+   framework.
+
+   Copyright (C) 2000-2005 Nicholas Nethercote
+      njn@valgrind.org
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307, USA.
+
+   The GNU General Public License is contained in the file COPYING.
+*/
+
+#ifndef __PRIV_SYSCALLS_LINUX_H
+#define __PRIV_SYSCALLS_LINUX_H
+
+// Macros for adding Linux-specific, arch-independent wrappers to a syscall
+// table.
+#define LINX_(const, name)    SYS_WRAPPER_ENTRY_X_(vgOS_linux, const, name) 
+#define LINXY(const, name)    SYS_WRAPPER_ENTRY_XY(vgOS_linux, const, name)
+
+// The following syscall wrappers are Linux-specific, but arch-independent.
+#define LINUX_SYSCALL_WRAPPER(x) \
+   extern UInt VGO_(linux_##x##_flags); \
+   extern void VGO_(linux_##x##_before)(ThreadId tid, ThreadState *tst); \
+   extern void VGO_(linux_##x##_after) (ThreadId tid, ThreadState *tst)
+
+LINUX_SYSCALL_WRAPPER(sys_exit_group);
+
+LINUX_SYSCALL_WRAPPER(sys_mount);
+LINUX_SYSCALL_WRAPPER(sys_oldumount);
+LINUX_SYSCALL_WRAPPER(sys_umount);
+
+LINUX_SYSCALL_WRAPPER(sys_llseek);
+LINUX_SYSCALL_WRAPPER(sys_adjtimex);
+
+LINUX_SYSCALL_WRAPPER(sys_setfsuid16);
+LINUX_SYSCALL_WRAPPER(sys_setfsgid16);
+LINUX_SYSCALL_WRAPPER(sys_setresuid16);  // man page says "non-standard";
+LINUX_SYSCALL_WRAPPER(sys_getresuid16);
+LINUX_SYSCALL_WRAPPER(sys_setresgid16);  // man page says "non-standard"
+LINUX_SYSCALL_WRAPPER(sys_getresgid16);
+
+LINUX_SYSCALL_WRAPPER(sys_setfsuid);
+LINUX_SYSCALL_WRAPPER(sys_setfsgid);
+LINUX_SYSCALL_WRAPPER(sys_setresuid);    // man page says "non-standard"
+LINUX_SYSCALL_WRAPPER(sys_getresuid);
+LINUX_SYSCALL_WRAPPER(sys_setresgid);    // man page says "non-standard"
+LINUX_SYSCALL_WRAPPER(sys_getresgid);
+
+LINUX_SYSCALL_WRAPPER(sys_ioperm);
+LINUX_SYSCALL_WRAPPER(sys_syslog);
+LINUX_SYSCALL_WRAPPER(sys_vhangup);
+LINUX_SYSCALL_WRAPPER(sys_sysinfo);
+LINUX_SYSCALL_WRAPPER(sys_personality);
+LINUX_SYSCALL_WRAPPER(sys_sysctl);
+LINUX_SYSCALL_WRAPPER(sys_prctl);
+
+LINUX_SYSCALL_WRAPPER(sys_sendfile);
+LINUX_SYSCALL_WRAPPER(sys_sendfile64);
+LINUX_SYSCALL_WRAPPER(sys_futex);
+
+LINUX_SYSCALL_WRAPPER(sys_epoll_create);
+LINUX_SYSCALL_WRAPPER(sys_epoll_ctl);
+LINUX_SYSCALL_WRAPPER(sys_epoll_wait);
+
+LINUX_SYSCALL_WRAPPER(sys_gettid);
+LINUX_SYSCALL_WRAPPER(sys_tkill);
+LINUX_SYSCALL_WRAPPER(sys_tgkill);
+
+LINUX_SYSCALL_WRAPPER(sys_fadvise64);
+LINUX_SYSCALL_WRAPPER(sys_fadvise64_64);
+
+LINUX_SYSCALL_WRAPPER(sys_io_setup);
+LINUX_SYSCALL_WRAPPER(sys_io_destroy);
+LINUX_SYSCALL_WRAPPER(sys_io_getevents);
+LINUX_SYSCALL_WRAPPER(sys_io_submit);
+LINUX_SYSCALL_WRAPPER(sys_io_cancel);
+
+#endif   // __PRIV_SYSCALLS_LINUX_H
+
+/*--------------------------------------------------------------------*/
+/*--- end                                                          ---*/
+/*--------------------------------------------------------------------*/
index 2dc0b1df057c06857eb56c419ea8200f129a167a..146228eb4f7e03dccbbd59a5ce3d3d66ac9d1d53 100644 (file)
 
 #include "pub_core_options.h"
 
-// This is ugly, but the alternatives (ie. doing it "properly" with -I options
-// and directories and more Makefiles) are even worse.
+#if defined(VGO_linux)
+#  include "priv_syscalls-linux.h"
+#else
+#  error Unknown OS
+#endif
+
 #if defined(VGP_amd64_linux)
 #  include "priv_syscalls-amd64-linux.h"
 #elif defined(VGP_arm_linux)