summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2015-05-23 20:53:19 +0000
committerian <ian@FreeBSD.org>2015-05-23 20:53:19 +0000
commitce1bf49e72ea9be2396679cd9569beeec685e9c6 (patch)
tree64fe0aca2da6fc438b6b6bf1b2d7732c2491ad10
parent142829f4c84994fedf96baad0c9a95317ffd241c (diff)
downloadFreeBSD-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.h2
-rw-r--r--sys/sys/linker_set.h6
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))
OpenPOWER on IntegriCloud