Lines Matching refs:regs

53  * Helper to invoke int80 with controlled regs and capture the final regs.
75 * controlled regs and capture the final regs. This is so nasty that it
152 printf("[FAIL]\tgetpid() failed to preserve regs\n");
155 printf("[OK]\tgetpid() preserves regs\n");
167 printf("[FAIL]\tkill(getpid(), SIGUSR1) failed to preserve regs\n");
170 printf("[OK]\tkill(getpid(), SIGUSR1) preserves regs\n");
201 struct user_regs_struct regs;
208 if (ptrace(PTRACE_GETREGS, chld, 0, &regs) != 0)
211 if (regs.user_syscall_nr != SYS_gettid ||
212 regs.user_arg0 != 10 || regs.user_arg1 != 11 ||
213 regs.user_arg2 != 12 || regs.user_arg3 != 13 ||
214 regs.user_arg4 != 14 || regs.user_arg5 != 15) {
215 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);
222 (unsigned long)regs.user_ip);
230 regs.user_ax = regs.user_syscall_nr;
231 regs.user_ip -= 2;
232 if (ptrace(PTRACE_SETREGS, chld, 0, &regs) != 0)
239 if (ptrace(PTRACE_GETREGS, chld, 0, &regs) != 0)
242 if (regs.user_syscall_nr != SYS_gettid ||
243 regs.user_arg0 != 10 || regs.user_arg1 != 11 ||
244 regs.user_arg2 != 12 || regs.user_arg3 != 13 ||
245 regs.user_arg4 != 14 || regs.user_arg5 != 15) {
246 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);
253 (unsigned long)regs.user_ip);
255 regs.user_ax = SYS_getpid;
256 regs.user_arg0 = 20;
257 regs.user_arg1 = 21;
258 regs.user_arg2 = 22;
259 regs.user_arg3 = 23;
260 regs.user_arg4 = 24;
261 regs.user_arg5 = 25;
262 regs.user_ip -= 2;
264 if (ptrace(PTRACE_SETREGS, chld, 0, &regs) != 0)
271 if (ptrace(PTRACE_GETREGS, chld, 0, &regs) != 0)
274 if (regs.user_syscall_nr != SYS_getpid ||
275 regs.user_arg0 != 20 || regs.user_arg1 != 21 || regs.user_arg2 != 22 ||
276 regs.user_arg3 != 23 || regs.user_arg4 != 24 || regs.user_arg5 != 25) {
277 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);
322 struct user_regs_struct regs;
331 if (ptrace(PTRACE_GETREGS, chld, 0, &regs) != 0)
334 if (regs.user_syscall_nr != SYS_pause ||
335 regs.user_arg0 != 0 || regs.user_arg1 != 0 ||
336 regs.user_arg2 != 0 || regs.user_arg3 != 0 ||
337 regs.user_arg4 != 0 || regs.user_arg5 != 0) {
338 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);
353 if (ptrace(PTRACE_GETREGS, chld, 0, &regs) != 0)
356 if (regs.user_syscall_nr != SYS_pause ||
357 regs.user_arg0 != 0 || regs.user_arg1 != 0 ||
358 regs.user_arg2 != 0 || regs.user_arg3 != 0 ||
359 regs.user_arg4 != 0 || regs.user_arg5 != 0) {
360 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);
364 (long)regs.user_ax);
367 /* Poke the regs back in. This must not break anything. */
368 if (ptrace(PTRACE_SETREGS, chld, 0, &regs) != 0)
391 if (ptrace(PTRACE_GETREGS, chld, 0, &regs) != 0)
394 if (regs.user_syscall_nr != SYS_pause ||
395 regs.user_arg0 != 0 || regs.user_arg1 != 0 ||
396 regs.user_arg2 != 0 || regs.user_arg3 != 0 ||
397 regs.user_arg4 != 0 || regs.user_arg5 != 0) {
398 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);
412 printf("[RUN]\tCheck int80 return regs\n");
418 printf("[RUN]\tCheck AT_SYSINFO return regs\n");