Commit 1cf60226 authored by Rusty Russell's avatar Rusty Russell

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: default avatarRusty Russell <rusty@rustcorp.com.au>
parent b5f5d105
...@@ -8,6 +8,9 @@ ...@@ -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:
......
...@@ -23,7 +23,7 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -68,8 +68,8 @@
*/ */
#define autodata_get(name, nump) \ #define autodata_get(name, nump) \
((autodata_##name##_ **) \ ((autodata_##name##_ **) \
autodata_get_section(__start_autodata_##name, \ autodata_get_section(__start_xautodata_##name, \
__stop_autodata_##name, (nump))) __stop_xautodata_##name, (nump)))
#endif /* HAVE_SECTION_START_STOP */ #endif /* HAVE_SECTION_START_STOP */
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment