Browse Source

autodata: make note about not being generally useful for shared libraries.

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>
Rusty Russell 13 years ago
parent
commit
1cf6022662
2 changed files with 7 additions and 4 deletions
  1. 3 0
      ccan/autodata/_info
  2. 4 4
      ccan/autodata/autodata.h

+ 3 - 0
ccan/autodata/_info

@@ -8,6 +8,9 @@
  * together at runtime to form tables.  This is often used in place of
  * together at runtime to form tables.  This is often used in place of
  * having a central registration function or table.
  * 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
  * License: BSD-MIT
  *
  *
  * Example:
  * Example:

+ 4 - 4
ccan/autodata/autodata.h

@@ -23,7 +23,7 @@
  */
  */
 #define AUTODATA_TYPE(name, type)					\
 #define AUTODATA_TYPE(name, type)					\
 	typedef type autodata_##name##_;				\
 	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
  * AUTODATA - add a pointer to this autodata set
@@ -42,7 +42,7 @@
  */
  */
 #define AUTODATA(name, ptr) \
 #define AUTODATA(name, ptr) \
 	static const autodata_##name##_ *NEEDED		\
 	static const autodata_##name##_ *NEEDED		\
-	__attribute__((section("autodata_" #name)))	\
+	__attribute__((section("xautodata_" #name)))	\
 	AUTODATA_VAR_(name, __LINE__) = (ptr);
 	AUTODATA_VAR_(name, __LINE__) = (ptr);
 
 
 /**
 /**
@@ -68,8 +68,8 @@
  */
  */
 #define autodata_get(name, nump)					\
 #define autodata_get(name, nump)					\
 	((autodata_##name##_ **)					\
 	((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 */
 #endif /* HAVE_SECTION_START_STOP */
 
 
 /**
 /**