]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add support for sys_pivot_root and sys_unshare. Patch from
authorJulian Seward <jseward@acm.org>
Mon, 8 Sep 2014 11:19:48 +0000 (11:19 +0000)
committerJulian Seward <jseward@acm.org>
Mon, 8 Sep 2014 11:19:48 +0000 (11:19 +0000)
Steven Stewart-Gallus <sstewartgallus00@mylangara.bc.ca>.
n-i-bz (patch on dev@, 27 Aug 2014)

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14494

coregrind/m_syswrap/priv_syswrap-linux.h
coregrind/m_syswrap/syswrap-amd64-linux.c
coregrind/m_syswrap/syswrap-arm-linux.c
coregrind/m_syswrap/syswrap-linux.c
coregrind/m_syswrap/syswrap-mips64-linux.c
coregrind/m_syswrap/syswrap-ppc32-linux.c
coregrind/m_syswrap/syswrap-ppc64-linux.c
coregrind/m_syswrap/syswrap-x86-linux.c

index 40c43a0ed041bc521fa6ebfe30c7b0f024f716cf..f7b6b9079242a498b39c56efd64c29c48d8bcbcd 100644 (file)
@@ -87,6 +87,7 @@ DECL_TEMPLATE(linux, sys_syslog);
 DECL_TEMPLATE(linux, sys_vhangup);
 DECL_TEMPLATE(linux, sys_sysinfo);
 DECL_TEMPLATE(linux, sys_personality);
+DECL_TEMPLATE(linux, sys_pivot_root);
 DECL_TEMPLATE(linux, sys_sysctl);
 DECL_TEMPLATE(linux, sys_prctl);
 DECL_TEMPLATE(linux, sys_sendfile);
@@ -232,6 +233,8 @@ DECL_TEMPLATE(linux, sys_sched_rr_get_interval);
 DECL_TEMPLATE(linux, sys_sched_setaffinity);
 DECL_TEMPLATE(linux, sys_sched_getaffinity);
 
+DECL_TEMPLATE(linux, sys_unshare);
+
 // These ones have different parameters and/or return values on Darwin.
 // Also, some archs on Linux do not match the generic wrapper for sys_pipe.
 DECL_TEMPLATE(linux, sys_munlockall);
index 5999270d3df0ef674430cf793f5a067687b5ef4d..92148a88ed2279768c954caca27f9a36b5e3cea2 100644 (file)
@@ -873,7 +873,7 @@ static SyscallTableEntry syscall_table[] = {
    LINX_(__NR_vhangup,           sys_vhangup),        // 153 
    //   (__NR_modify_ldt,        sys_modify_ldt),     // 154 
 
-   //   (__NR_pivot_root,        sys_pivot_root),     // 155 
+   LINX_(__NR_pivot_root,        sys_pivot_root),     // 155
    LINXY(__NR__sysctl,           sys_sysctl),         // 156 
    LINXY(__NR_prctl,             sys_prctl),          // 157 
    PLAX_(__NR_arch_prctl,       sys_arch_prctl),     // 158 
@@ -1013,7 +1013,7 @@ static SyscallTableEntry syscall_table[] = {
 
    LINX_(__NR_pselect6,                 sys_pselect6),         // 270
    LINXY(__NR_ppoll,            sys_ppoll),            // 271
-//   LINX_(__NR_unshare,                sys_unshare),          // 272
+   LINX_(__NR_unshare,          sys_unshare),          // 272
    LINX_(__NR_set_robust_list,  sys_set_robust_list),  // 273
    LINXY(__NR_get_robust_list,  sys_get_robust_list),  // 274
 
index db17e1d945d641d1748f9c02a902f3aea585448a..b2ba414f6bee911a7e74bd7114ee63327c1c635e 100644 (file)
@@ -1022,7 +1022,7 @@ static SyscallTableEntry syscall_main_table[] = {
 
    LINX_(__NR_setfsuid32,        sys_setfsuid),       // 215
    LINX_(__NR_setfsgid32,        sys_setfsgid),       // 216
-//zz    //   (__NR_pivot_root,        sys_pivot_root),     // 217 */Linux
+   LINX_(__NR_pivot_root,        sys_pivot_root),     // 217
    GENXY(__NR_mincore,           sys_mincore),        // 218
    GENX_(__NR_madvise,           sys_madvise),        // 219
 
@@ -1161,7 +1161,7 @@ static SyscallTableEntry syscall_main_table[] = {
    LINXY(__NR_shmctl,            sys_shmctl),         // 308 
 //   LINX_(__NR_pselect6,       sys_pselect6),         //
 
-//   LINX_(__NR_unshare,       sys_unshare),          // 310
+   LINX_(__NR_unshare,       sys_unshare),          // 310
    LINX_(__NR_set_robust_list,    sys_set_robust_list),  // 311
    LINXY(__NR_get_robust_list,    sys_get_robust_list),  // 312
 //   LINX_(__NR_splice,            sys_ni_syscall),       // 313
index bcd00f1cdf24272e6dfb4d7c2247f3902f18187e..9f6623ef9827dbfc35e227fa876c8b95db0817fb 100644 (file)
@@ -554,6 +554,18 @@ PRE(sys_umount)
    PRE_MEM_RASCIIZ( "umount2(path)", ARG1);
 }
 
+/* Not actually wrapped by GLibc but does things with the system
+ * mounts so it is put here.
+ */
+PRE(sys_pivot_root)
+{
+   PRINT("sys_pivot_root ( %s %s )", (HChar*)ARG1, (HChar*)ARG2);
+   PRE_REG_READ2(int, "pivot_root", char *, new_root, char *, old_root);
+   PRE_MEM_RASCIIZ( "pivot_root(new_root)", ARG1);
+   PRE_MEM_RASCIIZ( "pivot_root(old_root)", ARG2);
+}
+
+
 /* ---------------------------------------------------------------------
    16- and 32-bit uid/gid wrappers
    ------------------------------------------------------------------ */
@@ -2749,6 +2761,12 @@ POST(sys_sched_getaffinity)
    POST_MEM_WRITE(ARG3, ARG2);
 }
 
+PRE(sys_unshare)
+{
+   PRINT("sys_unshare ( %ld )", ARG1);
+   PRE_REG_READ1(int, "unshare", int, flags);
+}
+
 /* ---------------------------------------------------------------------
    miscellaneous wrappers
    ------------------------------------------------------------------ */
index 799836d377e657e00a898f042cbb696795810c62..c1154a2a155c4208630845093887328c2270acc0 100644 (file)
@@ -782,7 +782,7 @@ static SyscallTableEntry syscall_main_table[] = {
    GENX_ (__NR_mlockall, sys_mlockall),
    LINX_ (__NR_munlockall, sys_munlockall),
    LINX_ (__NR_vhangup, sys_vhangup),
-   /* GENX_(__NR_pivot_root,sys_pivot_root), */
+   LINX_ (__NR_pivot_root,sys_pivot_root),
    LINXY (__NR__sysctl, sys_sysctl),
    LINXY (__NR_prctl, sys_prctl),
    LINXY (__NR_adjtimex, sys_adjtimex),
index b7ab7b6d0235e387eec4c85e86f5fd76af2e5fc5..2e5436d75b183ed0e56b010422d95c86208a7bb0 100644 (file)
@@ -1103,7 +1103,7 @@ static SyscallTableEntry syscall_table[] = {
 // __NR_multiplexer                                           // 201
 
    GENXY(__NR_getdents64,        sys_getdents64),        // 202
-//..    //   (__NR_pivot_root,        sys_pivot_root),        // 203 */Linux
+   LINX_(__NR_pivot_root,        sys_pivot_root),        // 203
    LINXY(__NR_fcntl64,           sys_fcntl64),           // 204
    GENX_(__NR_madvise,           sys_madvise),           // 205
    GENXY(__NR_mincore,           sys_mincore),           // 206
index d660833463ad171307b8460933fede40b6f698f3..d775f9bd0e0b8df9103eadea855e3b54a04b2d1d 100644 (file)
@@ -1022,7 +1022,7 @@ static SyscallTableEntry syscall_table[] = {
 // _____(__NR_pciconfig_iobase,  sys_pciconfig_iobase),   // 200
 // _____(__NR_multiplexer,       sys_multiplexer),        // 201
    GENXY(__NR_getdents64,        sys_getdents64),         // 202
-// _____(__NR_pivot_root,        sys_pivot_root),         // 203
+   LINX_(__NR_pivot_root,        sys_pivot_root),         // 203
    LINXY(__NR_fcntl64,           sys_fcntl64),            // 204 !!!!?? 32bit only */
 
    GENX_(__NR_madvise,           sys_madvise),            // 205
index c51a9f4c52def31cd322ad3d40fe19853e55f6ea..2ba73f90dcd796129296a69496c7a4939e7aff9d 100644 (file)
@@ -1655,7 +1655,7 @@ static SyscallTableEntry syscall_table[] = {
 
    LINX_(__NR_setfsuid32,        sys_setfsuid),       // 215
    LINX_(__NR_setfsgid32,        sys_setfsgid),       // 216
-//zz    //   (__NR_pivot_root,        sys_pivot_root),     // 217 */Linux
+   LINX_(__NR_pivot_root,        sys_pivot_root),     // 217
    GENXY(__NR_mincore,           sys_mincore),        // 218
    GENX_(__NR_madvise,           sys_madvise),        // 219
 
@@ -1767,7 +1767,7 @@ static SyscallTableEntry syscall_table[] = {
    LINX_(__NR_pselect6,                 sys_pselect6),         // 308
    LINXY(__NR_ppoll,            sys_ppoll),            // 309
 
-//   LINX_(__NR_unshare,                sys_unshare),          // 310
+   LINX_(__NR_unshare,          sys_unshare),          // 310
    LINX_(__NR_set_robust_list,  sys_set_robust_list),  // 311
    LINXY(__NR_get_robust_list,  sys_get_robust_list),  // 312
    LINX_(__NR_splice,            sys_splice),           // 313