1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/patches/glibc/linuxthreads-2.3.2/alpha_cfi1.patch Tue May 22 21:19:47 2007 +0000
1.3 @@ -0,0 +1,136 @@
1.4 +Retrieved with
1.5 +$ 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'
1.6 +$ 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'
1.7 +
1.8 +Might fix problem building with binutils-2.14.90.0.8/gcc-3.3.3 that was not
1.9 +present with binutils-2.13.90.0.18/gcc-3.3.2:
1.10 +
1.11 +../linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S: Assembler messages:
1.12 +../linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S:63: Warning: .ent
1.13 +directive without matching .end
1.14 +../linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S:63: Error: can't resolve
1.15 +`0' {.text section} - `L0^A' {.text section}
1.16 +make[2]: ***
1.17 +[/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]
1.18 +Error 1
1.19 +make[2]: Leaving directory
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/posix'
1.21 +make[1]: *** [posix/subdir_lib] Error 2
1.22 +make[1]: Leaving directory
1.23 +`/home/dkegel/wk/crosstool-0.26-pre3/build/alpha-unknown-linux-gnu/gcc-3.3-20040112-glibc-2.3.2/glibc-2.3.2'
1.24 +make: *** [all] Error 2
1.25 +
1.26 +See also alpha_cfi2.patch
1.27 +
1.28 +===================================================================
1.29 +RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S,v
1.30 +retrieving revision 1.5
1.31 +retrieving revision 1.6
1.32 +diff -u -r1.5 -r1.6
1.33 +--- libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2003/02/11 06:27:53 1.5
1.34 ++++ libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2003/06/06 05:51:03 1.6
1.35 +@@ -19,12 +19,13 @@
1.36 +
1.37 + #include <sysdep-cancel.h>
1.38 +
1.39 +- .globl __vfork
1.40 + .align 4
1.41 +- .ent __vfork,0
1.42 +-__LABEL(__vfork)
1.43 ++ .globl __vfork
1.44 ++ .type __vfork, @function
1.45 ++ .usepv __vfork, std
1.46 ++ cfi_startproc
1.47 ++__vfork:
1.48 + ldgp gp, 0(pv)
1.49 +- .prologue 1
1.50 + PSEUDO_PROF
1.51 +
1.52 + #ifdef SHARED
1.53 +@@ -46,18 +47,24 @@
1.54 + fork and vfork object files. */
1.55 + $do_fork:
1.56 + subq sp, 16, sp
1.57 ++ cfi_adjust_cfa_offset(16)
1.58 + stq ra, 0(sp)
1.59 ++ cfi_offset(ra, -16)
1.60 + jsr ra, HIDDEN_JUMPTARGET (__fork)
1.61 + ldgp gp, 0(ra)
1.62 + ldq ra, 0(sp)
1.63 + addq sp, 16, sp
1.64 ++ cfi_restore(ra)
1.65 ++ cfi_adjust_cfa_offset(-16)
1.66 + ret
1.67 +
1.68 + $syscall_error:
1.69 + SYSCALL_ERROR_HANDLER
1.70 + #endif
1.71 +
1.72 +-PSEUDO_END(__vfork)
1.73 ++ cfi_endproc
1.74 ++ .size __vfork, .-__vfork
1.75 ++
1.76 + libc_hidden_def (__vfork)
1.77 +
1.78 + weak_alias (__vfork, vfork)
1.79 +===================================================================
1.80 +RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h,v
1.81 +retrieving revision 1.3
1.82 +retrieving revision 1.4
1.83 +diff -u -r1.3 -r1.4
1.84 +--- libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2003/01/12 19:26:41 1.3
1.85 ++++ libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2003/06/06 05:51:03 1.4
1.86 +@@ -40,10 +40,11 @@
1.87 + # define PSEUDO(name, syscall_name, args) \
1.88 + .globl name; \
1.89 + .align 4; \
1.90 +- .ent name, 0; \
1.91 ++ .type name, @function; \
1.92 ++ .usepv name, std; \
1.93 ++ cfi_startproc; \
1.94 + __LABEL(name) \
1.95 + ldgp gp, 0(pv); \
1.96 +- .prologue 1; \
1.97 + PSEUDO_PROF; \
1.98 + PSEUDO_PREPARE_ARGS \
1.99 + SINGLE_THREAD_P(t0); \
1.100 +@@ -55,7 +56,9 @@
1.101 + .subsection 2; \
1.102 + __LABEL($pseudo_cancel) \
1.103 + subq sp, 64, sp; \
1.104 ++ cfi_def_cfa_offset(64); \
1.105 + stq ra, 0(sp); \
1.106 ++ cfi_offset(ra, -64); \
1.107 + SAVE_ARGS_##args; \
1.108 + CENABLE; \
1.109 + LOAD_ARGS_##args; \
1.110 +@@ -67,19 +70,27 @@
1.111 + ldq ra, 0(sp); \
1.112 + ldq v0, 8(sp); \
1.113 + addq sp, 64, sp; \
1.114 ++ cfi_remember_state; \
1.115 ++ cfi_restore(ra); \
1.116 ++ cfi_def_cfa_offset(0); \
1.117 + ret; \
1.118 ++ cfi_restore_state; \
1.119 + __LABEL($multi_error) \
1.120 + CDISABLE; \
1.121 + ldq ra, 0(sp); \
1.122 + ldq v0, 8(sp); \
1.123 + addq sp, 64, sp; \
1.124 ++ cfi_restore(ra); \
1.125 ++ cfi_def_cfa_offset(0); \
1.126 + __LABEL($syscall_error) \
1.127 + SYSCALL_ERROR_HANDLER; \
1.128 +- END(name); \
1.129 + .previous
1.130 +
1.131 + # undef PSEUDO_END
1.132 +-# define PSEUDO_END(sym)
1.133 ++# define PSEUDO_END(sym) \
1.134 ++ .subsection 2; \
1.135 ++ cfi_endproc; \
1.136 ++ .size sym, .-sym
1.137 +
1.138 + # define SAVE_ARGS_0 /* Nothing. */
1.139 + # define SAVE_ARGS_1 SAVE_ARGS_0; stq a0, 8(sp)