From: Ivo Raisr Date: Tue, 14 Feb 2017 12:38:06 +0000 (+0000) Subject: Solaris: Add additional subcodes for lgrpsys(180) syscall X-Git-Tag: svn/VALGRIND_3_13_0~196 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=72a8b52a60f0e2b6296eab610638a9bd16b28490;p=thirdparty%2Fvalgrind.git Solaris: Add additional subcodes for lgrpsys(180) syscall Fixes BZ#376455. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16225 --- diff --git a/coregrind/m_syswrap/syswrap-solaris.c b/coregrind/m_syswrap/syswrap-solaris.c index 0b88e27187..48fa72b3d3 100644 --- a/coregrind/m_syswrap/syswrap-solaris.c +++ b/coregrind/m_syswrap/syswrap-solaris.c @@ -28,7 +28,7 @@ The GNU General Public License is contained in the file COPYING. */ -/* Copyright 2013-2016, Ivo Raisr . */ +/* Copyright 2013-2017, Ivo Raisr . */ /* Copyright 2015-2015, Tomas Jedlicka . */ @@ -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; diff --git a/include/vki/vki-solaris.h b/include/vki/vki-solaris.h index 8bbc343f86..f464ef211b 100644 --- a/include/vki/vki-solaris.h +++ b/include/vki/vki-solaris.h @@ -604,6 +604,10 @@ typedef struct vki_kcf_door_arg_s { #define vki_semid64_ds semid_ds64 +#include +#define vki_lgrp_view_t lgrp_view_t + + #include #define VKI_LGRP_SYS_MEMINFO LGRP_SYS_MEMINFO #define VKI_LGRP_SYS_GENERATION LGRP_SYS_GENERATION diff --git a/memcheck/tests/solaris/scalar.c b/memcheck/tests/solaris/scalar.c index 36188b744a..606bc51b36 100644 --- a/memcheck/tests/solaris/scalar.c +++ b/memcheck/tests/solaris/scalar.c @@ -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(); diff --git a/memcheck/tests/solaris/scalar.stderr.exp b/memcheck/tests/solaris/scalar.stderr.exp index 90fac53035..df1f974758 100644 --- a/memcheck/tests/solaris/scalar.stderr.exp +++ b/memcheck/tests/solaris/scalar.stderr.exp @@ -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 ---------------------------------------------------------