UML - Dump registers on ptrace or wait failure
PATCH 3/4 UML - Dump registers on ptrace or wait failure
Provide a register dump if handle_trap fails. Abstract out ptrace_dump_regs since it now has two callers.
Signed-off-by Jeff Dike <[email protected]>
--
arch/um/os-Linux/skas/process.c | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-)
arch/um/os-Linux/skas/process.c +25 -12
@@ -44,6 +44,22 @@ int is_skas_winch(int pid, int fd, voidreturn (1 ); } +static int ptrace_dump_regs (int pid) +{ +unsigned long regs[MAX_REG_NR ]; +int i; + +if (ptrace (PTRACE_GETREGS , pid,0 , regs) <0 ) +return -errno; +else { +printk ("Stub registers -\n" ); +for (i =0 ; i <ARRAY_SIZE (regs); i++) +printk ("\t%d - %lx\n" , i, regs[i]); + } + +return 0 ; +} +void wait_stub_done (int pid,int sig,char * fname) {int n, status, err;
@@ -67,18 +83,10 @@ void wait_stub_done(int pid, int sig, chif ((n <0 ) || !WIFSTOPPED (status) || (WSTOPSIG (status) !=SIGUSR1 &&WSTOPSIG (status) !=SIGTRAP )){ -unsigned long regs[MAX_REG_NR ]; - -if (ptrace (PTRACE_GETREGS , pid,0 , regs) <0 ) + err =ptrace_dump_regs (pid); +if (err)printk ("Failed to get registers from stub, " -"errno = %d\n" , errno); -else { -int i; - -printk ("Stub registers -\n" ); -for (i =0 ; i <ARRAY_SIZE (regs); i++) -printk ("\t%d - %lx\n" , i, regs[i]); - } +"errno = %d\n" , -err);panic ("%s : failed to wait for SIGUSR1/SIGTRAP, " "pid = %d, n = %d, errno = %d, status = 0x%x\n" , fname, pid, n, errno, status);
@@ -142,9 +150,14 @@ static void handle_trap(int pid, union uCATCH_EINTR (err =waitpid (pid, &status,WUNTRACED ));if ((err <0 ) || !WIFSTOPPED (status) || - (WSTOPSIG (status) !=SIGTRAP +0x80 )) + (WSTOPSIG (status) !=SIGTRAP +0x80 )){ + err =ptrace_dump_regs (pid); +if (err) +printk ("Failed to get registers from process, " +"errno = %d\n" , -err);panic ("handle_trap - failed to wait at end of syscall, " "errno = %d, status = %d\n" , errno, status); + } }handle_syscall (regs);
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel