Browse Source

move a bunch of arch-specific checks out of common files and into an arch specific header file to make porting/updates a lot easier

Mike Frysinger 19 years ago
parent
commit
537494b031
34 changed files with 773 additions and 52 deletions
  1. 1 0
      include/features.h
  2. 11 0
      include/libc-internal.h
  3. 1 1
      ldso/include/dl-syscall.h
  4. 0 2
      ldso/ldso/mips/dl-syscalls.h
  5. 0 2
      ldso/ldso/powerpc/dl-syscalls.h
  6. 0 2
      ldso/ldso/sh/dl-syscalls.h
  7. 0 2
      ldso/ldso/sparc/dl-syscalls.h
  8. 0 2
      ldso/ldso/x86_64/dl-syscalls.h
  9. 4 32
      libc/stdlib/abort.c
  10. 33 0
      libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h
  11. 33 0
      libc/sysdeps/linux/arm/bits/uClibc_arch_features.h
  12. 34 0
      libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h
  13. 36 0
      libc/sysdeps/linux/common/bits/uClibc_arch_features.h
  14. 2 5
      libc/sysdeps/linux/common/create_module.c
  15. 2 2
      libc/sysdeps/linux/common/ftruncate64.c
  16. 2 2
      libc/sysdeps/linux/common/truncate64.c
  17. 34 0
      libc/sysdeps/linux/cris/bits/uClibc_arch_features.h
  18. 34 0
      libc/sysdeps/linux/e1/bits/uClibc_arch_features.h
  19. 34 0
      libc/sysdeps/linux/frv/bits/uClibc_arch_features.h
  20. 34 0
      libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h
  21. 33 0
      libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h
  22. 33 0
      libc/sysdeps/linux/i386/bits/uClibc_arch_features.h
  23. 34 0
      libc/sysdeps/linux/i960/bits/uClibc_arch_features.h
  24. 37 0
      libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h
  25. 34 0
      libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h
  26. 33 0
      libc/sysdeps/linux/mips/bits/uClibc_arch_features.h
  27. 34 0
      libc/sysdeps/linux/nios/bits/uClibc_arch_features.h
  28. 34 0
      libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h
  29. 33 0
      libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h
  30. 39 0
      libc/sysdeps/linux/sh/bits/uClibc_arch_features.h
  31. 34 0
      libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h
  32. 33 0
      libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h
  33. 34 0
      libc/sysdeps/linux/v850/bits/uClibc_arch_features.h
  34. 33 0
      libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h

+ 1 - 0
include/features.h

@@ -293,6 +293,7 @@
 #define __need_uClibc_config_h
 #include <bits/uClibc_config.h>
 #undef __need_uClibc_config_h
+#include <bits/uClibc_arch_features.h>
 
 #ifdef __UCLIBC_HAS_WCHAR__
 /* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) / Unicode 3.0.  */

+ 11 - 0
include/libc-internal.h

@@ -21,6 +21,17 @@
 
 #include <features.h>
 
+#ifdef __UCLIBC_NO_UNDERSCORES__
+# define NO_UNDERSCORES
+#else
+# undef NO_UNDERSCORES
+#endif
+#ifdef __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+# define HAVE_ASM_SET_DIRECTIVE
+#else
+# undef HAVE_ASM_SET_DIRECTIVE
+#endif
+
 #undef __SYMBOL_PREFIX
 #ifndef __SYMBOL_PREFIX
 # ifdef NO_UNDERSCORES

+ 1 - 1
ldso/include/dl-syscall.h

@@ -119,7 +119,7 @@ static inline _syscall2(int, _dl_gettimeofday, struct timeval *, tv, struct time
 #endif
 
 #ifdef __NR_mmap
-#ifdef MMAP_HAS_6_ARGS
+#ifdef __UCLIBC_MMAP_HAS_6_ARGS__
 #define __NR__dl_mmap __NR_mmap
 static inline _syscall6(void *, _dl_mmap, void *, start, size_t, length,
 		int, prot, int, flags, int, fd, off_t, offset);

+ 0 - 2
ldso/ldso/mips/dl-syscalls.h

@@ -4,5 +4,3 @@
 extern int _dl_errno;
 #undef __set_errno
 #define __set_errno(X) {(_dl_errno) = (X);}
-
-#define MMAP_HAS_6_ARGS

+ 0 - 2
ldso/ldso/powerpc/dl-syscalls.h

@@ -4,5 +4,3 @@
 extern int _dl_errno;
 #undef __set_errno
 #define __set_errno(X) {(_dl_errno) = (X);}
-
-#define MMAP_HAS_6_ARGS

+ 0 - 2
ldso/ldso/sh/dl-syscalls.h

@@ -4,5 +4,3 @@
 extern int _dl_errno;
 #undef __set_errno
 #define __set_errno(X) {(_dl_errno) = (X);}
-
-#define MMAP_HAS_6_ARGS

+ 0 - 2
ldso/ldso/sparc/dl-syscalls.h

@@ -6,8 +6,6 @@
  *       sysdeps/linux/sparc/bits/syscalls.h at some point ...
  */
 
-#define MMAP_HAS_6_ARGS
-
 #define _SYSCALL_H
 #include <bits/sysnum.h>
 

+ 0 - 2
ldso/ldso/x86_64/dl-syscalls.h

@@ -4,5 +4,3 @@
 extern int _dl_errno;
 #undef __set_errno
 #define __set_errno(X) {(_dl_errno) = (X);}
-
-#define MMAP_HAS_6_ARGS

+ 4 - 32
libc/stdlib/abort.c

@@ -37,39 +37,11 @@ libc_hidden_proto(raise)
 libc_hidden_proto(_exit)
 
 /* Our last ditch effort to commit suicide */
-#if defined(__alpha__)
-#define ABORT_INSTRUCTION asm ("call_pal 0")
-#elif defined(__arm__)
-#define ABORT_INSTRUCTION asm ("bl abort")
-#elif defined(__hppa__)
-#define ABORT_INSTRUCTION asm ("iitlbp %r0,(%sr0,%r0)")
-#elif defined(__i386__)
-#define ABORT_INSTRUCTION asm ("hlt")
-#elif defined(__ia64__)
-#define ABORT_INSTRUCTION asm ("break 0")
-#elif defined(__m68k__)
-#define ABORT_INSTRUCTION asm ("illegal")
-#elif defined(__mc68000__)
-#define ABORT_INSTRUCTION asm (".long 0xffffffff")
-#elif defined(__mips__)
-#define ABORT_INSTRUCTION asm ("break 255")
-#elif defined(__powerpc__)
-#define ABORT_INSTRUCTION asm (".long 0")
-#elif defined(__s390__)
-#define ABORT_INSTRUCTION asm (".word 0")
-#elif defined(__sparc__)
-#define ABORT_INSTRUCTION asm ("unimp 0xf00")
-#elif defined(__SH5__)
-#define ABORT_INSTRUCTION asm ("movi 0x10, r9; shori 0xff, r9; trapa r9")
-#elif defined(__sh2__)
-#define ABORT_INSTRUCTION asm ("trapa #32")
-#elif defined(__sh__)
-#define ABORT_INSTRUCTION asm ("trapa #0xff")
-#elif defined(__x86_64__)
-#define ABORT_INSTRUCTION asm ("hlt")
+#ifdef __UCLIBC_ABORT_INSTRUCTION__
+# define ABORT_INSTRUCTION asm(__UCLIBC_ABORT_INSTRUCTION__)
 #else
-#define ABORT_INSTRUCTION
-#warning no abort instruction defined for your arch
+# define ABORT_INSTRUCTION
+# warning "no abort instruction defined for your arch"
 #endif
 
 #ifdef __UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__

+ 33 - 0
libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h

@@ -0,0 +1,33 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+#define __UCLIBC_ABORT_INSTRUCTION__ "call_pal 0"
+
+/* can your target use syscall6() for mmap ? */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#define __UCLIBC_SLIGHTLY_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 33 - 0
libc/sysdeps/linux/arm/bits/uClibc_arch_features.h

@@ -0,0 +1,33 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+#define __UCLIBC_ABORT_INSTRUCTION__ "bl abort"
+
+/* can your target use syscall6() for mmap ? */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#define __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 34 - 0
libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h

@@ -0,0 +1,34 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+/*#define __UCLIBC_ABORT_INSTRUCTION__ "asm instruction"*/
+#undef __UCLIBC_ABORT_INSTRUCTION__
+
+/* can your target use syscall6() for mmap ? */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 36 - 0
libc/sysdeps/linux/common/bits/uClibc_arch_features.h

@@ -0,0 +1,36 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+#error "You should copy this to your arch/bits/ dir and customize"
+
+/* instruction used when calling abort() to kill yourself */
+/*#define __UCLIBC_ABORT_INSTRUCTION__ "asm instruction"*/
+#undef __UCLIBC_ABORT_INSTRUCTION__
+
+/* can your target use syscall6() for mmap ? */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 2 - 5
libc/sysdeps/linux/common/create_module.c

@@ -13,11 +13,8 @@
 
 #ifdef __NR_create_module
 
-#if defined(__i386__) || defined(__m68k__) || defined(__arm__) || defined(__thumb__) || defined(__cris__) || defined(__i960__)
+#if defined(__UCLIBC_BROKEN_CREATE_MODULE__)
 # define __NR___create_module  __NR_create_module
-# ifdef __STR_NR_create_module
-#  define __STR_NR___create_module  __STR_NR_create_module
-# endif
 static inline _syscall2(long, __create_module, const char *, name, size_t, size);
 /* By checking the value of errno, we know if we have been fooled 
  * by the syscall2 macro making a very high address look like a 
@@ -33,7 +30,7 @@ unsigned long create_module(const char *name, size_t size)
 	}
 	return ret;
 }
-#elif defined(__alpha__)
+#elif defined(__UCLIBC_SLIGHTLY_BROKEN_CREATE_MODULE__)
 # define __NR___create_module  __NR_create_module
 /* Alpha doesn't have the same problem, exactly, but a bug in older
    kernels fails to clear the error flag.  Clear it here explicitly.  */

+ 2 - 2
libc/sysdeps/linux/common/ftruncate64.c

@@ -35,7 +35,7 @@ _syscall2(int, ftruncate64, int, fd, __off64_t, length);
 #   ifndef INLINE_SYSCALL
 #    define INLINE_SYSCALL(name, nr, args...) __syscall_ftruncate64 (args)
 #    define __NR___syscall_ftruncate64 __NR_ftruncate64
-#    if defined(__powerpc__) || defined(__mips__)
+#    if defined(__UCLIBC_TRUNCATE64_HAS_4_ARGS__)
 static inline _syscall4(int, __syscall_ftruncate64, int, fd, uint32_t, pad,
 	unsigned long, high_length, unsigned long, low_length);
 #    else
@@ -49,7 +49,7 @@ int ftruncate64 (int fd, __off64_t length)
 {
     uint32_t low = length & 0xffffffff;
     uint32_t high = length >> 32;
-#   if defined(__powerpc__) || defined(__mips__)
+#   if defined(__UCLIBC_TRUNCATE64_HAS_4_ARGS__)
     return INLINE_SYSCALL(ftruncate64,
 	    4, fd, 0, __LONG_LONG_PAIR (high, low));
 #   else

+ 2 - 2
libc/sysdeps/linux/common/truncate64.c

@@ -32,7 +32,7 @@ _syscall2(int, truncate64, const char *, path, __off64_t, length);
 #ifndef INLINE_SYSCALL
 #define INLINE_SYSCALL(name, nr, args...) __syscall_truncate64 (args)
 #define __NR___syscall_truncate64 __NR_truncate64
-#if defined(__powerpc__) || defined(__mips__)
+#if defined(__UCLIBC_TRUNCATE64_HAS_4_ARGS__)
 static inline _syscall4(int, __syscall_truncate64, const char *, path,
 	uint32_t, pad, unsigned long, high_length, unsigned long, low_length);
 #else
@@ -47,7 +47,7 @@ int truncate64 (const char * path, __off64_t length)
 {
     uint32_t low = length & 0xffffffff;
     uint32_t high = length >> 32;
-#if defined(__powerpc__) || defined(__mips__)
+#if defined(__UCLIBC_TRUNCATE64_HAS_4_ARGS__)
     return INLINE_SYSCALL(truncate64, 4, path, 0,
 	    __LONG_LONG_PAIR (high, low));
 #else

+ 34 - 0
libc/sysdeps/linux/cris/bits/uClibc_arch_features.h

@@ -0,0 +1,34 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+/*#define __UCLIBC_ABORT_INSTRUCTION__ "asm instruction"*/
+#undef __UCLIBC_ABORT_INSTRUCTION__
+
+/* can your target use syscall6() for mmap ? */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#define __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 34 - 0
libc/sysdeps/linux/e1/bits/uClibc_arch_features.h

@@ -0,0 +1,34 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+/*#define __UCLIBC_ABORT_INSTRUCTION__ "asm instruction"*/
+#undef __UCLIBC_ABORT_INSTRUCTION__
+
+/* can your target use syscall6() for mmap ? */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 34 - 0
libc/sysdeps/linux/frv/bits/uClibc_arch_features.h

@@ -0,0 +1,34 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+/*#define __UCLIBC_ABORT_INSTRUCTION__ "asm instruction"*/
+#undef __UCLIBC_ABORT_INSTRUCTION__
+
+/* can your target use syscall6() for mmap ? */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 34 - 0
libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h

@@ -0,0 +1,34 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+/*#define __UCLIBC_ABORT_INSTRUCTION__ "asm instruction"*/
+#undef __UCLIBC_ABORT_INSTRUCTION__
+
+/* can your target use syscall6() for mmap ? */
+#define __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 33 - 0
libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h

@@ -0,0 +1,33 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+#define __UCLIBC_ABORT_INSTRUCTION__ "iitlbp %r0,(%sr0,%r0)"
+
+/* can your target use syscall6() for mmap ? */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 33 - 0
libc/sysdeps/linux/i386/bits/uClibc_arch_features.h

@@ -0,0 +1,33 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+#define __UCLIBC_ABORT_INSTRUCTION__ "hlt"
+
+/* can your target use syscall6() for mmap ? */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#define __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 34 - 0
libc/sysdeps/linux/i960/bits/uClibc_arch_features.h

@@ -0,0 +1,34 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+/*#define __UCLIBC_ABORT_INSTRUCTION__ "asm instruction"*/
+#undef __UCLIBC_ABORT_INSTRUCTION__
+
+/* can your target use syscall6() for mmap ? */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#define __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 37 - 0
libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h

@@ -0,0 +1,37 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+#if defined(__mc68000__)
+# define __UCLIBC_ABORT_INSTRUCTION__ ".long 0xffffffff"
+#else /* defined(__m68k__) */
+# define __UCLIBC_ABORT_INSTRUCTION__ "illegal"
+#endif
+
+/* can your target use syscall6() for mmap ? */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#define __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 34 - 0
libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h

@@ -0,0 +1,34 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+/*#define __UCLIBC_ABORT_INSTRUCTION__ "asm instruction"*/
+#undef __UCLIBC_ABORT_INSTRUCTION__
+
+/* can your target use syscall6() for mmap ? */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 33 - 0
libc/sysdeps/linux/mips/bits/uClibc_arch_features.h

@@ -0,0 +1,33 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+#define __UCLIBC_ABORT_INSTRUCTION__ "break 255"
+
+/* can your target use syscall6() for mmap ? */
+#define __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#define __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 34 - 0
libc/sysdeps/linux/nios/bits/uClibc_arch_features.h

@@ -0,0 +1,34 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+/*#define __UCLIBC_ABORT_INSTRUCTION__ "asm instruction"*/
+#undef __UCLIBC_ABORT_INSTRUCTION__
+
+/* can your target use syscall6() for mmap ? */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 34 - 0
libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h

@@ -0,0 +1,34 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+/*#define __UCLIBC_ABORT_INSTRUCTION__ "asm instruction"*/
+#undef __UCLIBC_ABORT_INSTRUCTION__
+
+/* can your target use syscall6() for mmap ? */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 33 - 0
libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h

@@ -0,0 +1,33 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+#define __UCLIBC_ABORT_INSTRUCTION__ ".long 0"
+
+/* can your target use syscall6() for mmap ? */
+#define __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#define __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 39 - 0
libc/sysdeps/linux/sh/bits/uClibc_arch_features.h

@@ -0,0 +1,39 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+#if defined(__SH5__)
+# define __UCLIBC_ABORT_INSTRUCTION__ "movi 0x10, r9; shori 0xff, r9; trapa r9"
+#elif defined(__sh2__)
+# define __UCLIBC_ABORT_INSTRUCTION__ "trapa #32"
+#else /* defined(__sh__) */
+# define __UCLIBC_ABORT_INSTRUCTION__ "trapa #0xff"
+#endif
+
+/* can your target use syscall6() for mmap ? */
+#define __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 34 - 0
libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h

@@ -0,0 +1,34 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+/*#define __UCLIBC_ABORT_INSTRUCTION__ "asm instruction"*/
+#undef __UCLIBC_ABORT_INSTRUCTION__
+
+/* can your target use syscall6() for mmap ? */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 33 - 0
libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h

@@ -0,0 +1,33 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+#define __UCLIBC_ABORT_INSTRUCTION__ "unimp 0xf00"
+
+/* can your target use syscall6() for mmap ? */
+#define __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 34 - 0
libc/sysdeps/linux/v850/bits/uClibc_arch_features.h

@@ -0,0 +1,34 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+/*#define __UCLIBC_ABORT_INSTRUCTION__ "asm instruction"*/
+#undef __UCLIBC_ABORT_INSTRUCTION__
+
+/* can your target use syscall6() for mmap ? */
+#undef __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */

+ 33 - 0
libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h

@@ -0,0 +1,33 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+#define __UCLIBC_ABORT_INSTRUCTION__ "hlt"
+
+/* can your target use syscall6() for mmap ? */
+#define __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* shouldn't need to change these ... */
+#define __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+#define __UCLIBC_ASM_TYPE_DIRECTIVE_PREFIX__
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+#define __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */