]> sourceware.org Git - systemtap.git/commitdiff
PR10601: unfork deref()
authorFrank Ch. Eigler <fche@elastic.org>
Sun, 20 Dec 2009 21:54:27 +0000 (16:54 -0500)
committerFrank Ch. Eigler <fche@elastic.org>
Sun, 20 Dec 2009 21:54:27 +0000 (16:54 -0500)
* runtime/loc2c-runtime.h: Remove k_ vs u_[store_]deref; share instead.
* tapsets.cxx: Remove k_ vs u_ redirection for *deref().

runtime/loc2c-runtime.h
tapsets.cxx

index c89d5b2c41fb9330b510d56f560cd3362dbe192f..de59f0e51507f97fff8c2760097441935ad5d910 100644 (file)
@@ -428,7 +428,7 @@ static void ursl_store64 (const struct usr_regset_lut* lut,unsigned lutsize,  in
           STORE_DEREF_FAULT(ptr); \
     })
 
-#define k_deref(size, addr) ({ \
+#define deref(size, addr) ({ \
     intptr_t _i = 0; \
     switch (size) { \
       case 1: _i = kread((u8 *)(addr)); break; \
@@ -440,7 +440,7 @@ static void ursl_store64 (const struct usr_regset_lut* lut,unsigned lutsize,  in
     _i; \
   })
 
-#define k_store_deref(size, addr, value) ({ \
+#define store_deref(size, addr, value) ({ \
     switch (size) { \
       case 1: kwrite((u8 *)(addr), (value)); break; \
       case 2: kwrite((u16 *)(addr), (value)); break; \
@@ -458,7 +458,7 @@ extern void __store_deref_bad(void);
 
 #if defined __i386__
 
-#define k_deref(size, addr)                                                  \
+#define deref(size, addr)                                                    \
   ({                                                                         \
     int _bad = 0;                                                            \
     u8 _b; u16 _w; u32 _l;                                                   \
@@ -478,7 +478,7 @@ extern void __store_deref_bad(void);
     _v;                                                                              \
   })
 
-#define k_store_deref(size, addr, value)                                             \
+#define store_deref(size, addr, value)                                       \
   ({                                                                         \
     int _bad = 0;                                                            \
     if (lookup_bad_addr((unsigned long)addr, size))                          \
@@ -498,7 +498,7 @@ extern void __store_deref_bad(void);
 
 #elif defined __x86_64__
 
-#define k_deref(size, addr)                                                  \
+#define deref(size, addr)                                                    \
   ({                                                                         \
     int _bad = 0;                                                            \
     u8 _b; u16 _w; u32 _l; u64 _q;                                           \
@@ -519,7 +519,7 @@ extern void __store_deref_bad(void);
     _v;                                                                              \
   })
 
-#define k_store_deref(size, addr, value)                                             \
+#define store_deref(size, addr, value)                                       \
   ({                                                                         \
     int _bad = 0;                                                            \
     if (lookup_bad_addr((unsigned long)addr, size))                          \
@@ -538,7 +538,7 @@ extern void __store_deref_bad(void);
   })
 
 #elif defined __ia64__
-#define k_deref(size, addr)                                            \
+#define deref(size, addr)                                              \
   ({                                                                   \
      int _bad = 0;                                                     \
      intptr_t _v=0;                                                    \
@@ -557,7 +557,7 @@ extern void __store_deref_bad(void);
      _v;                                                               \
    })
 
-#define k_store_deref(size, addr, value)                                       \
+#define store_deref(size, addr, value)                                 \
   ({                                                                   \
     int _bad=0;                                                                \
     if (lookup_bad_addr((unsigned long)addr, size))                    \
@@ -616,7 +616,7 @@ extern void __store_deref_bad(void);
                  "i"(sizeof(unsigned long)))
 
 
-#define k_deref(size, addr)                                                  \
+#define deref(size, addr)                                                    \
   ({                                                                         \
     int _bad = 0;                                                            \
     intptr_t _v = 0;                                                         \
@@ -636,7 +636,7 @@ extern void __store_deref_bad(void);
     _v;                                                                              \
   })
 
-#define k_store_deref(size, addr, value)                                             \
+#define store_deref(size, addr, value)                                       \
   ({                                                                         \
     int _bad = 0;                                                            \
     if (lookup_bad_addr((unsigned long)addr, size))                          \
@@ -790,7 +790,7 @@ extern void __store_deref_bad(void);
        : "r" (x), "i" (-EFAULT)                                \
        : "cc")
 
-#define k_deref(size, addr)                                            \
+#define deref(size, addr)                                              \
   ({                                                                   \
      int _bad = 0;                                                     \
      intptr_t _v=0;                                                    \
@@ -808,7 +808,7 @@ extern void __store_deref_bad(void);
      _v;                                                               \
    })
 
-#define k_store_deref(size, addr, value)                                       \
+#define store_deref(size, addr, value)                                 \
   ({                                                                   \
     int _bad=0;                                                                \
     if (lookup_bad_addr((unsigned long)addr, size))                    \
@@ -878,7 +878,7 @@ extern void __store_deref_bad(void);
                : "cc");                                        \
 })
 
-#define k_deref(size, addr)                                    \
+#define deref(size, addr)                                      \
 ({                                                             \
        u8 _b; u16 _w; u32 _l; u64 _q;                          \
        int _bad = 0;                                           \
@@ -915,7 +915,7 @@ extern void __store_deref_bad(void);
        _v;                                                     \
 })
 
-#define k_store_deref(size, addr, value)                          \
+#define store_deref(size, addr, value)                          \
 ({                                                              \
         int _bad = 0;                                           \
        int i;                                                  \
@@ -961,20 +961,14 @@ extern void __store_deref_bad(void);
 #else
 
 #define kread(ptr) \
-  ( (typeof(*(ptr))) k_deref(sizeof(*(ptr)), (ptr)) )
+  ( (typeof(*(ptr))) deref(sizeof(*(ptr)), (ptr)) )
 #define kwrite(ptr, value) \
-  ( k_store_deref(sizeof(*(ptr)), (ptr), (long)(typeof(*(ptr)))(value)) )
+  ( store_deref(sizeof(*(ptr)), (ptr), (long)(typeof(*(ptr)))(value)) )
 
 #endif
 
 #endif /* STAPCONF_PROBE_KERNEL */
 
-/* XXX: PR10601 */
-/* Perhaps this should use something like set_fs(USER_DS); k_deref() ; set_fs(KERNEL_DS) 
- * But then again, the addr_map protections do that already. */
-#define u_deref(a,b) k_deref(a,b)
-#define u_store_deref(a,b,c) k_store_deref(a,b,c)
-
 
 #define deref_string(dst, addr, maxbytes)                                    \
   ({                                                                         \
index cfd21bff42e4be862d57262404ab6c81b916271c..a5e2c7a020a95931b235018d03c554fb6cb1b159 100644 (file)
@@ -2403,7 +2403,6 @@ dwarf_var_expanding_visitor::visit_target_symbol (target_symbol *e)
       // PR10601: adapt to kernel-vs-userspace loc2c-runtime
       ec->code += "\n#define fetch_register " + string(q.has_process?"u":"k") + "_fetch_register\n";
       ec->code += "#define store_register " + string(q.has_process?"u":"k") + "_store_register\n";
-      ec->code += "#define deref " + string(q.has_process?"u":"k") + "_deref\n";
       
       if (q.has_return && (e->base_name == "$return"))
         {
@@ -2431,7 +2430,6 @@ dwarf_var_expanding_visitor::visit_target_symbol (target_symbol *e)
       // PR10601
       ec->code += "\n#undef fetch_register\n";
       ec->code += "\n#undef store_register\n";
-      ec->code += "\n#undef deref\n";
     }
   catch (const semantic_error& er)
     {
@@ -2756,7 +2754,6 @@ void dwarf_cast_expanding_visitor::visit_cast_op (cast_op* e)
   // PR10601: adapt to kernel-vs-userspace loc2c-runtime
   ec->code += "\n#define fetch_register " + string(userspace_p?"u":"k") + "_fetch_register\n";
   ec->code += "#define store_register " + string(userspace_p?"u":"k") + "_store_register\n";
-  ec->code += "#define deref " + string(userspace_p?"u":"k") + "_deref\n";
   
   ec->code += code;
 
@@ -2802,7 +2799,6 @@ void dwarf_cast_expanding_visitor::visit_cast_op (cast_op* e)
   // PR10601
   ec->code += "\n#undef fetch_register\n";
   ec->code += "\n#undef store_register\n";
-  ec->code += "\n#undef deref\n";
 
   s.functions[fdecl->name] = fdecl;
 
@@ -5790,7 +5786,6 @@ tracepoint_var_expanding_visitor::visit_target_symbol_arg (target_symbol* e)
       // PR10601: adapt to kernel-vs-userspace loc2c-runtime
       ec->code += "\n#define fetch_register k_fetch_register\n";
       ec->code += "#define store_register k_store_register\n";
-      ec->code += "#define deref k_deref\n";
      
       try
         {
@@ -5855,7 +5850,6 @@ tracepoint_var_expanding_visitor::visit_target_symbol_arg (target_symbol* e)
       // PR10601
       ec->code += "\n#undef fetch_register\n";
       ec->code += "\n#undef store_register\n";
-      ec->code += "\n#undef deref\n";
   
       dw.sess.functions[fdecl->name] = fdecl;
 
This page took 0.040815 seconds and 5 git commands to generate.