diff options
author | ian <ian@FreeBSD.org> | 2015-05-23 20:53:19 +0000 |
---|---|---|
committer | ian <ian@FreeBSD.org> | 2015-05-23 20:53:19 +0000 |
commit | ce1bf49e72ea9be2396679cd9569beeec685e9c6 (patch) | |
tree | 64fe0aca2da6fc438b6b6bf1b2d7732c2491ad10 | |
parent | 142829f4c84994fedf96baad0c9a95317ffd241c (diff) | |
download | FreeBSD-src-ce1bf49e72ea9be2396679cd9569beeec685e9c6.zip FreeBSD-src-ce1bf49e72ea9be2396679cd9569beeec685e9c6.tar.gz |
MFC r268137, r268138:
Define a "__weak" macro for declaring symbols "weak".
Add support for empty data sets. Data set begin and end pointers
should resolve to "NULL" when not present. This is done by declaring
the data set begin and end symbols as "weak".
-rw-r--r-- | sys/sys/cdefs.h | 2 | ||||
-rw-r--r-- | sys/sys/linker_set.h | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h index 5d275db..abb38e6 100644 --- a/sys/sys/cdefs.h +++ b/sys/sys/cdefs.h @@ -213,7 +213,9 @@ #define __packed #define __aligned(x) #define __section(x) +#define __weak #else +#define __weak __attribute__((__weak__)) #if !__GNUC_PREREQ__(2, 5) && !defined(__INTEL_COMPILER) #define __dead2 #define __pure2 diff --git a/sys/sys/linker_set.h b/sys/sys/linker_set.h index 2edb55b..4fa663d 100644 --- a/sys/sys/linker_set.h +++ b/sys/sys/linker_set.h @@ -68,9 +68,9 @@ /* * Initialize before referring to a given linker set. */ -#define SET_DECLARE(set, ptype) \ - extern ptype *__CONCAT(__start_set_,set); \ - extern ptype *__CONCAT(__stop_set_,set) +#define SET_DECLARE(set, ptype) \ + extern ptype __weak *__CONCAT(__start_set_,set); \ + extern ptype __weak *__CONCAT(__stop_set_,set) #define SET_BEGIN(set) \ (&__CONCAT(__start_set_,set)) |