|
From: <sv...@va...> - 2009-11-24 16:38:36
|
Author: tom
Date: 2009-11-24 16:38:21 +0000 (Tue, 24 Nov 2009)
New Revision: 10948
Log:
Re-enable old support for adjtimex system call based on patch
from Dodji Seketeli. Part fix for #215973.
Modified:
trunk/coregrind/m_syswrap/syswrap-amd64-linux.c
trunk/coregrind/m_syswrap/syswrap-linux.c
trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
trunk/coregrind/m_syswrap/syswrap-x86-linux.c
trunk/include/vki/vki-linux.h
Modified: trunk/coregrind/m_syswrap/syswrap-amd64-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-amd64-linux.c 2009-11-24 16:08:40 UTC (rev 10947)
+++ trunk/coregrind/m_syswrap/syswrap-amd64-linux.c 2009-11-24 16:38:21 UTC (rev 10948)
@@ -1213,7 +1213,7 @@
LINXY(__NR__sysctl, sys_sysctl), // 156
LINXY(__NR_prctl, sys_prctl), // 157
PLAX_(__NR_arch_prctl, sys_arch_prctl), // 158
- // (__NR_adjtimex, sys_adjtimex), // 159
+ LINXY(__NR_adjtimex, sys_adjtimex), // 159
GENX_(__NR_setrlimit, sys_setrlimit), // 160
GENX_(__NR_chroot, sys_chroot), // 161
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c 2009-11-24 16:08:40 UTC (rev 10947)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c 2009-11-24 16:38:21 UTC (rev 10948)
@@ -605,35 +605,35 @@
POST_MEM_WRITE( ARG4, sizeof(vki_loff_t) );
}
-//zz PRE(sys_adjtimex, 0)
-//zz {
-//zz struct vki_timex *tx = (struct vki_timex *)ARG1;
-//zz PRINT("sys_adjtimex ( %p )", ARG1);
-//zz PRE_REG_READ1(long, "adjtimex", struct timex *, buf);
-//zz PRE_MEM_READ( "adjtimex(timex->modes)", ARG1, sizeof(tx->modes));
-//zz
-#if 0 //zz (avoiding warnings about multi-line comments)
-zz #define ADJX(bit,field) \
-zz if (tx->modes & bit) \
-zz PRE_MEM_READ( "adjtimex(timex->"#field")", \
-zz (Addr)&tx->field, sizeof(tx->field))
-#endif
-//zz ADJX(ADJ_FREQUENCY, freq);
-//zz ADJX(ADJ_MAXERROR, maxerror);
-//zz ADJX(ADJ_ESTERROR, esterror);
-//zz ADJX(ADJ_STATUS, status);
-//zz ADJX(ADJ_TIMECONST, constant);
-//zz ADJX(ADJ_TICK, tick);
-//zz #undef ADJX
-//zz
-//zz PRE_MEM_WRITE( "adjtimex(timex)", ARG1, sizeof(struct vki_timex));
-//zz }
-//zz
-//zz POST(sys_adjtimex)
-//zz {
-//zz POST_MEM_WRITE( ARG1, sizeof(struct vki_timex) );
-//zz }
+PRE(sys_adjtimex)
+{
+ struct vki_timex *tx = (struct vki_timex *)ARG1;
+ PRINT("sys_adjtimex ( %#lx )", ARG1);
+ PRE_REG_READ1(long, "adjtimex", struct timex *, buf);
+ PRE_MEM_READ( "adjtimex(timex->modes)", ARG1, sizeof(tx->modes));
+#define ADJX(bit,field) \
+ if (tx->modes & bit) \
+ PRE_MEM_READ( "adjtimex(timex->"#field")", \
+ (Addr)&tx->field, sizeof(tx->field))
+
+ ADJX(VKI_ADJ_OFFSET, offset);
+ ADJX(VKI_ADJ_FREQUENCY, freq);
+ ADJX(VKI_ADJ_MAXERROR, maxerror);
+ ADJX(VKI_ADJ_ESTERROR, esterror);
+ ADJX(VKI_ADJ_STATUS, status);
+ ADJX(VKI_ADJ_TIMECONST, constant);
+ ADJX(VKI_ADJ_TICK, tick);
+#undef ADJX
+
+ PRE_MEM_WRITE( "adjtimex(timex)", ARG1, sizeof(struct vki_timex));
+}
+
+POST(sys_adjtimex)
+{
+ POST_MEM_WRITE( ARG1, sizeof(struct vki_timex) );
+}
+
PRE(sys_ioperm)
{
PRINT("sys_ioperm ( %ld, %ld, %ld )", ARG1, ARG2, ARG3 );
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2009-11-24 16:08:40 UTC (rev 10947)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2009-11-24 16:38:21 UTC (rev 10948)
@@ -1644,8 +1644,8 @@
//.. // (__NR_setdomainname, sys_setdomainname), // 121 */*(?)
GENXY(__NR_uname, sys_newuname), // 122
//.. PLAX_(__NR_modify_ldt, sys_modify_ldt), // 123
-//.. LINXY(__NR_adjtimex, sys_adjtimex), // 124
-//..
+ LINXY(__NR_adjtimex, sys_adjtimex), // 124
+
GENXY(__NR_mprotect, sys_mprotect), // 125
LINXY(__NR_sigprocmask, sys_sigprocmask), // 126
GENX_(__NR_create_module, sys_ni_syscall), // 127
Modified: trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2009-11-24 16:08:40 UTC (rev 10947)
+++ trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2009-11-24 16:38:21 UTC (rev 10948)
@@ -1291,7 +1291,7 @@
// _____(__NR_setdomainname, sys_setdomainname), // 121
GENXY(__NR_uname, sys_newuname), // 122
// _____(__NR_modify_ldt, sys_modify_ldt), // 123
-// _____(__NR_adjtimex, sys_adjtimex), // 124
+ LINXY(__NR_adjtimex, sys_adjtimex), // 124
GENXY(__NR_mprotect, sys_mprotect), // 125
// _____(__NR_sigprocmask, sys_sigprocmask), // 126
Modified: trunk/coregrind/m_syswrap/syswrap-x86-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-x86-linux.c 2009-11-24 16:08:40 UTC (rev 10947)
+++ trunk/coregrind/m_syswrap/syswrap-x86-linux.c 2009-11-24 16:38:21 UTC (rev 10948)
@@ -2001,8 +2001,8 @@
//zz // (__NR_setdomainname, sys_setdomainname), // 121 */*(?)
GENXY(__NR_uname, sys_newuname), // 122
PLAX_(__NR_modify_ldt, sys_modify_ldt), // 123
-//zz LINXY(__NR_adjtimex, sys_adjtimex), // 124
-//zz
+ LINXY(__NR_adjtimex, sys_adjtimex), // 124
+
GENXY(__NR_mprotect, sys_mprotect), // 125
LINXY(__NR_sigprocmask, sys_sigprocmask), // 126
//zz // Nb: create_module() was removed 2.4-->2.6
Modified: trunk/include/vki/vki-linux.h
===================================================================
--- trunk/include/vki/vki-linux.h 2009-11-24 16:08:40 UTC (rev 10947)
+++ trunk/include/vki/vki-linux.h 2009-11-24 16:38:21 UTC (rev 10948)
@@ -277,14 +277,14 @@
int :32; int :32; int :32; int :32;
};
-//#define ADJ_OFFSET 0x0001 /* time offset */
-#define ADJ_FREQUENCY 0x0002 /* frequency offset */
-#define ADJ_MAXERROR 0x0004 /* maximum time error */
-#define ADJ_ESTERROR 0x0008 /* estimated time error */
-#define ADJ_STATUS 0x0010 /* clock status */
-#define ADJ_TIMECONST 0x0020 /* pll time constant */
-#define ADJ_TICK 0x4000 /* tick value */
-//#define ADJ_OFFSET_SINGLESHOT 0x8001 /* old-fashioned adjtime */
+#define VKI_ADJ_OFFSET 0x0001 /* time offset */
+#define VKI_ADJ_FREQUENCY 0x0002 /* frequency offset */
+#define VKI_ADJ_MAXERROR 0x0004 /* maximum time error */
+#define VKI_ADJ_ESTERROR 0x0008 /* estimated time error */
+#define VKI_ADJ_STATUS 0x0010 /* clock status */
+#define VKI_ADJ_TIMECONST 0x0020 /* pll time constant */
+#define VKI_ADJ_TICK 0x4000 /* tick value */
+//#define VKI_ADJ_OFFSET_SINGLESHOT 0x8001 /* old-fashioned adjtime */
//----------------------------------------------------------------------
// From linux-2.6.8.1/include/linux/times.h
|