|
@@ -1,4 +1,7 @@
|
|
|
-/* Copyright (C) 1991,92,93,95,96,97,98,99,2000,2001 Free Software Foundation, Inc.
|
|
|
+/* Support macros for making weak and strong aliases for symbols,
|
|
|
+ and for using symbol sets and linker warnings with GNU ld.
|
|
|
+ Copyright (C) 1995-1998,2000-2003,2004,2005,2006
|
|
|
+ Free Software Foundation, Inc.
|
|
|
This file is part of the GNU C Library.
|
|
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
|
@@ -17,14 +20,38 @@
|
|
|
02111-1307 USA. */
|
|
|
|
|
|
#ifndef _LIBC_SYMBOLS_H
|
|
|
-#define _LIBC_SYMBOLS_H 1
|
|
|
+#define _LIBC_SYMBOLS_H 1
|
|
|
+
|
|
|
+/* This file's macros are included implicitly in the compilation of every
|
|
|
+ file in the C library by -imacros.
|
|
|
+
|
|
|
+ We include uClibc_arch_features.h which is defined by arch devs.
|
|
|
+ It should define for us the following symbols:
|
|
|
+
|
|
|
+ * HAVE_ASM_SET_DIRECTIVE if we have `.set B, A' instead of `A = B'.
|
|
|
+ * ASM_GLOBAL_DIRECTIVE with `.globl' or `.global'.
|
|
|
+ * ASM_TYPE_DIRECTIVE_PREFIX with `@' or `#' or whatever for .type,
|
|
|
+ or leave it undefined if there is no .type directive.
|
|
|
+ * HAVE_ELF if using ELF, which supports weak symbols using `.weak'.
|
|
|
+ * HAVE_ASM_WEAK_DIRECTIVE if we have weak symbols using `.weak'.
|
|
|
+ * HAVE_ASM_WEAKEXT_DIRECTIVE if we have weak symbols using `.weakext'.
|
|
|
+
|
|
|
+ */
|
|
|
|
|
|
#include <bits/uClibc_arch_features.h>
|
|
|
|
|
|
-#define _LIBC 1
|
|
|
+
|
|
|
+/* This is defined for the compilation of all C library code. features.h
|
|
|
+ tests this to avoid inclusion of stubs.h while compiling the library,
|
|
|
+ before stubs.h has been generated. Some library code that is shared
|
|
|
+ with other packages also tests this symbol to see if it is being
|
|
|
+ compiled as part of the C library. We must define this before including
|
|
|
+ config.h, because it makes some definitions conditional on whether libc
|
|
|
+ itself is being compiled, or just some generator program. */
|
|
|
+#define _LIBC 1
|
|
|
|
|
|
/* Enable declarations of GNU extensions, since we are compiling them. */
|
|
|
-#define _GNU_SOURCE 1
|
|
|
+#define _GNU_SOURCE 1
|
|
|
|
|
|
/* Prepare for the case that `__builtin_expect' is not available. */
|
|
|
#if __GNUC__ == 2 && __GNUC_MINOR__ < 96
|
|
@@ -128,13 +155,13 @@
|
|
|
# define _strong_alias(name, aliasname) \
|
|
|
extern __typeof (name) aliasname __attribute__ ((alias (#name)));
|
|
|
|
|
|
-# ifdef HAVE_WEAK_SYMBOLS
|
|
|
-
|
|
|
/* This comes between the return type and function name in
|
|
|
a function definition to make that definition weak. */
|
|
|
# define weak_function __attribute__ ((weak))
|
|
|
# define weak_const_function __attribute__ ((weak, __const__))
|
|
|
|
|
|
+# ifdef HAVE_WEAK_SYMBOLS
|
|
|
+
|
|
|
/* Define ALIASNAME as a weak alias for NAME.
|
|
|
If weak aliases are not available, this defines a strong alias. */
|
|
|
# define weak_alias(name, aliasname) _weak_alias (name, aliasname)
|
|
@@ -147,9 +174,6 @@
|
|
|
|
|
|
# else
|
|
|
|
|
|
-# define weak_function /* empty */
|
|
|
-# define weak_const_function /* empty */
|
|
|
-
|
|
|
# define weak_alias(name, aliasname) strong_alias(name, aliasname)
|
|
|
# define weak_extern(symbol) /* Nothing. */
|
|
|
|
|
@@ -235,7 +259,7 @@
|
|
|
functions not exported) a bit faster by using a different calling
|
|
|
convention. */
|
|
|
#ifndef internal_function
|
|
|
-# define internal_function /* empty */
|
|
|
+# define internal_function /* empty */
|
|
|
#endif
|
|
|
|
|
|
/* We want the .gnu.warning.SYMBOL section to be unallocated. */
|