392 lines
12 KiB
Diff
392 lines
12 KiB
Diff
diff -rupN uClibc-0.9.29.orig/libc/misc/internals/__uClibc_main.c uClibc-0.9.29/libc/misc/internals/__uClibc_main.c
|
|
--- uClibc-0.9.29.orig/libc/misc/internals/__uClibc_main.c 2010-01-23 10:29:25.000000000 -0500
|
|
+++ uClibc-0.9.29/libc/misc/internals/__uClibc_main.c 2010-01-23 10:29:24.000000000 -0500
|
|
@@ -95,12 +95,12 @@ extern void _dl_app_init_array(void);
|
|
extern void _dl_app_fini_array(void);
|
|
# ifndef SHARED
|
|
/* These magic symbols are provided by the linker. */
|
|
-extern void (*__preinit_array_start []) (void) attribute_hidden;
|
|
-extern void (*__preinit_array_end []) (void) attribute_hidden;
|
|
-extern void (*__init_array_start []) (void) attribute_hidden;
|
|
-extern void (*__init_array_end []) (void) attribute_hidden;
|
|
-extern void (*__fini_array_start []) (void) attribute_hidden;
|
|
-extern void (*__fini_array_end []) (void) attribute_hidden;
|
|
+extern void (*__preinit_array_start []) (void) ;
|
|
+extern void (*__preinit_array_end []) (void) ;
|
|
+extern void (*__init_array_start []) (void) ;
|
|
+extern void (*__init_array_end []) (void) ;
|
|
+extern void (*__fini_array_start []) (void) ;
|
|
+extern void (*__fini_array_end []) (void) ;
|
|
# endif
|
|
#endif
|
|
|
|
diff -rupN uClibc-0.9.29.orig/libpthread/limits.h uClibc-0.9.29/libpthread/limits.h
|
|
--- uClibc-0.9.29.orig/libpthread/limits.h 1969-12-31 19:00:00.000000000 -0500
|
|
+++ uClibc-0.9.29/libpthread/limits.h 2010-01-23 10:29:24.000000000 -0500
|
|
@@ -0,0 +1,125 @@
|
|
+/* This administrivia gets added to the beginning of limits.h
|
|
+ if the system has its own version of limits.h. */
|
|
+
|
|
+/* We use _GCC_LIMITS_H_ because we want this not to match
|
|
+ any macros that the system's limits.h uses for its own purposes. */
|
|
+#ifndef _GCC_LIMITS_H_ /* Terminated in limity.h. */
|
|
+#define _GCC_LIMITS_H_
|
|
+
|
|
+#ifndef _LIBC_LIMITS_H_
|
|
+/* Use "..." so that we find syslimits.h only in this same directory. */
|
|
+#include "syslimits.h"
|
|
+#endif
|
|
+#ifndef _LIMITS_H___
|
|
+#define _LIMITS_H___
|
|
+
|
|
+/* Number of bits in a `char'. */
|
|
+#undef CHAR_BIT
|
|
+#define CHAR_BIT __CHAR_BIT__
|
|
+
|
|
+/* Maximum length of a multibyte character. */
|
|
+#ifndef MB_LEN_MAX
|
|
+#define MB_LEN_MAX 1
|
|
+#endif
|
|
+
|
|
+/* Minimum and maximum values a `signed char' can hold. */
|
|
+#undef SCHAR_MIN
|
|
+#define SCHAR_MIN (-SCHAR_MAX - 1)
|
|
+#undef SCHAR_MAX
|
|
+#define SCHAR_MAX __SCHAR_MAX__
|
|
+
|
|
+/* Maximum value an `unsigned char' can hold. (Minimum is 0). */
|
|
+#undef UCHAR_MAX
|
|
+#if __SCHAR_MAX__ == __INT_MAX__
|
|
+# define UCHAR_MAX (SCHAR_MAX * 2U + 1U)
|
|
+#else
|
|
+# define UCHAR_MAX (SCHAR_MAX * 2 + 1)
|
|
+#endif
|
|
+
|
|
+/* Minimum and maximum values a `char' can hold. */
|
|
+#ifdef __CHAR_UNSIGNED__
|
|
+# undef CHAR_MIN
|
|
+# if __SCHAR_MAX__ == __INT_MAX__
|
|
+# define CHAR_MIN 0U
|
|
+# else
|
|
+# define CHAR_MIN 0
|
|
+# endif
|
|
+# undef CHAR_MAX
|
|
+# define CHAR_MAX UCHAR_MAX
|
|
+#else
|
|
+# undef CHAR_MIN
|
|
+# define CHAR_MIN SCHAR_MIN
|
|
+# undef CHAR_MAX
|
|
+# define CHAR_MAX SCHAR_MAX
|
|
+#endif
|
|
+
|
|
+/* Minimum and maximum values a `signed short int' can hold. */
|
|
+#undef SHRT_MIN
|
|
+#define SHRT_MIN (-SHRT_MAX - 1)
|
|
+#undef SHRT_MAX
|
|
+#define SHRT_MAX __SHRT_MAX__
|
|
+
|
|
+/* Maximum value an `unsigned short int' can hold. (Minimum is 0). */
|
|
+#undef USHRT_MAX
|
|
+#if __SHRT_MAX__ == __INT_MAX__
|
|
+# define USHRT_MAX (SHRT_MAX * 2U + 1U)
|
|
+#else
|
|
+# define USHRT_MAX (SHRT_MAX * 2 + 1)
|
|
+#endif
|
|
+
|
|
+/* Minimum and maximum values a `signed int' can hold. */
|
|
+#undef INT_MIN
|
|
+#define INT_MIN (-INT_MAX - 1)
|
|
+#undef INT_MAX
|
|
+#define INT_MAX __INT_MAX__
|
|
+
|
|
+/* Maximum value an `unsigned int' can hold. (Minimum is 0). */
|
|
+#undef UINT_MAX
|
|
+#define UINT_MAX (INT_MAX * 2U + 1U)
|
|
+
|
|
+/* Minimum and maximum values a `signed long int' can hold.
|
|
+ (Same as `int'). */
|
|
+#undef LONG_MIN
|
|
+#define LONG_MIN (-LONG_MAX - 1L)
|
|
+#undef LONG_MAX
|
|
+#define LONG_MAX __LONG_MAX__
|
|
+
|
|
+/* Maximum value an `unsigned long int' can hold. (Minimum is 0). */
|
|
+#undef ULONG_MAX
|
|
+#define ULONG_MAX (LONG_MAX * 2UL + 1UL)
|
|
+
|
|
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
|
+/* Minimum and maximum values a `signed long long int' can hold. */
|
|
+# undef LLONG_MIN
|
|
+# define LLONG_MIN (-LLONG_MAX - 1LL)
|
|
+# undef LLONG_MAX
|
|
+# define LLONG_MAX __LONG_LONG_MAX__
|
|
+
|
|
+/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */
|
|
+# undef ULLONG_MAX
|
|
+# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
|
|
+#endif
|
|
+
|
|
+#if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__)
|
|
+/* Minimum and maximum values a `signed long long int' can hold. */
|
|
+# undef LONG_LONG_MIN
|
|
+# define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL)
|
|
+# undef LONG_LONG_MAX
|
|
+# define LONG_LONG_MAX __LONG_LONG_MAX__
|
|
+
|
|
+/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */
|
|
+# undef ULONG_LONG_MAX
|
|
+# define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL)
|
|
+#endif
|
|
+
|
|
+#endif /* _LIMITS_H___ */
|
|
+/* This administrivia gets added to the end of limits.h
|
|
+ if the system has its own version of limits.h. */
|
|
+
|
|
+#else /* not _GCC_LIMITS_H_ */
|
|
+
|
|
+#ifdef _GCC_NEXT_LIMITS_H
|
|
+#include_next <limits.h> /* recurse down to the real one */
|
|
+#endif
|
|
+
|
|
+#endif /* not _GCC_LIMITS_H_ */
|
|
diff -rupN uClibc-0.9.29.orig/libpthread/linuxthreads.old/sysdeps/mips/pt-machine.h uClibc-0.9.29/libpthread/linuxthreads.old/sysdeps/mips/pt-machine.h
|
|
--- uClibc-0.9.29.orig/libpthread/linuxthreads.old/sysdeps/mips/pt-machine.h 2010-01-23 10:29:24.000000000 -0500
|
|
+++ uClibc-0.9.29/libpthread/linuxthreads.old/sysdeps/mips/pt-machine.h 2010-01-23 10:29:24.000000000 -0500
|
|
@@ -25,44 +25,40 @@
|
|
#define _PT_MACHINE_H 1
|
|
|
|
#include <features.h>
|
|
+#include <sgidefs.h>
|
|
+#include <sys/tas.h>
|
|
|
|
-/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
|
|
- This file is part of the GNU C Library.
|
|
- Contributed by Maciej W. Rozycki <macro@ds2.pg.gda.pl>, 2000. */
|
|
-static inline int
|
|
-__NTH (_test_and_set (int *p, int v))
|
|
-{
|
|
- int r, t;
|
|
-
|
|
- __asm__ __volatile__
|
|
- ("/* Inline test and set */\n"
|
|
- "1:\n\t"
|
|
- ".set push\n\t"
|
|
- ".set mips2\n\t"
|
|
- "ll %0,%3\n\t"
|
|
- "move %1,%4\n\t"
|
|
- "beq %0,%4,2f\n\t"
|
|
- "sc %1,%2\n\t"
|
|
- ".set pop\n\t"
|
|
- "beqz %1,1b\n"
|
|
- "2:\n\t"
|
|
- "/* End test and set */"
|
|
- : "=&r" (r), "=&r" (t), "=m" (*p)
|
|
- : "m" (*p), "r" (v)
|
|
- : "memory");
|
|
-
|
|
- return r;
|
|
-}
|
|
+/* Forces a function to be always inlined. */
|
|
+#if __GNUC_PREREQ (3,2)
|
|
+# define __always_inline __inline __attribute__ ((__always_inline__))
|
|
+#else
|
|
+# define __always_inline __inline
|
|
+#endif
|
|
|
|
+/* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
|
|
+ inline semantics, unless -fgnu89-inline is used.
|
|
+ For -std=gnu99, forcing gnu_inline attribute does not change behavior,
|
|
+ but may silence spurious warnings (such as in GCC 4.2). */
|
|
+#if !defined __cplusplus || __GNUC_PREREQ (4,3)
|
|
+# if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ || defined __cplusplus
|
|
+# define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
|
|
+# if __GNUC_PREREQ (4,3)
|
|
+# define __extern_always_inline \
|
|
+ extern __always_inline __attribute__ ((__gnu_inline__, __artificial__))
|
|
+# else
|
|
+# define __extern_always_inline \
|
|
+ extern __always_inline __attribute__ ((__gnu_inline__))
|
|
+# endif
|
|
+# else
|
|
+# define __extern_inline extern __inline
|
|
+# define __extern_always_inline extern __always_inline
|
|
+# endif
|
|
+#endif
|
|
|
|
#ifndef PT_EI
|
|
-# define PT_EI extern inline __attribute__ ((always_inline))
|
|
+# define PT_EI __extern_always_inline
|
|
#endif
|
|
|
|
-extern long int testandset (int *spinlock);
|
|
-extern int __compare_and_swap (long int *p, long int oldval, long int newval);
|
|
-
|
|
-
|
|
/* Spinlock implementation; required. */
|
|
|
|
PT_EI long int
|
|
@@ -90,12 +86,22 @@ __compare_and_swap (long int *p, long in
|
|
("/* Inline compare & swap */\n"
|
|
"1:\n\t"
|
|
".set push\n\t"
|
|
+#if _MIPS_SIM == _ABIO32
|
|
".set mips2\n\t"
|
|
+#endif
|
|
+#if _MIPS_SIM == _ABI64
|
|
+ "lld %1,%5\n\t"
|
|
+#else
|
|
"ll %1,%5\n\t"
|
|
+#endif
|
|
"move %0,$0\n\t"
|
|
"bne %1,%3,2f\n\t"
|
|
"move %0,%4\n\t"
|
|
+#if _MIPS_SIM == _ABI64
|
|
+ "scd %0,%2\n\t"
|
|
+#else
|
|
"sc %0,%2\n\t"
|
|
+#endif
|
|
".set pop\n\t"
|
|
"beqz %0,1b\n"
|
|
"2:\n\t"
|
|
diff -rupN uClibc-0.9.29.orig/limits.h uClibc-0.9.29/limits.h
|
|
--- uClibc-0.9.29.orig/limits.h 1969-12-31 19:00:00.000000000 -0500
|
|
+++ uClibc-0.9.29/limits.h 2010-01-23 10:29:24.000000000 -0500
|
|
@@ -0,0 +1,125 @@
|
|
+/* This administrivia gets added to the beginning of limits.h
|
|
+ if the system has its own version of limits.h. */
|
|
+
|
|
+/* We use _GCC_LIMITS_H_ because we want this not to match
|
|
+ any macros that the system's limits.h uses for its own purposes. */
|
|
+#ifndef _GCC_LIMITS_H_ /* Terminated in limity.h. */
|
|
+#define _GCC_LIMITS_H_
|
|
+
|
|
+#ifndef _LIBC_LIMITS_H_
|
|
+/* Use "..." so that we find syslimits.h only in this same directory. */
|
|
+#include "syslimits.h"
|
|
+#endif
|
|
+#ifndef _LIMITS_H___
|
|
+#define _LIMITS_H___
|
|
+
|
|
+/* Number of bits in a `char'. */
|
|
+#undef CHAR_BIT
|
|
+#define CHAR_BIT __CHAR_BIT__
|
|
+
|
|
+/* Maximum length of a multibyte character. */
|
|
+#ifndef MB_LEN_MAX
|
|
+#define MB_LEN_MAX 1
|
|
+#endif
|
|
+
|
|
+/* Minimum and maximum values a `signed char' can hold. */
|
|
+#undef SCHAR_MIN
|
|
+#define SCHAR_MIN (-SCHAR_MAX - 1)
|
|
+#undef SCHAR_MAX
|
|
+#define SCHAR_MAX __SCHAR_MAX__
|
|
+
|
|
+/* Maximum value an `unsigned char' can hold. (Minimum is 0). */
|
|
+#undef UCHAR_MAX
|
|
+#if __SCHAR_MAX__ == __INT_MAX__
|
|
+# define UCHAR_MAX (SCHAR_MAX * 2U + 1U)
|
|
+#else
|
|
+# define UCHAR_MAX (SCHAR_MAX * 2 + 1)
|
|
+#endif
|
|
+
|
|
+/* Minimum and maximum values a `char' can hold. */
|
|
+#ifdef __CHAR_UNSIGNED__
|
|
+# undef CHAR_MIN
|
|
+# if __SCHAR_MAX__ == __INT_MAX__
|
|
+# define CHAR_MIN 0U
|
|
+# else
|
|
+# define CHAR_MIN 0
|
|
+# endif
|
|
+# undef CHAR_MAX
|
|
+# define CHAR_MAX UCHAR_MAX
|
|
+#else
|
|
+# undef CHAR_MIN
|
|
+# define CHAR_MIN SCHAR_MIN
|
|
+# undef CHAR_MAX
|
|
+# define CHAR_MAX SCHAR_MAX
|
|
+#endif
|
|
+
|
|
+/* Minimum and maximum values a `signed short int' can hold. */
|
|
+#undef SHRT_MIN
|
|
+#define SHRT_MIN (-SHRT_MAX - 1)
|
|
+#undef SHRT_MAX
|
|
+#define SHRT_MAX __SHRT_MAX__
|
|
+
|
|
+/* Maximum value an `unsigned short int' can hold. (Minimum is 0). */
|
|
+#undef USHRT_MAX
|
|
+#if __SHRT_MAX__ == __INT_MAX__
|
|
+# define USHRT_MAX (SHRT_MAX * 2U + 1U)
|
|
+#else
|
|
+# define USHRT_MAX (SHRT_MAX * 2 + 1)
|
|
+#endif
|
|
+
|
|
+/* Minimum and maximum values a `signed int' can hold. */
|
|
+#undef INT_MIN
|
|
+#define INT_MIN (-INT_MAX - 1)
|
|
+#undef INT_MAX
|
|
+#define INT_MAX __INT_MAX__
|
|
+
|
|
+/* Maximum value an `unsigned int' can hold. (Minimum is 0). */
|
|
+#undef UINT_MAX
|
|
+#define UINT_MAX (INT_MAX * 2U + 1U)
|
|
+
|
|
+/* Minimum and maximum values a `signed long int' can hold.
|
|
+ (Same as `int'). */
|
|
+#undef LONG_MIN
|
|
+#define LONG_MIN (-LONG_MAX - 1L)
|
|
+#undef LONG_MAX
|
|
+#define LONG_MAX __LONG_MAX__
|
|
+
|
|
+/* Maximum value an `unsigned long int' can hold. (Minimum is 0). */
|
|
+#undef ULONG_MAX
|
|
+#define ULONG_MAX (LONG_MAX * 2UL + 1UL)
|
|
+
|
|
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
|
+/* Minimum and maximum values a `signed long long int' can hold. */
|
|
+# undef LLONG_MIN
|
|
+# define LLONG_MIN (-LLONG_MAX - 1LL)
|
|
+# undef LLONG_MAX
|
|
+# define LLONG_MAX __LONG_LONG_MAX__
|
|
+
|
|
+/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */
|
|
+# undef ULLONG_MAX
|
|
+# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
|
|
+#endif
|
|
+
|
|
+#if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__)
|
|
+/* Minimum and maximum values a `signed long long int' can hold. */
|
|
+# undef LONG_LONG_MIN
|
|
+# define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL)
|
|
+# undef LONG_LONG_MAX
|
|
+# define LONG_LONG_MAX __LONG_LONG_MAX__
|
|
+
|
|
+/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */
|
|
+# undef ULONG_LONG_MAX
|
|
+# define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL)
|
|
+#endif
|
|
+
|
|
+#endif /* _LIMITS_H___ */
|
|
+/* This administrivia gets added to the end of limits.h
|
|
+ if the system has its own version of limits.h. */
|
|
+
|
|
+#else /* not _GCC_LIMITS_H_ */
|
|
+
|
|
+#ifdef _GCC_NEXT_LIMITS_H
|
|
+#include_next <limits.h> /* recurse down to the real one */
|
|
+#endif
|
|
+
|
|
+#endif /* not _GCC_LIMITS_H_ */
|
|
diff -rupN uClibc-0.9.29.orig/libc/inet/resolv.c uClibc-0.9.29/libc/inet/resolv.c
|
|
--- uClibc-0.9.29.orig/libc/inet/resolv.c 2010-01-25 11:52:16.000000000 -0500
|
|
+++ uClibc-0.9.29/libc/inet/resolv.c 2010-01-25 11:52:38.000000000 -0500
|
|
@@ -1255,7 +1255,7 @@ int res_query(const char *dname, int cla
|
|
|
|
free(a.dotted);
|
|
|
|
- if (a.atype == type) { /* CNAME*/
|
|
+ if ( ((_res.options & RES_INSECURE1)&&(a.atype == T_CNAME)) || (a.atype == type) ){
|
|
int len = MIN(anslen, i);
|
|
memcpy(answer, packet, len);
|
|
if (packet)
|