]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Re-enable old support for adjtimex system call based on patch
authorTom Hughes <tom@compton.nu>
Tue, 24 Nov 2009 16:38:21 +0000 (16:38 +0000)
committerTom Hughes <tom@compton.nu>
Tue, 24 Nov 2009 16:38:21 +0000 (16:38 +0000)
from Dodji Seketeli. Part fix for #215973.

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

coregrind/m_syswrap/syswrap-amd64-linux.c
coregrind/m_syswrap/syswrap-linux.c
coregrind/m_syswrap/syswrap-ppc32-linux.c
coregrind/m_syswrap/syswrap-ppc64-linux.c
coregrind/m_syswrap/syswrap-x86-linux.c
include/vki/vki-linux.h

index 6df2867c9e62734456e4c5fa856e639c42d18d5b..540b3b44868d3245e0fe7de43f87963a87cfbbd6 100644 (file)
@@ -1213,7 +1213,7 @@ const SyscallTableEntry ML_(syscall_table)[] = {
    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 
index 3b59fd2130e751fefe312063f241f0cee362bd7c..928f5f1448697676f8eca925426672f4d56f07a3 100644 (file)
@@ -605,34 +605,34 @@ POST(sys_llseek)
       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)
 {
index bdaa5c0739beb290f268f2143bfd3a019301e8b8..3d15f04cb915858cacefca8c62fd1fdf2f7b9540 100644 (file)
@@ -1644,8 +1644,8 @@ const SyscallTableEntry ML_(syscall_table)[] = {
 //..    //   (__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
index 1d1699b8b31c896b5afafdb27e589be2150a40cf..12892a9da105e590dbcce45e5e6b077209278f10 100644 (file)
@@ -1291,7 +1291,7 @@ const SyscallTableEntry ML_(syscall_table)[] = {
 // _____(__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
index 6d9b49860e91e8ce3e7cf467c6112549419bbb57..2a72174a80a9a6a4a85bde9cfc7008119208fc71 100644 (file)
@@ -2001,8 +2001,8 @@ const SyscallTableEntry ML_(syscall_table)[] = {
 //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
index 6393a43e688e53600ed4d2cfcd5ca4f9b4bdc3fa..20b23d73d082ecd4a9292cc6bb394e5aadeb2910 100644 (file)
@@ -277,14 +277,14 @@ struct vki_timex {
        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