You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
1
|
2
(2) |
3
|
4
(2) |
5
|
6
(1) |
7
|
|
8
|
9
(4) |
10
(2) |
11
|
12
|
13
|
14
|
|
15
|
16
(3) |
17
|
18
|
19
|
20
|
21
(1) |
|
22
(1) |
23
(1) |
24
(2) |
25
|
26
|
27
|
28
(1) |
|
29
(4) |
30
(2) |
31
(1) |
|
|
|
|
|
From: <sv...@va...> - 2016-05-28 22:05:53
|
Author: iraisr
Date: Sat May 28 23:05:43 2016
New Revision: 15882
Log:
Solaris: Add syscall modctl with several commands implemented.
n-i-bz
Added:
trunk/memcheck/tests/solaris/scalar_modctl_modnvl.c
trunk/memcheck/tests/solaris/scalar_modctl_modnvl.stderr.exp
trunk/memcheck/tests/solaris/scalar_modctl_modnvl.stdout.exp
trunk/memcheck/tests/solaris/scalar_modctl_modnvl.vgtest
Modified:
trunk/configure.ac
trunk/coregrind/m_syswrap/syswrap-solaris.c
trunk/include/vki/vki-scnums-solaris.h
trunk/include/vki/vki-solaris.h
trunk/memcheck/tests/solaris/ (props changed)
trunk/memcheck/tests/solaris/Makefile.am
trunk/memcheck/tests/solaris/scalar.c
trunk/memcheck/tests/solaris/scalar.stderr.exp
Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Sat May 28 23:05:43 2016
@@ -3341,6 +3341,29 @@
AM_CONDITIONAL(SOLARIS_SPAWN_SYSCALL, test x$solaris_spawn_syscall = xyes)
+# Solaris-specific check determining if commands MODNVL_CTRLMAP through
+# MODDEVINFO_CACHE_TS for modctl() syscall are available (on newer Solaris).
+#
+# C-level symbol: SOLARIS_MODCTL_MODNVL
+# Automake-level symbol: SOLARIS_MODCTL_MODNVL
+#
+AC_MSG_CHECKING([for MODNVL_CTRLMAP through MODDEVINFO_CACHE_TS modctl(2) commands (Solaris-specific)])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/modctl.h>
+]], [[
+ return !(MODNVL_CTRLMAP && MODDEVINFO_CACHE_TS);
+]])], [
+solaris_modctl_modnvl=yes
+AC_MSG_RESULT([yes])
+AC_DEFINE([SOLARIS_MODCTL_MODNVL], 1,
+ [Define to 1 if you have the `MODNVL_CTRLMAP' through `MODDEVINFO_CACHE_TS' constants.])
+], [
+solaris_modctl_modnvl=no
+AC_MSG_RESULT([no])
+])
+AM_CONDITIONAL(SOLARIS_MODCTL_MODNVL, test x$solaris_modctl_modnvl = xyes)
+
+
# Solaris-specific check determining whether nscd (name switch cache daemon)
# attaches its door at /system/volatile/name_service_door (Solaris)
# or at /var/run/name_service_door (illumos).
@@ -3630,6 +3653,7 @@
sys/signal.h \
sys/signalfd.h \
sys/syscall.h \
+ sys/sysnvl.h \
sys/time.h \
sys/types.h \
])
Modified: trunk/coregrind/m_syswrap/syswrap-solaris.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-solaris.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-solaris.c Sat May 28 23:05:43 2016
@@ -999,6 +999,7 @@
DECL_TEMPLATE(solaris, sys_lwp_sema_post);
DECL_TEMPLATE(solaris, sys_lwp_sema_trywait);
DECL_TEMPLATE(solaris, sys_lwp_detach);
+DECL_TEMPLATE(solaris, sys_modctl);
DECL_TEMPLATE(solaris, sys_fchroot);
#if defined(SOLARIS_SYSTEM_STATS_SYSCALL)
DECL_TEMPLATE(solaris, sys_system_stats);
@@ -6624,6 +6625,143 @@
PRE_REG_READ1(long, "lwp_detach", vki_id_t, lwpid);
}
+PRE(sys_modctl)
+{
+ /* int modctl(int cmd, uintptr_t a1, uintptr_t a2, uintptr_t a3,
+ uintptr_t a4, uintptr_t a5); */
+ *flags |= SfMayBlock;
+
+ switch (ARG1 /*cmd*/) {
+ case VKI_MODLOAD:
+ /* int modctl_modload(int use_path, char *filename, int *rvp); */
+ PRINT("sys_modctl ( %ld, %ld, %#lx(%s), %#lx )",
+ SARG1, ARG2, ARG3, (HChar *) ARG3, ARG4);
+ PRE_REG_READ4(long, SC2("modctl", "modload"),
+ int, cmd, int, use_path, char *, filename, int *, rvp);
+ PRE_MEM_RASCIIZ("modctl(filaneme)", ARG3);
+ if (ARG4 != 0) {
+ PRE_MEM_WRITE("modctl(rvp)", ARG4, sizeof(int *));
+ }
+ break;
+ case VKI_MODUNLOAD:
+ /* int modctl_modunload(modid_t id); */
+ PRINT("sys_modctl ( %ld, %ld )", SARG1, SARG2);
+ PRE_REG_READ2(long, SC2("modctl", "modunload"),
+ int, cmd, vki_modid_t, id);
+ break;
+ case VKI_MODINFO: {
+ /* int modctl_modinfo(modid_t id, struct modinfo *umodi); */
+ PRINT("sys_modctl ( %ld, %ld, %#lx )", SARG1, SARG2, ARG3);
+ PRE_REG_READ3(long, SC2("modctl", "modinfo"),
+ int, cmd, vki_modid_t, id, struct modinfo *, umodi);
+
+ struct vki_modinfo *umodi = (struct vki_modinfo *) ARG3;
+ PRE_FIELD_READ("modctl(umodi->mi_info)", umodi->mi_info);
+ PRE_FIELD_READ("modctl(umodi->mi_id)", umodi->mi_id);
+ PRE_FIELD_READ("modctl(umodi->mi_nextid)", umodi->mi_nextid);
+ PRE_MEM_WRITE("modctl(umodi)", ARG3, sizeof(struct vki_modinfo));
+ break;
+ }
+
+#if defined(SOLARIS_MODCTL_MODNVL)
+ case VKI_MODNVL_DEVLINKSYNC:
+ /* int modnvl_devlinksync(sysnvl_op_t a1, uintptr_t a2, uintptr_t a3,
+ uintptr_t a4); */
+ switch (ARG2 /*op*/) {
+ case VKI_SYSNVL_OP_GET:
+ PRINT("sys_modctl ( %ld, %lu, %#lx, %#lx, %#lx )",
+ SARG1, ARG2, ARG3, ARG4, ARG5);
+ PRE_REG_READ5(long, SC3("modctl", "modnvl_devlinksync", "get"),
+ int, cmd, sysnvl_op_t, a1, char *, bufp,
+ uint64_t *, buflenp, uint64_t *, genp);
+
+ PRE_MEM_WRITE("modctl(buflenp)", ARG4, sizeof(vki_uint64_t));
+ if (ML_(safe_to_deref)((vki_uint64_t *) ARG4, sizeof(vki_uint64_t))) {
+ if (ARG3 != 0) {
+ PRE_MEM_WRITE("modctl(bufp)", ARG3, *(vki_uint64_t *) ARG4);
+ }
+ }
+ if (ARG5 != 0) {
+ PRE_MEM_WRITE("modctl(genp)", ARG5, sizeof(vki_uint64_t));
+ }
+ break;
+ case VKI_SYSNVL_OP_UPDATE:
+ PRINT("sys_modctl ( %ld, %lu, %#lx, %#lx )", SARG1, ARG2, ARG3, ARG4);
+ PRE_REG_READ4(long, SC3("modctl", "modnvl_devlinksync", "update"),
+ int, cmd, sysnvl_op_t, a1, char *, bufp,
+ uint64_t *, buflenp);
+
+ PRE_MEM_READ("modctl(buflenp)", ARG4, sizeof(vki_uint64_t));
+ if (ML_(safe_to_deref)((vki_uint64_t *) ARG4, sizeof(vki_uint64_t))) {
+ PRE_MEM_READ("modctl(bufp)", ARG3, *(vki_uint64_t *) ARG4);
+ }
+ break;
+ default:
+ VG_(unimplemented)("Syswrap of the modctl call with command "
+ "MODNVL_DEVLINKSYNC and op %ld.", ARG2);
+ /*NOTREACHED*/
+ break;
+ }
+ break;
+
+ case VKI_MODDEVINFO_CACHE_TS:
+ /* int modctl_devinfo_cache_ts(uint64_t *utsp); */
+ PRINT("sys_modctl ( %ld, %#lx )", SARG1, ARG2);
+ PRE_REG_READ2(long, SC2("modctl", "moddevinfo_cache_ts"),
+ int, cmd, uint64_t *, utsp);
+ PRE_MEM_WRITE("modctl(utsp)", ARG2, sizeof(vki_uint64_t));
+ break;
+#endif /* SOLARIS_MODCTL_MODNVL */
+
+ default:
+ VG_(unimplemented)("Syswrap of the modctl call with command %ld.", SARG1);
+ /*NOTREACHED*/
+ break;
+ }
+}
+
+POST(sys_modctl)
+{
+ switch (ARG1 /*cmd*/) {
+ case VKI_MODLOAD:
+ if (ARG4 != 0) {
+ POST_MEM_WRITE(ARG4, sizeof(int *));
+ }
+ break;
+ case VKI_MODUNLOAD:
+ break;
+ case VKI_MODINFO:
+ POST_MEM_WRITE(ARG3, sizeof(struct vki_modinfo));
+ break;
+#if defined(SOLARIS_MODCTL_MODNVL)
+ case VKI_MODNVL_DEVLINKSYNC:
+ switch (ARG2 /*op*/) {
+ case VKI_SYSNVL_OP_GET:
+ POST_MEM_WRITE(ARG4, sizeof(vki_uint64_t));
+ if (ARG3 != 0) {
+ POST_MEM_WRITE(ARG3, *(vki_uint64_t *) ARG4);
+ }
+ if (ARG5 != 0) {
+ POST_MEM_WRITE(ARG5, sizeof(vki_uint64_t));
+ }
+ break;
+ case VKI_SYSNVL_OP_UPDATE:
+ break;
+ default:
+ vg_assert(0);
+ break;
+ }
+ break;
+ case VKI_MODDEVINFO_CACHE_TS:
+ POST_MEM_WRITE(ARG2, sizeof(vki_uint64_t));
+ break;
+#endif /* SOLARIS_MODCTL_MODNVL */
+ default:
+ vg_assert(0);
+ break;
+ }
+}
+
PRE(sys_fchroot)
{
/* int fchroot(int fd); */
@@ -10517,6 +10655,7 @@
SOLXY(__NR_lwp_sema_post, sys_lwp_sema_post), /* 148 */
SOLXY(__NR_lwp_sema_trywait, sys_lwp_sema_trywait), /* 149 */
SOLX_(__NR_lwp_detach, sys_lwp_detach), /* 150 */
+ SOLXY(__NR_modctl, sys_modctl), /* 152 */
SOLX_(__NR_fchroot, sys_fchroot), /* 153 */
#if defined(SOLARIS_SYSTEM_STATS_SYSCALL)
SOLX_(__NR_system_stats, sys_system_stats), /* 154 */
Modified: trunk/include/vki/vki-scnums-solaris.h
==============================================================================
--- trunk/include/vki/vki-scnums-solaris.h (original)
+++ trunk/include/vki/vki-scnums-solaris.h Sat May 28 23:05:43 2016
@@ -204,7 +204,7 @@
#define __NR_lwp_sema_trywait SYS_lwp_sema_trywait
#define __NR_lwp_detach SYS_lwp_detach
//#define __NR_corectl SYS_corectl
-//#define __NR_modctl SYS_modctl
+#define __NR_modctl SYS_modctl
#define __NR_fchroot SYS_fchroot
#if defined(SOLARIS_SYSTEM_STATS_SYSCALL)
#define __NR_system_stats SYS_system_stats
Modified: trunk/include/vki/vki-solaris.h
==============================================================================
--- trunk/include/vki/vki-solaris.h (original)
+++ trunk/include/vki/vki-solaris.h Sat May 28 23:05:43 2016
@@ -642,11 +642,30 @@
#define vki_mnttab mnttab
+#include <sys/modctl.h>
+#define VKI_MODLOAD MODLOAD
+#define VKI_MODUNLOAD MODUNLOAD
+#define VKI_MODINFO MODINFO
+#if defined(SOLARIS_MODCTL_MODNVL)
+#define VKI_MODNVL_DEVLINKSYNC MODNVL_DEVLINKSYNC
+#define VKI_MODDEVINFO_CACHE_TS MODDEVINFO_CACHE_TS
+#endif /* SOLARIS_MODCTL_MODNVL */
+#define vki_modid_t int
+#define vki_modinfo modinfo
+
+
#include <sys/mount.h>
#define VKI_MS_DATA MS_DATA
#define VKI_MS_OPTIONSTR MS_OPTIONSTR
+#if defined(HAVE_SYS_SYSNVL_H)
+#include <sys/sysnvl.h>
+#define VKI_SYSNVL_OP_GET SYSNVL_OP_GET
+#define VKI_SYSNVL_OP_UPDATE SYSNVL_OP_UPDATE
+#endif /* HAVE_SYS_SYSNVL_H */
+
+
#include <sys/poll.h>
#define vki_pollfd pollfd
#define vki_pollfd_t pollfd_t
Modified: trunk/memcheck/tests/solaris/Makefile.am
==============================================================================
--- trunk/memcheck/tests/solaris/Makefile.am (original)
+++ trunk/memcheck/tests/solaris/Makefile.am Sat May 28 23:05:43 2016
@@ -37,6 +37,7 @@
scalar_lwp_name.stderr.exp scalar_lwp_name.stdout.exp scalar_lwp_name.vgtest \
scalar_lwp_sigqueue.stderr.exp scalar_lwp_sigqueue.stdout.exp scalar_lwp_sigqueue.vgtest \
scalar_lwp_sigqueue_pid.stderr.exp scalar_lwp_sigqueue_pid.vgtest \
+ scalar_modctl_modnvl.stderr.exp scalar_modctl_modnvl.stdout.exp scalar_modctl_modnvl.vgtest \
scalar_obsolete.stderr.exp scalar_obsolete.stdout.exp scalar_obsolete.vgtest \
scalar_shm_new.stderr.exp scalar_shm_new.stdout.exp scalar_shm_new.vgtest \
scalar_spawn.stderr.exp scalar_spawn.stdout.exp scalar_spawn.vgtest \
@@ -112,6 +113,10 @@
check_PROGRAMS += scalar_lwp_name
endif
+if SOLARIS_MODCTL_MODNVL
+check_PROGRAMS += scalar_modctl_modnvl
+endif
+
if SOLARIS_LWP_SIGQUEUE_SYSCALL
if SOLARIS_LWP_SIGQUEUE_SYSCALL_TAKES_PID
check_PROGRAMS += scalar_lwp_sigqueue_pid
Modified: trunk/memcheck/tests/solaris/scalar.c
==============================================================================
--- trunk/memcheck/tests/solaris/scalar.c (original)
+++ trunk/memcheck/tests/solaris/scalar.c Sat May 28 23:05:43 2016
@@ -11,6 +11,7 @@
#include <sys/fstyp.h>
#include <sys/lwp.h>
#include <sys/mman.h>
+#include <sys/modctl.h>
#include <sys/mount.h>
#include <sys/port_impl.h>
#include <sys/priocntl.h>
@@ -673,6 +674,27 @@
}
__attribute__((noinline))
+static void sys_modctl(void)
+{
+ GO(SYS_modctl, "(MODLOAD) 3s 1m");
+ SY(SYS_modctl, x0 + MODLOAD, x0 - 1, x0 + 1); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_modctl2(void)
+{
+ GO(SYS_modctl, "(MODUNLOAD) 2s 0m");
+ SY(SYS_modctl, x0 + MODUNLOAD, x0 + 1); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_modctl3(void)
+{
+ GO(SYS_modctl, "(MODINFO) 3s 4m");
+ SY(SYS_modctl, x0 + MODINFO, x0 + 1, x0 - 1); FAIL;
+}
+
+__attribute__((noinline))
static void sys_rusagesys(void)
{
GO(SYS_rusagesys, "(_RUSAGESYS_GETRUSAGE) 2s 1m");
@@ -2053,7 +2075,9 @@
/* XXX Missing wrapper. */
/* SYS_modctl 152 */
- /* XXX Missing wrapper. */
+ sys_modctl();
+ sys_modctl2();
+ sys_modctl3();
/* SYS_fchroot 153 */
GO(SYS_fchroot, "1s 0m");
Modified: trunk/memcheck/tests/solaris/scalar.stderr.exp
==============================================================================
--- trunk/memcheck/tests/solaris/scalar.stderr.exp (original)
+++ trunk/memcheck/tests/solaris/scalar.stderr.exp Sat May 28 23:05:43 2016
@@ -2466,6 +2466,59 @@
...
---------------------------------------------------------
+152: SYS_modctl (MODLOAD) 3s 1m
+---------------------------------------------------------
+Syscall param modctl_modload(cmd) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modload(use_path) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modload(filename) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl(filaneme) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+152: SYS_modctl (MODUNLOAD) 2s 0m
+---------------------------------------------------------
+Syscall param modctl_modunload(cmd) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modunload(id) contains uninitialised byte(s)
+ ...
+
+---------------------------------------------------------
+152: SYS_modctl (MODINFO) 3s 4m
+---------------------------------------------------------
+Syscall param modctl_modinfo(cmd) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modinfo(id) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modinfo(umodi) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl(umodi->mi_info) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param modctl(umodi->mi_id) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param modctl(umodi->mi_nextid) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param modctl(umodi) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
153: SYS_fchroot 1s 0m
---------------------------------------------------------
Syscall param fchroot(fd) contains uninitialised byte(s)
Added: trunk/memcheck/tests/solaris/scalar_modctl_modnvl.c
==============================================================================
--- trunk/memcheck/tests/solaris/scalar_modctl_modnvl.c (added)
+++ trunk/memcheck/tests/solaris/scalar_modctl_modnvl.c Sat May 28 23:05:43 2016
@@ -0,0 +1,66 @@
+/* Scalar test for new modctl syscall commands available on newer Solaris. */
+
+#include "scalar.h"
+
+#include <sys/modctl.h>
+#include <sys/sysnvl.h>
+
+__attribute__((noinline))
+static void sys_modctl(void)
+{
+ GO(SYS_modctl, "(MODNVL_DEVLINKSYNC, GET) 5s 1m");
+ SY(SYS_modctl, x0 + MODNVL_DEVLINKSYNC, x0 + SYSNVL_OP_GET,
+ x0, x0 + 1, x0); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_modctl2(void)
+{
+ uint64_t buflen = x0 + 10;
+
+ GO(SYS_modctl, "(MODNVL_DEVLINKSYNC, GET) 4s 2m");
+ SY(SYS_modctl, x0 + MODNVL_DEVLINKSYNC, x0 + SYSNVL_OP_GET,
+ x0 + 1, &buflen, x0 + 1); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_modctl3(void)
+{
+ GO(SYS_modctl, "(MODNVL_DEVLINKSYNC, UPDATE) 4s 1m");
+ SY(SYS_modctl, x0 + MODNVL_DEVLINKSYNC, x0 + SYSNVL_OP_UPDATE,
+ x0, x0 + 1); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_modctl4(void)
+{
+ uint64_t buflen = x0 + 10;
+
+ GO(SYS_modctl, "(MODNVL_DEVLINKSYNC, UPDATE) 4s 1m");
+ SY(SYS_modctl, x0 + MODNVL_DEVLINKSYNC, x0 + SYSNVL_OP_UPDATE,
+ x0 + 1, &buflen); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_modctl5(void)
+{
+ GO(SYS_modctl, "(MODDEVINFO_CACHE_TS) 2s 1m");
+ SY(SYS_modctl, x0 + MODDEVINFO_CACHE_TS, x0 + 1); FAIL;
+}
+
+int main(void)
+{
+ /* Uninitialised, but we know px[0] is 0x0. */
+ long *px = malloc(sizeof(long));
+ x0 = px[0];
+
+ /* SYS_modctl 152 */
+ sys_modctl();
+ sys_modctl2();
+ sys_modctl3();
+ sys_modctl4();
+ sys_modctl5();
+
+ return 0;
+}
+
Added: trunk/memcheck/tests/solaris/scalar_modctl_modnvl.stderr.exp
==============================================================================
--- trunk/memcheck/tests/solaris/scalar_modctl_modnvl.stderr.exp (added)
+++ trunk/memcheck/tests/solaris/scalar_modctl_modnvl.stderr.exp Sat May 28 23:05:43 2016
@@ -0,0 +1,98 @@
+---------------------------------------------------------
+152: SYS_modctl (MODNVL_DEVLINKSYNC, GET) 5s 1m
+---------------------------------------------------------
+Syscall param modctl_modnvl_devlinksync_get(cmd) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modnvl_devlinksync_get(a1) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modnvl_devlinksync_get(bufp) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modnvl_devlinksync_get(buflenp) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modnvl_devlinksync_get(genp) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl(buflenp) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+152: SYS_modctl (MODNVL_DEVLINKSYNC, GET) 4s 2m
+---------------------------------------------------------
+Syscall param modctl_modnvl_devlinksync_get(cmd) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modnvl_devlinksync_get(a1) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modnvl_devlinksync_get(bufp) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modnvl_devlinksync_get(genp) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl(bufp) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param modctl(genp) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+152: SYS_modctl (MODNVL_DEVLINKSYNC, UPDATE) 4s 1m
+---------------------------------------------------------
+Syscall param modctl_modnvl_devlinksync_update(cmd) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modnvl_devlinksync_update(a1) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modnvl_devlinksync_update(bufp) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modnvl_devlinksync_update(buflenp) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl(buflenp) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+152: SYS_modctl (MODNVL_DEVLINKSYNC, UPDATE) 4s 1m
+---------------------------------------------------------
+Syscall param modctl_modnvl_devlinksync_update(cmd) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modnvl_devlinksync_update(a1) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_modnvl_devlinksync_update(bufp) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl(buflenp) points to uninitialised byte(s)
+ ...
+ Address 0x........ is on thread 1's stack
+ in frame #1, created by sys_modctl4 (scalar_modctl_modnvl.c:36)
+
+Syscall param modctl(bufp) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+152: SYS_modctl (MODDEVINFO_CACHE_TS) 2s 1m
+---------------------------------------------------------
+Syscall param modctl_moddevinfo_cache_ts(cmd) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl_moddevinfo_cache_ts(utsp) contains uninitialised byte(s)
+ ...
+
+Syscall param modctl(utsp) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
Added: trunk/memcheck/tests/solaris/scalar_modctl_modnvl.stdout.exp
==============================================================================
(empty)
Added: trunk/memcheck/tests/solaris/scalar_modctl_modnvl.vgtest
==============================================================================
--- trunk/memcheck/tests/solaris/scalar_modctl_modnvl.vgtest (added)
+++ trunk/memcheck/tests/solaris/scalar_modctl_modnvl.vgtest Sat May 28 23:05:43 2016
@@ -0,0 +1,4 @@
+prereq: test -e scalar_modctl_modnvl
+prog: scalar_modctl_modnvl
+vgopts: -q
+stderr_filter_args:
|