📄 alpha_cfi.patch
字号:
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 notpresent 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: .entdirective 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 1make[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 2make[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===================================================================RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S,vretrieving revision 1.5retrieving revision 1.6diff -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,vretrieving revision 1.3retrieving revision 1.4diff -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)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -