crosstool-ng/patches/glibc/linuxthreads-2.3.2/alpha_cfi1.patch
Yann E. MORIN" 1906cf93f8 Add the full crosstool-NG sources to the new repository of its own.
You might just say: 'Yeah! crosstool-NG's got its own repo!".
Unfortunately, that's because the previous repo got damaged beyond repair and I had no backup.
That means I'm putting backups in place in the afternoon.
That also means we've lost history... :-(
2007-02-24 11:00:05 +00:00

137 lines
4.0 KiB
Diff

Retrieved with
$ 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'
$ 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'
Might fix problem building with binutils-2.14.90.0.8/gcc-3.3.3 that was not
present with binutils-2.13.90.0.18/gcc-3.3.2:
../linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S: Assembler messages:
../linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S:63: Warning: .ent
directive without matching .end
../linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S:63: Error: can't resolve
`0' {.text section} - `L0^A' {.text section}
make[2]: ***
[/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]
Error 1
make[2]: Leaving directory
`/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'
make[1]: *** [posix/subdir_lib] Error 2
make[1]: Leaving directory
`/home/dkegel/wk/crosstool-0.26-pre3/build/alpha-unknown-linux-gnu/gcc-3.3-20040112-glibc-2.3.2/glibc-2.3.2'
make: *** [all] Error 2
See also alpha_cfi2.patch
===================================================================
RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2003/02/11 06:27:53 1.5
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2003/06/06 05:51:03 1.6
@@ -19,12 +19,13 @@
#include <sysdep-cancel.h>
- .globl __vfork
.align 4
- .ent __vfork,0
-__LABEL(__vfork)
+ .globl __vfork
+ .type __vfork, @function
+ .usepv __vfork, std
+ cfi_startproc
+__vfork:
ldgp gp, 0(pv)
- .prologue 1
PSEUDO_PROF
#ifdef SHARED
@@ -46,18 +47,24 @@
fork and vfork object files. */
$do_fork:
subq sp, 16, sp
+ cfi_adjust_cfa_offset(16)
stq ra, 0(sp)
+ cfi_offset(ra, -16)
jsr ra, HIDDEN_JUMPTARGET (__fork)
ldgp gp, 0(ra)
ldq ra, 0(sp)
addq sp, 16, sp
+ cfi_restore(ra)
+ cfi_adjust_cfa_offset(-16)
ret
$syscall_error:
SYSCALL_ERROR_HANDLER
#endif
-PSEUDO_END(__vfork)
+ cfi_endproc
+ .size __vfork, .-__vfork
+
libc_hidden_def (__vfork)
weak_alias (__vfork, vfork)
===================================================================
RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2003/01/12 19:26:41 1.3
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2003/06/06 05:51:03 1.4
@@ -40,10 +40,11 @@
# define PSEUDO(name, syscall_name, args) \
.globl name; \
.align 4; \
- .ent name, 0; \
+ .type name, @function; \
+ .usepv name, std; \
+ cfi_startproc; \
__LABEL(name) \
ldgp gp, 0(pv); \
- .prologue 1; \
PSEUDO_PROF; \
PSEUDO_PREPARE_ARGS \
SINGLE_THREAD_P(t0); \
@@ -55,7 +56,9 @@
.subsection 2; \
__LABEL($pseudo_cancel) \
subq sp, 64, sp; \
+ cfi_def_cfa_offset(64); \
stq ra, 0(sp); \
+ cfi_offset(ra, -64); \
SAVE_ARGS_##args; \
CENABLE; \
LOAD_ARGS_##args; \
@@ -67,19 +70,27 @@
ldq ra, 0(sp); \
ldq v0, 8(sp); \
addq sp, 64, sp; \
+ cfi_remember_state; \
+ cfi_restore(ra); \
+ cfi_def_cfa_offset(0); \
ret; \
+ cfi_restore_state; \
__LABEL($multi_error) \
CDISABLE; \
ldq ra, 0(sp); \
ldq v0, 8(sp); \
addq sp, 64, sp; \
+ cfi_restore(ra); \
+ cfi_def_cfa_offset(0); \
__LABEL($syscall_error) \
SYSCALL_ERROR_HANDLER; \
- END(name); \
.previous
# undef PSEUDO_END
-# define PSEUDO_END(sym)
+# define PSEUDO_END(sym) \
+ .subsection 2; \
+ cfi_endproc; \
+ .size sym, .-sym
# define SAVE_ARGS_0 /* Nothing. */
# define SAVE_ARGS_1 SAVE_ARGS_0; stq a0, 8(sp)