patches/glibc/linuxthreads-2.3.2/alpha_cfi1.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Feb 24 11:00:05 2007 +0000 (2007-02-24)
changeset 1 eeea35fbf182
permissions -rw-r--r--
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... :-(
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)