mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-11 09:56:29 +00:00
47 lines
811 B
C
47 lines
811 B
C
#include <features.h>
|
|
#include <fpu_control.h>
|
|
#include <signal.h>
|
|
#include <sys/types.h>
|
|
#include <signal.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <ucontext.h>
|
|
#include <unistd.h>
|
|
|
|
char source[40] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\0";
|
|
char target[40] = " \0";
|
|
|
|
void handle_SIG(int sig)
|
|
{
|
|
static int counter;
|
|
char buf2[40];
|
|
|
|
counter++;
|
|
asm volatile( "larl 1,1f\n"
|
|
"ex 0,0(1)\n"
|
|
"j 2f\n"
|
|
"1: mvc 0(30,%0),0(%1)\n"
|
|
"2:\n"
|
|
::"a" (buf2), "a" (source)
|
|
: "1");
|
|
if (counter == 2) {
|
|
printf("%s\n", target);
|
|
exit(1);
|
|
} else
|
|
alarm(1);
|
|
}
|
|
|
|
int main()
|
|
{
|
|
signal(SIGALRM, handle_SIG);
|
|
alarm(1);
|
|
|
|
asm volatile( "larl 1,1f\n"
|
|
"0: ex 0,0(1)\n"
|
|
"j 0b\n"
|
|
"1: mvc 0(20,%0),0(%1)\n"
|
|
::"a" (target), "a" (source)
|
|
: "1");
|
|
exit(0);
|
|
}
|