]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Solaris: Add additional subcodes for lgrpsys(180) syscall
authorIvo Raisr <ivosh@ivosh.net>
Tue, 14 Feb 2017 12:38:06 +0000 (12:38 +0000)
committerIvo Raisr <ivosh@ivosh.net>
Tue, 14 Feb 2017 12:38:06 +0000 (12:38 +0000)
Fixes BZ#376455.

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

coregrind/m_syswrap/syswrap-solaris.c
include/vki/vki-solaris.h
memcheck/tests/solaris/scalar.c
memcheck/tests/solaris/scalar.stderr.exp

index 0b88e27187900c34334f85465dd175384b5df34b..48fa72b3d3fcd476df7d3c5aad65503c512acc5f 100644 (file)
@@ -28,7 +28,7 @@
    The GNU General Public License is contained in the file COPYING.
 */
 
-/* Copyright 2013-2016, Ivo Raisr <ivosh@ivosh.net>. */
+/* Copyright 2013-2017, Ivo Raisr <ivosh@ivosh.net>. */
 
 /* Copyright 2015-2015, Tomas Jedlicka <jedlickat@gmail.com>. */
 
@@ -7517,6 +7517,25 @@ PRE(sys_lgrpsys)
                        (Addr) minfo->mi_validity, SARG2 * sizeof(vki_uint_t));
       }
       break;
+   case VKI_LGRP_SYS_GENERATION:
+      /* Liblgrp: lgrp_gen_t lgrp_generation(lgrp_view_t view); */
+      PRINT("sys_lgrpsys ( %ld, %ld )", SARG1, SARG2);
+      PRE_REG_READ2(long, SC2("lgrpsys", "generation"), int, subcode,
+                    vki_lgrp_view_t, view);
+      break;
+   case VKI_LGRP_SYS_VERSION:
+      /* Liblgrp: int lgrp_version(int version); */
+      PRINT("sys_lgrpsys ( %ld, %ld )", SARG1, SARG2);
+      PRE_REG_READ2(long, SC2("lgrpsys", "version"), int, subcode,
+                    int, version);
+      break;
+   case VKI_LGRP_SYS_SNAPSHOT:
+      /* Liblgrp: int lgrp_snapshot(void *buf, size_t bufsize); */
+      PRINT("sys_lgrpsys ( %ld, %lu, %#lx )", SARG1, ARG2, ARG3);
+      PRE_REG_READ3(long, SC2("lgrpsys", "snapshot"), int, subcode,
+                    vki_size_t, bufsize, void *, buf);
+      PRE_MEM_WRITE("lgrpsys(buf)", ARG3, ARG2);
+      break;
    default:
       VG_(unimplemented)("Syswrap of the lgrpsys call with subcode %ld.",
                          SARG1);
@@ -7536,6 +7555,12 @@ POST(sys_lgrpsys)
          POST_MEM_WRITE((Addr) minfo->mi_validity, SARG2 * sizeof(vki_uint_t));
       }
       break;
+   case VKI_LGRP_SYS_GENERATION:
+   case VKI_LGRP_SYS_VERSION:
+      break;
+   case VKI_LGRP_SYS_SNAPSHOT:
+      POST_MEM_WRITE(ARG3, RES);
+      break;
    default:
       vg_assert(0);
       break;
index 8bbc343f86f9b01f8069d984c99e8497c23739a5..f464ef211bdf9e021efc533a079ef35272f9511d 100644 (file)
@@ -604,6 +604,10 @@ typedef struct vki_kcf_door_arg_s {
 #define vki_semid64_ds semid_ds64
 
 
+#include <sys/lgrp_user.h>
+#define vki_lgrp_view_t lgrp_view_t
+
+
 #include <sys/lgrp_user_impl.h>
 #define VKI_LGRP_SYS_MEMINFO LGRP_SYS_MEMINFO
 #define VKI_LGRP_SYS_GENERATION LGRP_SYS_GENERATION
index 36188b744a00178075f8e3a53632bf5c763a5c83..606bc51b36c3f3eeb413cf91438f34177b92f8ec 100644 (file)
@@ -729,6 +729,27 @@ static void sys_lgrpsys3(void)
    SY(SYS_lgrpsys, x0 + LGRP_SYS_MEMINFO, x0 + 1, x0 + &minfo); FAIL;
 }
 
+__attribute__((noinline))
+static void sys_lgrpsys4(void)
+{
+   GO(SYS_lgrpsys, "(LGRP_SYS_GENERATION) 2s 0m");
+   SY(SYS_lgrpsys, x0 + LGRP_SYS_GENERATION, x0 + 0); SUCC;
+}
+
+__attribute__((noinline))
+static void sys_lgrpsys5(void)
+{
+   GO(SYS_lgrpsys, "(LGRP_SYS_VERSION) 2s 0m");
+   SY(SYS_lgrpsys, x0 + LGRP_SYS_VERSION, x0 + 0); SUCC;
+}
+
+__attribute__((noinline))
+static void sys_lgrpsys6(void)
+{
+   GO(SYS_lgrpsys, "(LGRP_SYS_SNAPSHOT) 3s 1m");
+   SY(SYS_lgrpsys, x0 + LGRP_SYS_SNAPSHOT, x0 + 10, x0 + 1); FAIL;
+}
+
 __attribute__((noinline))
 static void sys_rusagesys(void)
 {
@@ -2217,6 +2238,9 @@ int main(void)
    sys_lgrpsys();
    sys_lgrpsys2();
    sys_lgrpsys3();
+   sys_lgrpsys4();
+   sys_lgrpsys5();
+   sys_lgrpsys6();
 
    /* SYS_rusagesys             181 */
    sys_rusagesys();
index 90fac530351517a60ee790e8e1687e80a4db138e..df1f974758f945a5f54e033d8e7a398af4eb5407 100644 (file)
@@ -2869,6 +2869,40 @@ Syscall param lgrpsys(minfo->mi_validity) points to unaddressable byte(s)
    ...
  Address 0x........ is not stack'd, malloc'd or (recently) free'd
 
+---------------------------------------------------------
+180:             SYS_lgrpsys (LGRP_SYS_GENERATION) 2s 0m
+---------------------------------------------------------
+Syscall param lgrpsys_generation(subcode) contains uninitialised byte(s)
+   ...
+
+Syscall param lgrpsys_generation(view) contains uninitialised byte(s)
+   ...
+
+---------------------------------------------------------
+180:             SYS_lgrpsys (LGRP_SYS_VERSION) 2s 0m
+---------------------------------------------------------
+Syscall param lgrpsys_version(subcode) contains uninitialised byte(s)
+   ...
+
+Syscall param lgrpsys_version(version) contains uninitialised byte(s)
+   ...
+
+---------------------------------------------------------
+180:             SYS_lgrpsys (LGRP_SYS_SNAPSHOT) 3s 1m
+---------------------------------------------------------
+Syscall param lgrpsys_snapshot(subcode) contains uninitialised byte(s)
+   ...
+
+Syscall param lgrpsys_snapshot(bufsize) contains uninitialised byte(s)
+   ...
+
+Syscall param lgrpsys_snapshot(buf) contains uninitialised byte(s)
+   ...
+
+Syscall param lgrpsys(buf) points to unaddressable byte(s)
+   ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
 ---------------------------------------------------------
 181:           SYS_rusagesys (_RUSAGESYS_GETRUSAGE) 2s 1m
 ---------------------------------------------------------