Make references to __{start,stop}___{markers,tracepoints} weak
[ust.git] / include / ust / marker.h
index 0c32586a58b6721708208fda7f4d469866168c5e..bbd9187a66ce4c043b5ab7fe83a38e73d49a067c 100644 (file)
@@ -309,18 +309,20 @@ struct lib {
        struct list_head list;
 };
 
-extern int marker_register_lib(struct marker *markers_start, struct marker_addr *marker_addr_start, int markers_count);
-
-#define MARKER_LIB                                                                             \
-extern struct marker __start___markers[] __attribute__((visibility("hidden")));                        \
-extern struct marker __stop___markers[] __attribute__((visibility("hidden")));                 \
-extern struct marker_addr __start___marker_addr[] __attribute__((visibility("hidden")));       \
-extern struct marker_addr __stop___marker_addr[] __attribute__((visibility("hidden")));                \
-                                                                                               \
-static void __attribute__((constructor)) __markers__init(void)                                 \
-{                                                                                              \
-       marker_register_lib(__start___markers, __start___marker_addr, (((long)__stop___markers)-((long)__start___markers))/sizeof(struct marker)); \
-}
+extern int marker_register_lib(struct marker *markers_start,
+                              struct marker_addr *marker_addr_start,
+                              int markers_count);
+
+#define MARKER_LIB                                                     \
+       extern struct marker __start___markers[] __attribute__((weak, visibility("hidden"))); \
+       extern struct marker __stop___markers[] __attribute__((weak, visibility("hidden"))); \
+       extern struct marker_addr __start___marker_addr[] __attribute__((weak, visibility("hidden"))); \
+       extern struct marker_addr __stop___marker_addr[] __attribute__((weak, visibility("hidden"))); \
+                                                                       \
+       static void __attribute__((constructor)) __markers__init(void)  \
+       {                                                               \
+               marker_register_lib(__start___markers, __start___marker_addr, (((long)__stop___markers)-((long)__start___markers))/sizeof(struct marker)); \
+       }
 
 extern void marker_set_new_marker_cb(void (*cb)(struct marker *));
 extern void init_markers(void);
This page took 0.023238 seconds and 4 git commands to generate.