yann@1
|
1 |
Retrieved with
|
yann@1
|
2 |
$ wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S.diff?r1=1.5&r2=1.6&cvsroot=glibc'
|
yann@1
|
3 |
$ wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h.diff?r1=1.3&r2=1.4&cvsroot=glibc'
|
yann@1
|
4 |
|
yann@1
|
5 |
Might fix problem building with binutils-2.14.90.0.8/gcc-3.3.3 that was not
|
yann@1
|
6 |
present with binutils-2.13.90.0.18/gcc-3.3.2:
|
yann@1
|
7 |
|
yann@1
|
8 |
../linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S: Assembler messages:
|
yann@1
|
9 |
../linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S:63: Warning: .ent
|
yann@1
|
10 |
directive without matching .end
|
yann@1
|
11 |
../linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S:63: Error: can't resolve
|
yann@1
|
12 |
`0' {.text section} - `L0^A' {.text section}
|
yann@1
|
13 |
make[2]: ***
|
yann@1
|
14 |
[/home/dkegel/wk/crosstool-0.26-pre3/build/alpha-unknown-linux-gnu/gcc-3.3-20040112-glibc-2.3.2/build-glibc/posix/vfork.o]
|
yann@1
|
15 |
Error 1
|
yann@1
|
16 |
make[2]: Leaving directory
|
yann@1
|
17 |
`/home/dkegel/wk/crosstool-0.26-pre3/build/alpha-unknown-linux-gnu/gcc-3.3-20040112-glibc-2.3.2/glibc-2.3.2/posix'
|
yann@1
|
18 |
make[1]: *** [posix/subdir_lib] Error 2
|
yann@1
|
19 |
make[1]: Leaving directory
|
yann@1
|
20 |
`/home/dkegel/wk/crosstool-0.26-pre3/build/alpha-unknown-linux-gnu/gcc-3.3-20040112-glibc-2.3.2/glibc-2.3.2'
|
yann@1
|
21 |
make: *** [all] Error 2
|
yann@1
|
22 |
|
yann@1
|
23 |
See also alpha_cfi2.patch
|
yann@1
|
24 |
|
yann@1
|
25 |
===================================================================
|
yann@1
|
26 |
RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S,v
|
yann@1
|
27 |
retrieving revision 1.5
|
yann@1
|
28 |
retrieving revision 1.6
|
yann@1
|
29 |
diff -u -r1.5 -r1.6
|
yann@1
|
30 |
--- libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2003/02/11 06:27:53 1.5
|
yann@1
|
31 |
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2003/06/06 05:51:03 1.6
|
yann@1
|
32 |
@@ -19,12 +19,13 @@
|
yann@1
|
33 |
|
yann@1
|
34 |
#include <sysdep-cancel.h>
|
yann@1
|
35 |
|
yann@1
|
36 |
- .globl __vfork
|
yann@1
|
37 |
.align 4
|
yann@1
|
38 |
- .ent __vfork,0
|
yann@1
|
39 |
-__LABEL(__vfork)
|
yann@1
|
40 |
+ .globl __vfork
|
yann@1
|
41 |
+ .type __vfork, @function
|
yann@1
|
42 |
+ .usepv __vfork, std
|
yann@1
|
43 |
+ cfi_startproc
|
yann@1
|
44 |
+__vfork:
|
yann@1
|
45 |
ldgp gp, 0(pv)
|
yann@1
|
46 |
- .prologue 1
|
yann@1
|
47 |
PSEUDO_PROF
|
yann@1
|
48 |
|
yann@1
|
49 |
#ifdef SHARED
|
yann@1
|
50 |
@@ -46,18 +47,24 @@
|
yann@1
|
51 |
fork and vfork object files. */
|
yann@1
|
52 |
$do_fork:
|
yann@1
|
53 |
subq sp, 16, sp
|
yann@1
|
54 |
+ cfi_adjust_cfa_offset(16)
|
yann@1
|
55 |
stq ra, 0(sp)
|
yann@1
|
56 |
+ cfi_offset(ra, -16)
|
yann@1
|
57 |
jsr ra, HIDDEN_JUMPTARGET (__fork)
|
yann@1
|
58 |
ldgp gp, 0(ra)
|
yann@1
|
59 |
ldq ra, 0(sp)
|
yann@1
|
60 |
addq sp, 16, sp
|
yann@1
|
61 |
+ cfi_restore(ra)
|
yann@1
|
62 |
+ cfi_adjust_cfa_offset(-16)
|
yann@1
|
63 |
ret
|
yann@1
|
64 |
|
yann@1
|
65 |
$syscall_error:
|
yann@1
|
66 |
SYSCALL_ERROR_HANDLER
|
yann@1
|
67 |
#endif
|
yann@1
|
68 |
|
yann@1
|
69 |
-PSEUDO_END(__vfork)
|
yann@1
|
70 |
+ cfi_endproc
|
yann@1
|
71 |
+ .size __vfork, .-__vfork
|
yann@1
|
72 |
+
|
yann@1
|
73 |
libc_hidden_def (__vfork)
|
yann@1
|
74 |
|
yann@1
|
75 |
weak_alias (__vfork, vfork)
|
yann@1
|
76 |
===================================================================
|
yann@1
|
77 |
RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h,v
|
yann@1
|
78 |
retrieving revision 1.3
|
yann@1
|
79 |
retrieving revision 1.4
|
yann@1
|
80 |
diff -u -r1.3 -r1.4
|
yann@1
|
81 |
--- libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2003/01/12 19:26:41 1.3
|
yann@1
|
82 |
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2003/06/06 05:51:03 1.4
|
yann@1
|
83 |
@@ -40,10 +40,11 @@
|
yann@1
|
84 |
# define PSEUDO(name, syscall_name, args) \
|
yann@1
|
85 |
.globl name; \
|
yann@1
|
86 |
.align 4; \
|
yann@1
|
87 |
- .ent name, 0; \
|
yann@1
|
88 |
+ .type name, @function; \
|
yann@1
|
89 |
+ .usepv name, std; \
|
yann@1
|
90 |
+ cfi_startproc; \
|
yann@1
|
91 |
__LABEL(name) \
|
yann@1
|
92 |
ldgp gp, 0(pv); \
|
yann@1
|
93 |
- .prologue 1; \
|
yann@1
|
94 |
PSEUDO_PROF; \
|
yann@1
|
95 |
PSEUDO_PREPARE_ARGS \
|
yann@1
|
96 |
SINGLE_THREAD_P(t0); \
|
yann@1
|
97 |
@@ -55,7 +56,9 @@
|
yann@1
|
98 |
.subsection 2; \
|
yann@1
|
99 |
__LABEL($pseudo_cancel) \
|
yann@1
|
100 |
subq sp, 64, sp; \
|
yann@1
|
101 |
+ cfi_def_cfa_offset(64); \
|
yann@1
|
102 |
stq ra, 0(sp); \
|
yann@1
|
103 |
+ cfi_offset(ra, -64); \
|
yann@1
|
104 |
SAVE_ARGS_##args; \
|
yann@1
|
105 |
CENABLE; \
|
yann@1
|
106 |
LOAD_ARGS_##args; \
|
yann@1
|
107 |
@@ -67,19 +70,27 @@
|
yann@1
|
108 |
ldq ra, 0(sp); \
|
yann@1
|
109 |
ldq v0, 8(sp); \
|
yann@1
|
110 |
addq sp, 64, sp; \
|
yann@1
|
111 |
+ cfi_remember_state; \
|
yann@1
|
112 |
+ cfi_restore(ra); \
|
yann@1
|
113 |
+ cfi_def_cfa_offset(0); \
|
yann@1
|
114 |
ret; \
|
yann@1
|
115 |
+ cfi_restore_state; \
|
yann@1
|
116 |
__LABEL($multi_error) \
|
yann@1
|
117 |
CDISABLE; \
|
yann@1
|
118 |
ldq ra, 0(sp); \
|
yann@1
|
119 |
ldq v0, 8(sp); \
|
yann@1
|
120 |
addq sp, 64, sp; \
|
yann@1
|
121 |
+ cfi_restore(ra); \
|
yann@1
|
122 |
+ cfi_def_cfa_offset(0); \
|
yann@1
|
123 |
__LABEL($syscall_error) \
|
yann@1
|
124 |
SYSCALL_ERROR_HANDLER; \
|
yann@1
|
125 |
- END(name); \
|
yann@1
|
126 |
.previous
|
yann@1
|
127 |
|
yann@1
|
128 |
# undef PSEUDO_END
|
yann@1
|
129 |
-# define PSEUDO_END(sym)
|
yann@1
|
130 |
+# define PSEUDO_END(sym) \
|
yann@1
|
131 |
+ .subsection 2; \
|
yann@1
|
132 |
+ cfi_endproc; \
|
yann@1
|
133 |
+ .size sym, .-sym
|
yann@1
|
134 |
|
yann@1
|
135 |
# define SAVE_ARGS_0 /* Nothing. */
|
yann@1
|
136 |
# define SAVE_ARGS_1 SAVE_ARGS_0; stq a0, 8(sp)
|