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. */
-#define _LIBC
+#define _LIBC 1
+/*
+\f
+*/
+
+#ifndef ASSEMBLER
+/* Define the macro `_' for conveniently marking translatable strings
+ in the libc source code. */
+#include <libintl.h>
+extern const char _libc_intl_domainname[];
+#ifdef dgettext
+/* This is defined as an optimizing macro, so use it. */
+#define _(msgid) dgettext (_libc_intl_domainname, (msgid))
+#else
+/* Be sure to use only the __ name when `dgettext' is a plain function
+ instead of an optimizing macro. */
+#define _(msgid) __dgettext (_libc_intl_domainname, (msgid))
+#endif
+#endif
+/*
+\f
+*/
/* The symbols in all the user (non-_) macros are C symbols. Predefined
should be HAVE_WEAK_SYMBOLS and/or HAVE_ELF and/or HAVE_GNU_LD.
HAVE_WEAK_SYMBOLS is implied by the other two. HAVE_GNU_LD without
#else
#define link_warning(symbol, msg) \
asm(".stabs \"" msg "\",30,0,0,0\n" \
- ".stabs \"" __SYMBOL_PREFIX #symbol \",1,0,0,0\n");
+ ".stabs \"" __SYMBOL_PREFIX #symbol "\",1,0,0,0\n");
#endif
#else
/* We will never be heard; they will all die horribly. */
/* Declare SET for use in this module, if defined in another module. */
#define symbol_set_declare(set) \
- extern void *const __start_##set, *const __stop_##set;
+ extern void *const __start_##set __attribute__ ((__weak__)); \
+ extern void *const __stop_##set __attribute__ ((__weak__));
/* Return a pointer (void *const *) to the first element of SET. */
#define symbol_set_first_element(set) (&__start_##set)