1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
--- uClibc-0.9.27/ldso/include/dl-string.h.orig 2005-08-09 18:16:50.618935711 -0700
+++ uClibc-0.9.27/ldso/include/dl-string.h 2005-08-09 18:17:02.279669474 -0700
@@ -250,7 +250,7 @@
}
-#if defined(mc68000) || defined(__arm__) || defined(__mips__) || defined(__sh__) || defined(__powerpc__)
+#if defined(mc68000) || defined(__arm__) || defined(__mips__) || defined(__sh__) || defined(__powerpc__) || defined(__thumb__)
/* On some arches constant strings are referenced through the GOT. */
/* XXX Requires load_addr to be defined. */
#define SEND_STDERR(X) \
--- uClibc-0.9.27/ldso/ldso/dl-startup.c.orig 2005-08-09 18:17:02.307671237 -0700
+++ uClibc-0.9.27/ldso/ldso/dl-startup.c 2005-08-09 18:19:40.633634061 -0700
@@ -137,7 +137,7 @@
/* First obtain the information on the stack that tells us more about
what binary is loaded, where it is loaded, etc, etc */
GET_ARGV(aux_dat, args);
-#if defined (__arm__) || defined (__mips__) || defined (__cris__)
+#if defined (__arm__) || defined (__mips__) || defined (__cris__) || defined(__thumb__)
aux_dat += 1;
#endif
argc = *(aux_dat - 1);
@@ -200,7 +200,7 @@
__asm__("movel %%a5,%0":"=g"(got));
#elif defined(__sparc__)
__asm__("\tmov %%l7,%0\n\t":"=r"(got));
-#elif defined(__arm__)
+#elif defined(__arm__) || defined(__thumb__)
__asm__("\tmov %0, r10\n\t":"=r"(got));
#elif defined(__powerpc__)
__asm__("\tbl _GLOBAL_OFFSET_TABLE_-4@local\n\t":"=l"(got));
--- uClibc-0.9.27/libc/sysdeps/linux/common/create_module.c.orig 2005-08-09 18:19:40.769642620 -0700
+++ uClibc-0.9.27/libc/sysdeps/linux/common/create_module.c 2005-08-09 18:19:58.442754719 -0700
@@ -31,7 +31,7 @@
#ifdef __NR_create_module
-#if defined(__i386__) || defined(__m68k__) || defined(__arm__) || defined(__cris__) || defined(__i960__)
+#if defined(__i386__) || defined(__m68k__) || defined(__arm__) || defined(__cris__) || defined(__i960__) || defined(__thumb__)
#define __NR___create_module __NR_create_module
#ifdef __STR_NR_create_module
#define __STR_NR___create_module __STR_NR_create_module
--- uClibc-0.9.27/libc/sysdeps/linux/common/iopl.c.orig 2005-08-09 18:20:02.302997628 -0700
+++ uClibc-0.9.27/libc/sysdeps/linux/common/iopl.c 2005-08-09 18:20:12.327628439 -0700
@@ -9,7 +9,7 @@
#include "syscalls.h"
/* For arm there is a totally different implementation */
-#if !defined(__arm__)
+#if !defined(__arm__) && !defined(__thumb__)
/* Tuns out the m68k unistd.h kernel header is broken */
# if defined __ARCH_HAS_MMU__ && defined __NR_iopl && ( !defined(__mc68000__))
_syscall1(int, iopl, int, level);
--- uClibc-0.9.27/libm/math_private.h.orig 2005-08-09 18:20:18.584022129 -0700
+++ uClibc-0.9.27/libm/math_private.h 2005-08-09 18:21:26.280281986 -0700
@@ -40,7 +40,7 @@
* For VFP, floats words follow the memory system mode.
*/
-#if (__BYTE_ORDER == __BIG_ENDIAN) || defined(__arm__) && !defined(__VFP_FP__)
+#if (__BYTE_ORDER == __BIG_ENDIAN) || (defined(__arm__) || defined(__thumb__)) && !defined(__VFP_FP__)
typedef union
{
@@ -54,7 +54,7 @@
#endif
-#if (__BYTE_ORDER == __LITTLE_ENDIAN) && (!defined(__arm__) || defined(__VFP_FP__))
+#if (__BYTE_ORDER == __LITTLE_ENDIAN) && ((!defined(__arm__) && !defined(__thumb__)) || defined(__VFP_FP__))
typedef union
{
--- uClibc-0.9.27/utils/ldd.c.orig 2005-08-09 18:21:27.724372857 -0700
+++ uClibc-0.9.27/utils/ldd.c 2005-08-09 18:23:13.018998630 -0700
@@ -51,7 +51,7 @@
#include <dmalloc.h>
#endif
-#if defined(__arm__)
+#if defined(__arm__) || defined(__thumb__)
#define MATCH_MACHINE(x) (x == EM_ARM)
#define ELFCLASSM ELFCLASS32
#endif
|