summaryrefslogtreecommitdiffstats
path: root/src/include/compiler.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/compiler.h')
-rw-r--r--src/include/compiler.h23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/include/compiler.h b/src/include/compiler.h
index e55592456..132793b5d 100644
--- a/src/include/compiler.h
+++ b/src/include/compiler.h
@@ -60,12 +60,15 @@
/** Provide a symbol within this object file */
#ifdef ASSEMBLY
#define PROVIDE_SYMBOL( _sym ) \
+ .section ".provided", "a", @nobits ; \
+ .hidden _sym ; \
.globl _sym ; \
- .comm _sym, 0
+ _sym: ; \
+ .previous
#else /* ASSEMBLY */
#define PROVIDE_SYMBOL( _sym ) \
- extern char _sym[]; \
- char _sym[0]
+ char _sym[0] \
+ __attribute__ (( section ( ".provided" ) ))
#endif /* ASSEMBLY */
/** Require a symbol within this object file
@@ -652,7 +655,7 @@ int __debug_disable;
* be in the public domain.
*/
#define FILE_LICENCE_PUBLIC_DOMAIN \
- PROVIDE_SYMBOL ( __licence_public_domain )
+ PROVIDE_SYMBOL ( PREFIX_OBJECT ( __licence__public_domain__ ) )
/** Declare a file as being under version 2 (or later) of the GNU GPL
*
@@ -661,7 +664,7 @@ int __debug_disable;
* (at your option) any later version".
*/
#define FILE_LICENCE_GPL2_OR_LATER \
- PROVIDE_SYMBOL ( __licence_gpl2_or_later )
+ PROVIDE_SYMBOL ( PREFIX_OBJECT ( __licence__gpl2_or_later__ ) )
/** Declare a file as being under version 2 of the GNU GPL
*
@@ -670,7 +673,7 @@ int __debug_disable;
* "or, at your option, any later version" clause.
*/
#define FILE_LICENCE_GPL2_ONLY \
- PROVIDE_SYMBOL ( __licence_gpl2_only )
+ PROVIDE_SYMBOL ( PREFIX_OBJECT ( __licence__gpl2_only__ ) )
/** Declare a file as being under any version of the GNU GPL
*
@@ -682,7 +685,7 @@ int __debug_disable;
* version ever published by the Free Software Foundation".
*/
#define FILE_LICENCE_GPL_ANY \
- PROVIDE_SYMBOL ( __licence_gpl_any )
+ PROVIDE_SYMBOL ( PREFIX_OBJECT ( __licence__gpl_any__ ) )
/** Declare a file as being under the three-clause BSD licence
*
@@ -707,7 +710,7 @@ int __debug_disable;
* functionally equivalent to the standard three-clause BSD licence.
*/
#define FILE_LICENCE_BSD3 \
- PROVIDE_SYMBOL ( __licence_bsd3 )
+ PROVIDE_SYMBOL ( PREFIX_OBJECT ( __licence__bsd3__ ) )
/** Declare a file as being under the two-clause BSD licence
*
@@ -728,7 +731,7 @@ int __debug_disable;
* functionally equivalent to the standard two-clause BSD licence.
*/
#define FILE_LICENCE_BSD2 \
- PROVIDE_SYMBOL ( __licence_bsd2 )
+ PROVIDE_SYMBOL ( PREFIX_OBJECT ( __licence__bsd2__ ) )
/** Declare a file as being under the one-clause MIT-style licence
*
@@ -738,7 +741,7 @@ int __debug_disable;
* permission notice appear in all copies.
*/
#define FILE_LICENCE_MIT \
- PROVIDE_SYMBOL ( __licence_mit )
+ PROVIDE_SYMBOL ( PREFIX_OBJECT ( __licence__mit__ ) )
/** Declare a particular licence as applying to a file */
#define FILE_LICENCE( _licence ) FILE_LICENCE_ ## _licence