autodata: make note about not being generally useful for shared libraries.
authorRusty Russell <rusty@rustcorp.com.au>
Sun, 17 Mar 2013 03:56:31 +0000 (14:26 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Sun, 17 Mar 2013 03:56:31 +0000 (14:26 +1030)
If you have sections, it might still work for some cases though: on x86
Ubuntu it worked once I changed the section name from autodata to xautodata.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
ccan/autodata/_info
ccan/autodata/autodata.h

index 11b6e16dcc183c0d093c6bed66ff71adc7b01f23..c9cf266391d8422a3a64443bee4da769bd6a0cd9 100644 (file)
@@ -8,6 +8,9 @@
  * together at runtime to form tables.  This is often used in place of
  * having a central registration function or table.
  *
+ * Note that this technique does not work in general for shared libaries,
+ * only for code compiled into a binary.
+ *
  * License: BSD-MIT
  *
  * Example:
index c9d774b982ee74256eb898917ed365ba1c7ac62d..3b1d01b4a83c1ec31d8529784e27f77f0d702962 100644 (file)
@@ -23,7 +23,7 @@
  */
 #define AUTODATA_TYPE(name, type)                                      \
        typedef type autodata_##name##_;                                \
-       extern type *__start_autodata_##name[], *__stop_autodata_##name[]
+       extern type *__start_xautodata_##name[], *__stop_xautodata_##name[]
 
 /**
  * AUTODATA - add a pointer to this autodata set
@@ -42,7 +42,7 @@
  */
 #define AUTODATA(name, ptr) \
        static const autodata_##name##_ *NEEDED         \
-       __attribute__((section("autodata_" #name)))     \
+       __attribute__((section("xautodata_" #name)))    \
        AUTODATA_VAR_(name, __LINE__) = (ptr);
 
 /**
@@ -68,8 +68,8 @@
  */
 #define autodata_get(name, nump)                                       \
        ((autodata_##name##_ **)                                        \
-        autodata_get_section(__start_autodata_##name,                  \
-                             __stop_autodata_##name, (nump)))
+        autodata_get_section(__start_xautodata_##name,                 \
+                             __stop_xautodata_##name, (nump)))
 #endif /* HAVE_SECTION_START_STOP */
 
 /**