/
tzdata-update.c.arm.patch
52 lines (50 loc) · 1.83 KB
/
tzdata-update.c.arm.patch
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
diff -up glibc-20071017T2029/fedora/tzdata-update.c.orig glibc-20071017T2029/fedora/tzdata-update.c
--- glibc-20071017T2029/fedora/tzdata-update.c.orig 2007-11-26 16:48:44.000000000 -0500
+++ glibc-20071017T2029/fedora/tzdata-update.c 2007-11-26 16:51:38.000000000 -0500
@@ -391,6 +391,35 @@ register void *__thread_self __asm ("g7"
: inline_syscall_clobbers, "$20", "$21"); \
_sc_ret = _sc_0, _sc_err = _sc_19; \
}
+#elif defined __arm__ && defined __ARM_EABI__
+# define INTERNAL_SYSCALL_DECL(err) do { } while (0)
+# define INTERNAL_SYSCALL(name, err, nr, args...) \
+ ({ \
+ register int _r0 __asm__("r0"); \
+ register int _nr __asm__("r7"); \
+ LOAD_ARGS_##nr(args) \
+ _nr = __NR_##name; \
+ asm volatile ("swi\t0\t@ syscall " #name "\n\t" \
+ : "=r" (_r0) \
+ : "r" (_nr) ASM_ARGS_##nr \
+ : "memory"); \
+ _r0; })
+# define INTERNAL_SYSCALL_ERROR_P(val, err) \
+ ((unsigned int) (val) >= 0xfffff001u)
+# define ASM_ARGS_0
+# define ASM_ARGS_1 , "r" (_r0)
+# define ASM_ARGS_2 , "r" (_r0), "r" (_r1)
+# define ASM_ARGS_3 , "r" (_r0), "r" (_r1), "r" (_r2)
+# define LOAD_ARGS_0()
+# define LOAD_ARGS_1(r0) \
+ _r0 = (int)r0;
+# define LOAD_ARGS_2(r0, r1) \
+ _r0 = (int)r0; \
+ register int _r1 __asm__("r1") = (int)r1;
+# define LOAD_ARGS_3(r0, r1, r2) \
+ _r0 = (int)r0; \
+ register int _r1 __asm__("r1") = (int)r1; \
+ register int _r2 __asm__("r2") = (int)r2;
#endif
char buffer[32768], data[32768];
@@ -543,6 +572,12 @@ void __libc_csu_fini (void) { }
pid_t __fork (void) { return -1; }
char thr_buf[65536];
+#if defined __arm__
+/* Prevent pulling in libc-start.o (which also defines
+ * __libc_start_main.) */
+unsigned int __stack_chk_guard = ~0U;
+#endif
+
#ifndef __powerpc__
int __libc_start_main (int (*main) (int argc, char **argv),
int argc, char **argv,