OBS User unknown 2008-07-22 10:00:53 +00:00 committed by Git OBS Bridge
parent ff05c53e2f
commit 6c92bfc5d5
14 changed files with 134 additions and 363 deletions

View File

@ -1,20 +0,0 @@
2008-06-30 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix ia64 `-f' on CLONE2 formerly crashing the child.
* util.c [IA64] (restore_arg0, restore_arg1): Define as empty.
--- util.c 20 May 2008 00:34:34 -0000 1.75
+++ util.c 30 Jun 2008 16:23:00 -0000
@@ -1379,6 +1379,12 @@ set_arg1 (struct tcb *tcp, arg_setup_sta
return errno ? -1 : 0;
}
+/* ia64 does not return the input arguments from functions (and syscalls)
+ according to ia64 RSE (Register Stack Engine) behavior. */
+
+# define restore_arg0(tcp, state, val) ((void) (state), 0)
+# define restore_arg1(tcp, state, val) ((void) (state), 0)
+
#elif defined (SPARC) || defined (SPARC64)
typedef struct regs arg_setup_state;

View File

@ -1,11 +0,0 @@
--- term.c
+++ term.c
@@ -414,7 +414,7 @@
case TIOCGPTN:
#endif
tprintf(", ");
- printnum(tcp, arg, "%d");
+ printnum_int(tcp, arg, "%d");
return 1;
#if 0

View File

@ -1,47 +0,0 @@
--- process.c
+++ process.c
@@ -2242,6 +2242,18 @@
#ifdef PTRACE_SETVRREGS
{ PTRACE_SETVRREGS, "PTRACE_SETVRREGS", },
#endif
+#ifdef PTRACE_SETOPTIONS
+ { PTRACE_SETOPTIONS, "PTRACE_SETOPTIONS", },
+#endif
+#ifdef PTRACE_GETEVENTMSG
+ { PTRACE_GETEVENTMSG, "PTRACE_GETEVENTMSG", },
+#endif
+#ifdef PTRACE_GETSIGINFO
+ { PTRACE_GETSIGINFO, "PTRACE_GETSIGINFO", },
+#endif
+#ifdef PTRACE_SETSIGINFO
+ { PTRACE_SETSIGINFO, "PTRACE_SETSIGINFO", },
+#endif
#ifdef SUNOS4
{ PTRACE_READDATA, "PTRACE_READDATA" },
{ PTRACE_WRITEDATA, "PTRACE_WRITEDATA" },
@@ -3016,10 +3028,12 @@
tprintf("%#lx, ", tcp->u_arg[2]);
#ifdef LINUX
switch (tcp->u_arg[0]) {
+#ifndef IA64
case PTRACE_PEEKDATA:
case PTRACE_PEEKTEXT:
case PTRACE_PEEKUSER:
break;
+#endif
case PTRACE_CONT:
case PTRACE_SINGLESTEP:
case PTRACE_SYSCALL:
@@ -3035,8 +3049,12 @@
case PTRACE_PEEKDATA:
case PTRACE_PEEKTEXT:
case PTRACE_PEEKUSER:
+#ifdef IA64
+ return RVAL_HEX;
+#else
printnum(tcp, tcp->u_arg[3], "%#lx");
break;
+#endif
}
}
#endif /* LINUX */

View File

@ -1,11 +0,0 @@
--- signal.c
+++ signal.c
@@ -1701,7 +1701,7 @@ sys_kill(tcp)
struct tcb *tcp;
{
if (entering(tcp)) {
- tprintf("%ld, %s", tcp->u_arg[0], signame(tcp->u_arg[1]));
+ tprintf("%d, %s", (pid_t)tcp->u_arg[0], signame(tcp->u_arg[1]));
}
return 0;
}

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1736de29c20e1501ba50aca824492fdb5fe0bbd054ae6f79f4ab9efd424c7a96
size 457272

105
strace-4.5.17.diff Normal file
View File

@ -0,0 +1,105 @@
--- process.c
+++ process.c
@@ -765,12 +765,12 @@ setarg(tcp, argnum)
{
#if defined (IA64)
{
- unsigned long *bsp, *ap;
+ unsigned long bsp, *ap;
if (upeek(tcp->pid, PT_AR_BSP, (long *) &bsp) , 0)
return -1;
- ap = ia64_rse_skip_regs(bsp, argnum);
+ ap = ia64_rse_skip_regs((unsigned long *) bsp, argnum);
errno = 0;
ptrace(PTRACE_POKEDATA, tcp->pid, (char *) ap, tcp->u_arg[argnum]);
if (errno)
@@ -2289,6 +2289,18 @@ static const struct xlat ptrace_cmds[] =
#ifdef PTRACE_SETVRREGS
{ PTRACE_SETVRREGS, "PTRACE_SETVRREGS", },
#endif
+#ifdef PTRACE_SETOPTIONS
+ { PTRACE_SETOPTIONS, "PTRACE_SETOPTIONS", },
+#endif
+#ifdef PTRACE_GETEVENTMSG
+ { PTRACE_GETEVENTMSG, "PTRACE_GETEVENTMSG", },
+#endif
+#ifdef PTRACE_GETSIGINFO
+ { PTRACE_GETSIGINFO, "PTRACE_GETSIGINFO", },
+#endif
+#ifdef PTRACE_SETSIGINFO
+ { PTRACE_SETSIGINFO, "PTRACE_SETSIGINFO", },
+#endif
#ifdef SUNOS4
{ PTRACE_READDATA, "PTRACE_READDATA" },
{ PTRACE_WRITEDATA, "PTRACE_WRITEDATA" },
--- resource.c
+++ resource.c
@@ -388,10 +388,10 @@ struct tcb *tcp;
si.loads[2]);
tprintf("totalram=%lu, freeram=%lu, ",
si.totalram, si.freeram);
- tprintf("sharedram=%lu, bufferram=%lu} ",
+ tprintf("sharedram=%lu, bufferram=%lu, ",
si.sharedram, si.bufferram);
- tprintf("totalswap=%lu, freeswap=%lu, procs=%hu}",
- si.totalswap, si.freeswap, si.procs);
+ tprintf("totalswap=%lu, freeswap=%lu, procs=%hu, mem_unit=%u}",
+ si.totalswap, si.freeswap, si.procs, si.mem_unit);
}
}
return 0;
--- strace-graph
+++ strace-graph
@@ -229,7 +229,7 @@ sub handle_trace {
push @$seq, ['EXEC', $filename, $argv];
$pr{$pid}{seq} = $seq;
- } elsif ($call eq 'fork' || $call eq 'clone' || $call eq 'vfork') {
+ } elsif ($call eq 'fork' || $call eq 'clone' || $call eq 'clone2' || $call eq 'vfork') {
return if $result == 0;
my $seq = $pr{$pid}{seq};
--- syscall.c
+++ syscall.c
@@ -1963,7 +1963,7 @@ struct tcb *tcp;
#elif defined (IA64)
{
if (!ia32) {
- unsigned long *out0, *rbs_end, cfm, sof, sol, i;
+ unsigned long *out0, rbs_end, cfm, sof, sol, i;
/* be backwards compatible with kernel < 2.4.4... */
# ifndef PT_RBS_END
# define PT_RBS_END PT_AR_BSP
@@ -1976,7 +1976,7 @@ struct tcb *tcp;
sof = (cfm >> 0) & 0x7f;
sol = (cfm >> 7) & 0x7f;
- out0 = ia64_rse_skip_regs(rbs_end, -sof + sol);
+ out0 = ia64_rse_skip_regs((unsigned long *)rbs_end, -sof + sol);
if (tcp->scno >= 0 && tcp->scno < nsyscalls
&& sysent[tcp->scno].nargs != -1)
--- util.c
+++ util.c
@@ -1300,7 +1300,7 @@ typedef unsigned long *arg_setup_state;
static int
arg_setup(struct tcb *tcp, arg_setup_state *state)
{
- unsigned long *bsp, cfm, sof, sol;
+ unsigned long bsp, cfm, sof, sol;
if (ia32)
return 0;
@@ -1312,9 +1312,8 @@ arg_setup(struct tcb *tcp, arg_setup_sta
sof = (cfm >> 0) & 0x7f;
sol = (cfm >> 7) & 0x7f;
- bsp = ia64_rse_skip_regs(bsp, -sof + sol);
+ *state = ia64_rse_skip_regs((unsigned long *) bsp, -sof + sol);
- *state = bsp;
return 0;
}

3
strace-4.5.17.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9ba497b368fe08982bd6d03dbfa4d942ee1b2438e641ea754b682bd5b7536c9d
size 478548

View File

@ -1,11 +0,0 @@
--- strace-graph
+++ strace-graph
@@ -229,7 +229,7 @@
push @$seq, ['EXEC', $filename, $argv];
$pr{$pid}{seq} = $seq;
- } elsif ($call eq 'fork' || $call eq 'clone' || $call eq 'vfork') {
+ } elsif ($call eq 'fork' || $call eq 'clone' || $call eq 'clone2' || $call eq 'vfork') {
return if $result == 0;
my $seq = $pr{$pid}{seq};

View File

@ -1,16 +0,0 @@
--- resource.c
+++ resource.c
@@ -388,10 +388,10 @@
si.loads[2]);
tprintf("totalram=%lu, freeram=%lu, ",
si.totalram, si.freeram);
- tprintf("sharedram=%lu, bufferram=%lu} ",
+ tprintf("sharedram=%lu, bufferram=%lu, ",
si.sharedram, si.bufferram);
- tprintf("totalswap=%lu, freeswap=%lu, procs=%hu}",
- si.totalswap, si.freeswap, si.procs);
+ tprintf("totalswap=%lu, freeswap=%lu, procs=%hu, mem_unit=%u}",
+ si.totalswap, si.freeswap, si.procs, si.mem_unit);
}
}
return 0;

View File

@ -1,3 +1,16 @@
-------------------------------------------------------------------
Tue Jul 22 09:47:31 CEST 2008 - schwab@suse.de
- Update to strace 4.5.16.
* Many bug fixes.
* -F is now deprecated, -f has traced vfork too on Linux for a long time
now.
* Print O_CLOEXEC, MSG_CMSG_CLOEXEC flag bits.
* Improved output for prctl system call on Linux.
* Improved support for Linux/ARM.
* SA_NOMASK is now spelled SA_NODEFER, and SA_ONESHOT is spelled
SA_RESETHAND.
-------------------------------------------------------------------
Mon Jun 30 18:44:58 CEST 2008 - schwab@suse.de

View File

@ -1,5 +1,5 @@
#
# spec file for package strace (Version 4.5.16)
# spec file for package strace (Version 4.5.17)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@ -8,7 +8,6 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
Name: strace
@ -16,19 +15,11 @@ BuildRequires: libacl-devel
License: BSD 3-Clause
Group: Development/Tools/Debuggers
AutoReqProv: on
Version: 4.5.16
Release: 56
Version: 4.5.17
Release: 1
Summary: A utility to trace the system calls of a program
Source: strace-%{version}.tar.bz2
Patch: strace-%{version}.diff
Patch1: warn.patch
Patch3: syscalls.diff
Patch4: strace-sysinfo.diff
Patch5: strace-graph.diff
Patch6: ioctl.diff
Patch8: ptrace.diff
Patch9: vfork.diff
Patch10: clone2.diff
Url: http://sourceforge.net/projects/strace/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@ -48,14 +39,6 @@ Authors:
%prep
%setup -q
%patch
%patch1
%patch3
%patch4
%patch5
%patch6
%patch8
%patch9
%patch10
%build
export CFLAGS="$RPM_OPT_FLAGS"
@ -79,6 +62,16 @@ rm -rf $RPM_BUILD_ROOT
%doc %{_mandir}/man1/strace.1.gz
%changelog
* Tue Jul 22 2008 schwab@suse.de
- Update to strace 4.5.16.
* Many bug fixes.
* -F is now deprecated, -f has traced vfork too on Linux for a long time
now.
* Print O_CLOEXEC, MSG_CMSG_CLOEXEC flag bits.
* Improved output for prctl system call on Linux.
* Improved support for Linux/ARM.
* SA_NOMASK is now spelled SA_NODEFER, and SA_ONESHOT is spelled
SA_RESETHAND.
* Mon Jun 30 2008 schwab@suse.de
- Fix following vfork and clone2.
* Thu Apr 10 2008 ro@suse.de

View File

@ -1,123 +0,0 @@
--- linux/alpha/syscallent.h
+++ linux/alpha/syscallent.h
@@ -403,9 +403,9 @@
{ 3, 0, printargs, "getresgid" }, /* 372 */
{ 4, 0, printargs, "dipc" }, /* 373, not implemented */
{ 2, TF, printargs, "pivot_root" }, /* 374 */
- { 3, 0, printargs, "mincore" }, /* 375 */
+ { 3, 0, sys_mincore, "mincore" }, /* 375 */
{ 4, 0, printargs, "pciconfig_iobase" }, /* 376 */
- { 4, TD, sys_getdents64, "getdents64" }, /* 377 */
+ { 3, TD, sys_getdents64, "getdents64" }, /* 377 */
{ 0, 0, printargs, "gettid" }, /* 378 */
{ 4, TD, sys_readahead, "readahead" }, /* 379 */
{ 5, 0, printargs, "SYS_380" }, /* 380 */
--- linux/arm/syscallent.h
+++ linux/arm/syscallent.h
@@ -247,7 +247,7 @@
{ 1, 0, sys_setgid, "setgid32" }, /* 214 */
{ 1, 0, sys_setfsuid, "setfsuid32" }, /* 215 */
{ 1, 0, sys_setfsgid, "setfsgid32" }, /* 216 */
- { 4, 0, sys_getdents64, "getdents64" }, /* 217 */
+ { 3, 0, sys_getdents64, "getdents64" }, /* 217 */
{ 2, TF, sys_pivotroot, "pivot_root" }, /* 218 */
{ 3, 0, printargs, "mincore" }, /* 219 */
{ 3, 0, sys_madvise, "madvise" }, /* 220 */
--- linux/ia64/syscallent.h
+++ linux/ia64/syscallent.h
@@ -1014,13 +1014,13 @@
{ 3, TN, sys_sendmsg, "sendmsg" }, /* 1205 */
{ 3, TN, sys_recvmsg, "recvmsg" }, /* 1206 */
{ 2, TF, sys_pivotroot, "pivot_root" }, /* 1207 */
- { 3, 0, printargs, "mincore" }, /* 1208 */
+ { 3, 0, sys_mincore, "mincore" }, /* 1208 */
{ 3, 0, sys_madvise, "madvise" }, /* 1209 */
{ 2, TF, sys_stat, "stat" }, /* 1210 */
{ 2, 0, sys_lstat, "lstat" }, /* 1211 */
{ 2, TD, sys_fstat, "fstat" }, /* 1212 */
{ 6, TP, sys_clone, "clone2" }, /* 1213 */
- { 3, 0, printargs, "getdents64" }, /* 1214 */
+ { 3, TD, sys_getdents64, "getdents64" }, /* 1214 */
{ 2, 0, printargs, "getunwind" }, /* 1215 */
{ 4, TD, sys_readahead, "readahead" }, /* 1216 */
{ 5, TF, sys_setxattr, "setxattr" }, /* 1217 */
--- linux/m68k/syscallent.h
+++ linux/m68k/syscallent.h
@@ -248,7 +248,7 @@
{ 2, TF, sys_pivotroot, "pivot_root" }, /* 217 */
{ 5, 0, printargs, "SYS_218" }, /* 218 */
{ 5, 0, printargs, "SYS_219" }, /* 219 */
- { 4, 0, sys_getdents64, "getdents64" }, /* 220 */
+ { 3, TD, sys_getdents64, "getdents64" }, /* 220 */
{ 0, 0, printargs, "gettid" }, /* 221 */
{ 2, TS, sys_kill, "tkill" }, /* 222 */
{ 5, TF, sys_setxattr, "setxattr" }, /* 223 */
--- linux/mips/syscallent.h
+++ linux/mips/syscallent.h
@@ -4215,7 +4215,7 @@
{ 2, TF, sys_lstat64, "lstat64" }, /* 4214 */
{ 2, TD, sys_fstat64, "fstat64" }, /* 4215 */
{ 2, TF, sys_pivotroot, "pivot_root" }, /* 4216 */
- { 3, 0, printargs, "mincore" }, /* 4217 */
+ { 3, 0, sys_mincore, "mincore" }, /* 4217 */
{ 3, 0, sys_madvise, "madvise" }, /* 4218 */
{ 3, TF, sys_getdents64, "getdents64" }, /* 4219 */
{ 3, TD, sys_fcntl, "fcntl64" }, /* 4220 */
--- linux/powerpc/syscallent.h
+++ linux/powerpc/syscallent.h
@@ -299,7 +299,7 @@
{ 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 267 */
{ 5, 0, printargs, "sys_kexec_load" }, /* 268 */
{ 5, 0, printargs, "add_key" }, /* 269 */
- { 5, 0, printargs, "request_key" }, /* 270 */
+ { 4, 0, printargs, "request_key" }, /* 270 */
{ 5, 0, printargs, "keyctl" }, /* 271 */
{ 5, TP, sys_waitid, "waitid" }, /* 272 */
{ 3, 0, printargs, "ioprio_set" }, /* 273 */
--- linux/sh/syscallent.h
+++ linux/sh/syscallent.h
@@ -250,9 +250,9 @@
{ 1, 0, printargs, "setfsuid32" }, /* 215 */
{ 1, 0, printargs, "setfsgid32" }, /* 216 */
{ 2, TF, sys_pivotroot, "pivot_root" }, /* 217 */
- { 3, 0, printargs, "mincore" }, /* 218 */
+ { 3, 0, sys_mincore, "mincore" }, /* 218 */
{ 3, 0, sys_madvise, "madvise" }, /* 219 */
- { 4, 0, printargs, "getdents64" }, /* 220 */
+ { 3, TD, sys_getdents64, "getdents64" }, /* 220 */
{ 3, TD, sys_fcntl, "fcntl64" }, /* 221 */
{ 4, 0, printargs, "SYS_222" }, /* 222 */
{ 4, 0, printargs, "SYS_223" }, /* 223 */
--- linux/sparc/syscallent.h
+++ linux/sparc/syscallent.h
@@ -152,7 +152,7 @@
{ 4, TN, sys_getmsg, "getmsg" }, /* 151 */
{ 4, TN, sys_putmsg, "putmsg" }, /* 152 */
{ 3, TD, sys_poll, "poll" }, /* 153 */
- { 4, TD, sys_getdents64, "getdents64" }, /* 154 */
+ { 3, TD, sys_getdents64, "getdents64" }, /* 154 */
{ 3, TD, sys_fcntl, "fcntl64" }, /* 155 */
{ 4, 0, printargs, "getdirentries" }, /* 156 */
{ 2, TF, sys_statfs, "statfs" }, /* 157 */
--- linux/syscallent.h
+++ linux/syscallent.h
@@ -250,7 +250,7 @@
{ 2, TF, sys_pivotroot, "pivot_root" }, /* 217 */
{ 3, 0, sys_mincore, "mincore" }, /* 218 */
{ 3, 0, sys_madvise, "madvise" }, /* 219 */
- { 4, TD, sys_getdents64, "getdents64" }, /* 220 */
+ { 3, TD, sys_getdents64, "getdents64" }, /* 220 */
{ 3, TD, sys_fcntl, "fcntl64" }, /* 221 */
{ 4, 0, printargs, "SYS_222" }, /* 222 */
/*TODO*/{ 5, 0, printargs, "security" }, /* 223 */
--- linux/x86_64/syscallent.h
+++ linux/x86_64/syscallent.h
@@ -215,7 +215,7 @@
{ 4, 0, printargs, "epoll_ctl_old" }, /* 214 */
{ 4, 0, printargs, "epoll_wait_old"}, /* 215 */
{ 5, 0, sys_remap_file_pages, "remap_file_pages"}, /* 216 */
- { 4, TD, sys_getdents64, "getdents64" }, /* 217 */
+ { 3, TD, sys_getdents64, "getdents64" }, /* 217 */
{ 1, 0, printargs, "set_tid_address"}, /* 218 */
{ 0, 0, sys_restart_syscall, "restart_syscall"}, /* 219 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 220 */

View File

@ -1,42 +0,0 @@
2008-06-27 Jan Kratochvil <jan.kratochvil@redhat.com>
* util.c (CLONE_VFORK): Define if not defined already.
(setbpt): Clear CLONE_VFORK for SYS_CLONE and SYS_CLONE2. New comment.
Originally found by Vitaly Mayatskikh.
--- util.c 20 May 2008 00:34:34 -0000 1.75
+++ util.c 30 Jun 2008 12:53:31 -0000
@@ -1281,6 +1281,9 @@ struct tcb *tcp;
#ifndef CLONE_PTRACE
# define CLONE_PTRACE 0x00002000
#endif
+#ifndef CLONE_VFORK
+# define CLONE_VFORK 0x00004000
+#endif
#ifndef CLONE_STOPPED
# define CLONE_STOPPED 0x02000000
#endif
@@ -1524,12 +1527,17 @@ struct tcb *tcp;
#ifdef SYS_clone2
case SYS_clone2:
#endif
- if ((tcp->u_arg[arg0_index] & CLONE_PTRACE) == 0
- && (arg_setup (tcp, &state) < 0
- || set_arg0 (tcp, &state,
- tcp->u_arg[arg0_index] | CLONE_PTRACE) < 0
- || arg_finish_change (tcp, &state) < 0))
- return -1;
+ /* ia64 calls directly `clone (CLONE_VFORK)' contrary to x86
+ SYS_vfork above. Even on x86 we turn the VFORK semantics
+ into plain FORK - each application must not depend on the
+ VFORK specifics according to POSIX. We would hang waiting
+ for the parent resume otherwise. */
+ if ((arg_setup (tcp, &state) < 0
+ || set_arg0 (tcp, &state,
+ (tcp->u_arg[arg0_index] | CLONE_PTRACE)
+ & ~CLONE_VFORK) < 0
+ || arg_finish_change (tcp, &state) < 0))
+ return -1;
tcp->flags |= TCB_BPTSET;
tcp->inst[0] = tcp->u_arg[arg0_index];
tcp->inst[1] = tcp->u_arg[arg1_index];

View File

@ -1,59 +0,0 @@
--- process.c
+++ process.c
@@ -718,12 +718,12 @@
{
#if defined (IA64)
{
- unsigned long *bsp, *ap;
+ unsigned long bsp, *ap;
if (upeek(tcp->pid, PT_AR_BSP, (long *) &bsp) , 0)
return -1;
- ap = ia64_rse_skip_regs(bsp, argnum);
+ ap = ia64_rse_skip_regs((unsigned long *) bsp, argnum);
errno = 0;
ptrace(PTRACE_POKEDATA, tcp->pid, (char *) ap, tcp->u_arg[argnum]);
if (errno)
--- syscall.c
+++ syscall.c
@@ -1803,7 +1803,7 @@
#elif defined (IA64)
{
if (!ia32) {
- unsigned long *out0, *rbs_end, cfm, sof, sol, i;
+ unsigned long *out0, rbs_end, cfm, sof, sol, i;
/* be backwards compatible with kernel < 2.4.4... */
# ifndef PT_RBS_END
# define PT_RBS_END PT_AR_BSP
@@ -1816,7 +1816,7 @@
sof = (cfm >> 0) & 0x7f;
sol = (cfm >> 7) & 0x7f;
- out0 = ia64_rse_skip_regs(rbs_end, -sof + sol);
+ out0 = ia64_rse_skip_regs((unsigned long *)rbs_end, -sof + sol);
if (tcp->scno >= 0 && tcp->scno < nsyscalls
&& sysent[tcp->scno].nargs != -1)
--- util.c
+++ util.c
@@ -1172,7 +1172,7 @@
static int
arg_setup(struct tcb *tcp, arg_setup_state *state)
{
- unsigned long *bsp, cfm, sof, sol;
+ unsigned long bsp, cfm, sof, sol;
if (ia32)
return 0;
@@ -1184,9 +1184,8 @@
sof = (cfm >> 0) & 0x7f;
sol = (cfm >> 7) & 0x7f;
- bsp = ia64_rse_skip_regs(bsp, -sof + sol);
+ *state = ia64_rse_skip_regs((unsigned long *) bsp, -sof + sol);
- *state = bsp;
return 0;
}