]> sourceware.org Git - systemtap.git/commitdiff
Avoid a uprobe break setting problem by avoiding 'nop 0' on x86.
authorStan Cox <scox@redhat.com>
Thu, 23 Apr 2009 20:43:44 +0000 (16:43 -0400)
committerStan Cox <scox@redhat.com>
Thu, 23 Apr 2009 20:43:44 +0000 (16:43 -0400)
* sdt.h (STAP_NOP): New.
(STAP_PROBE): Use it.

includes/sys/sdt.h

index c224230347293e2a7ce964236f5a528d44e92289..f89b736a9616df39d1aeed0a236d8dd448cbf9b0 100644 (file)
 #define STAP_UNINLINE_LABEL(label) \
   __extension__ static volatile long labelval  __attribute__ ((unused)) = (long) &&label
 
+#if defined(__x86_64__) || defined(__i386__)
+#define STAP_NOP "\tnop "
+#else
+#define STAP_NOP "\tnop 0 "
+#endif
+
 #define STAP_PROBE_(probe)                     \
 do { \
   STAP_PROBE_DATA(probe);      \
   __asm__ volatile ("2:\n"     \
-                   "\tnop 0"); \
+                   STAP_NOP);  \
  } while (0)
 
 #define STAP_PROBE1_(probe,label,parm1)                \
@@ -73,7 +79,7 @@ do { \
   STAP_PROBE_DATA(probe);                                              \
   label:                                               \
   __asm__ volatile ("2:\n" \
-                   "\tnop 0 /* %0 */" :: "g"(arg1));   \
+                   STAP_NOP "/* %0 */" :: "g"(arg1));  \
  } while (0)
 
 #define STAP_PROBE2_(probe,label,parm1,parm2)  \
@@ -85,7 +91,7 @@ do { \
   STAP_PROBE_DATA(probe);                                              \
   label:                                               \
   __asm__ volatile ("2:\n"                                             \
-                   "\tnop 0 /* %0 %1 */" :: "g"(arg1), "g"(arg2));     \
+                   STAP_NOP "/* %0 %1 */" :: "g"(arg1), "g"(arg2));    \
 } while (0)
 
 #define STAP_PROBE3_(probe,label,parm1,parm2,parm3)    \
@@ -98,7 +104,7 @@ do { \
   STAP_PROBE_DATA(probe);                                              \
    label:                                              \
   __asm__ volatile ("2:\n"                                             \
-                   "\tnop 0 /* %0 %1 %2 */" :: "g"(arg1), "g"(arg2), "g"(arg3)); \
+                   STAP_NOP "/* %0 %1 %2 */" :: "g"(arg1), "g"(arg2), "g"(arg3)); \
 } while (0)
 
 #define STAP_PROBE4_(probe,label,parm1,parm2,parm3,parm4)      \
@@ -112,7 +118,7 @@ do { \
   STAP_PROBE_DATA(probe);                                              \
   label:                                               \
   __asm__ volatile ("2:\n"                                             \
-                   "\tnop 0 /* %0 %1 %2 %3 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4)); \
+                   STAP_NOP "/* %0 %1 %2 %3 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4)); \
 } while (0)
 
 #define STAP_PROBE5_(probe,label,parm1,parm2,parm3,parm4,parm5)        \
@@ -127,7 +133,7 @@ do  { \
   STAP_PROBE_DATA(probe);                                              \
   label:                                               \
   __asm__ volatile ("2:\n"                                             \
-                   "\tnop 0 /* %0 %1 %2 %3 %4 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5)); \
+                   STAP_NOP "/* %0 %1 %2 %3 %4 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5)); \
 } while (0)
 
 #define STAP_PROBE6_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6)  \
@@ -143,7 +149,7 @@ do { \
   STAP_PROBE_DATA(probe);                                              \
   label:                                               \
   __asm__ volatile ("2:\n"                                             \
-                   "\tnop 0 /* %0 %1 %2 %3 %4 %5 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5), "g"(arg6)); \
+                   STAP_NOP "/* %0 %1 %2 %3 %4 %5 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5), "g"(arg6)); \
 } while (0)
 
 #define STAP_PROBE7_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7)    \
@@ -160,7 +166,7 @@ do  { \
   STAP_PROBE_DATA(probe);                                              \
    label:                                              \
   __asm__ volatile ("2:\n"                                             \
-                   "\tnop 0 /* %0 %1 %2 %3 %4 %5 %6 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5), "g"(arg6), "g"(arg7)); \
+                   STAP_NOP "/* %0 %1 %2 %3 %4 %5 %6 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5), "g"(arg6), "g"(arg7)); \
 } while (0)
 
 #define STAP_PROBE8_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8) \
@@ -178,7 +184,7 @@ do { \
   STAP_PROBE_DATA(probe);                                              \
    label:                                              \
   __asm__ volatile ("2:\n"                                             \
-                   "\tnop 0 /* %0 %1 %2 %3 %4 %5 %6 %7 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5), "g"(arg6), "g"(arg7), "g"(arg8)); \
+                   STAP_NOP "/* %0 %1 %2 %3 %4 %5 %6 %7 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5), "g"(arg6), "g"(arg7), "g"(arg8)); \
 } while (0)
 
 #define STAP_PROBE9_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9) \
@@ -197,7 +203,7 @@ do { \
   STAP_PROBE_DATA(probe);                                              \
   label:                                               \
   __asm__ volatile ("2:\n"                                             \
-                   "\tnop 0 /* %0 %1 %2 %3 %4 %5 %6 %7 %8 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5), "g"(arg6), "g"(arg7), "g"(arg8), "g"(arg9)); \
+                   STAP_NOP "/* %0 %1 %2 %3 %4 %5 %6 %7 %8 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5), "g"(arg6), "g"(arg7), "g"(arg8), "g"(arg9)); \
 } while (0)
 
 #define STAP_PROBE10_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10) \
@@ -217,7 +223,7 @@ do { \
   STAP_PROBE_DATA(probe);                                              \
   label:                                               \
   __asm__ volatile ("2:\n"                                             \
-                   "\tnop 0 /* %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5), "g"(arg6), "g"(arg7), "g"(arg8), "g"(arg9), "g"(arg10)); \
+                   STAP_NOP "/* %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5), "g"(arg6), "g"(arg7), "g"(arg8), "g"(arg9), "g"(arg10)); \
 } while (0)
 
 #define STAP_PROBE(provider,probe)     \
This page took 0.029111 seconds and 5 git commands to generate.