Lines Matching full:regs
55 * Helper to invoke int80 with controlled regs and capture the final regs.
77 * controlled regs and capture the final regs. This is so nasty that it
132 printf("[FAIL]\tgetpid() failed to preserve regs\n");
135 printf("[OK]\tgetpid() preserves regs\n");
147 printf("[FAIL]\tkill(getpid(), SIGUSR1) failed to preserve regs\n");
150 printf("[OK]\tkill(getpid(), SIGUSR1) preserves regs\n");
181 struct user_regs_struct regs;
188 if (ptrace(PTRACE_GETREGS, chld, 0, ®s) != 0)
191 if (regs.user_syscall_nr != SYS_gettid ||
192 regs.user_arg0 != 10 || regs.user_arg1 != 11 ||
193 regs.user_arg2 != 12 || regs.user_arg3 != 13 ||
194 regs.user_arg4 != 14 || regs.user_arg5 != 15) {
195 printf("[FAIL]\tInitial args are wrong (nr=%lu, args=%lu %lu %lu %lu %lu %lu)\n", (unsigned long)regs.user_syscall_nr, (unsigned long)regs.user_arg0, (unsigned long)regs.user_arg1, (unsigned long)regs.user_arg2, (unsigned long)regs.user_arg3, (unsigned long)regs.user_arg4, (unsigned long)regs.user_arg5);
202 (unsigned long)regs.user_ip);
210 regs.user_ax = regs.user_syscall_nr;
211 regs.user_ip -= 2;
212 if (ptrace(PTRACE_SETREGS, chld, 0, ®s) != 0)
219 if (ptrace(PTRACE_GETREGS, chld, 0, ®s) != 0)
222 if (regs.user_syscall_nr != SYS_gettid ||
223 regs.user_arg0 != 10 || regs.user_arg1 != 11 ||
224 regs.user_arg2 != 12 || regs.user_arg3 != 13 ||
225 regs.user_arg4 != 14 || regs.user_arg5 != 15) {
226 printf("[FAIL]\tRestart nr or args are wrong (nr=%lu, args=%lu %lu %lu %lu %lu %lu)\n", (unsigned long)regs.user_syscall_nr, (unsigned long)regs.user_arg0, (unsigned long)regs.user_arg1, (unsigned long)regs.user_arg2, (unsigned long)regs.user_arg3, (unsigned long)regs.user_arg4, (unsigned long)regs.user_arg5);
233 (unsigned long)regs.user_ip);
235 regs.user_ax = SYS_getpid;
236 regs.user_arg0 = 20;
237 regs.user_arg1 = 21;
238 regs.user_arg2 = 22;
239 regs.user_arg3 = 23;
240 regs.user_arg4 = 24;
241 regs.user_arg5 = 25;
242 regs.user_ip -= 2;
244 if (ptrace(PTRACE_SETREGS, chld, 0, ®s) != 0)
251 if (ptrace(PTRACE_GETREGS, chld, 0, ®s) != 0)
254 if (regs.user_syscall_nr != SYS_getpid ||
255 regs.user_arg0 != 20 || regs.user_arg1 != 21 || regs.user_arg2 != 22 ||
256 regs.user_arg3 != 23 || regs.user_arg4 != 24 || regs.user_arg5 != 25) {
257 printf("[FAIL]\tRestart nr or args are wrong (nr=%lu, args=%lu %lu %lu %lu %lu %lu)\n", (unsigned long)regs.user_syscall_nr, (unsigned long)regs.user_arg0, (unsigned long)regs.user_arg1, (unsigned long)regs.user_arg2, (unsigned long)regs.user_arg3, (unsigned long)regs.user_arg4, (unsigned long)regs.user_arg5);
302 struct user_regs_struct regs;
311 if (ptrace(PTRACE_GETREGS, chld, 0, ®s) != 0)
314 if (regs.user_syscall_nr != SYS_pause ||
315 regs.user_arg0 != 0 || regs.user_arg1 != 0 ||
316 regs.user_arg2 != 0 || regs.user_arg3 != 0 ||
317 regs.user_arg4 != 0 || regs.user_arg5 != 0) {
318 printf("[FAIL]\tInitial args are wrong (nr=%lu, args=%lu %lu %lu %lu %lu %lu)\n", (unsigned long)regs.user_syscall_nr, (unsigned long)regs.user_arg0, (unsigned long)regs.user_arg1, (unsigned long)regs.user_arg2, (unsigned long)regs.user_arg3, (unsigned long)regs.user_arg4, (unsigned long)regs.user_arg5);
333 if (ptrace(PTRACE_GETREGS, chld, 0, ®s) != 0)
336 if (regs.user_syscall_nr != SYS_pause ||
337 regs.user_arg0 != 0 || regs.user_arg1 != 0 ||
338 regs.user_arg2 != 0 || regs.user_arg3 != 0 ||
339 regs.user_arg4 != 0 || regs.user_arg5 != 0) {
340 printf("[FAIL]\tArgs after SIGUSR1 are wrong (nr=%lu, args=%lu %lu %lu %lu %lu %lu)\n", (unsigned long)regs.user_syscall_nr, (unsigned long)regs.user_arg0, (unsigned long)regs.user_arg1, (unsigned long)regs.user_arg2, (unsigned long)regs.user_arg3, (unsigned long)regs.user_arg4, (unsigned long)regs.user_arg5);
344 (long)regs.user_ax);
347 /* Poke the regs back in. This must not break anything. */
348 if (ptrace(PTRACE_SETREGS, chld, 0, ®s) != 0)
371 if (ptrace(PTRACE_GETREGS, chld, 0, ®s) != 0)
374 if (regs.user_syscall_nr != SYS_pause ||
375 regs.user_arg0 != 0 || regs.user_arg1 != 0 ||
376 regs.user_arg2 != 0 || regs.user_arg3 != 0 ||
377 regs.user_arg4 != 0 || regs.user_arg5 != 0) {
378 printf("[FAIL]\tpause did not restart (nr=%lu, args=%lu %lu %lu %lu %lu %lu)\n", (unsigned long)regs.user_syscall_nr, (unsigned long)regs.user_arg0, (unsigned long)regs.user_arg1, (unsigned long)regs.user_arg2, (unsigned long)regs.user_arg3, (unsigned long)regs.user_arg4, (unsigned long)regs.user_arg5);
392 printf("[RUN]\tCheck int80 return regs\n");
398 printf("[RUN]\tCheck AT_SYSINFO return regs\n");