#include <cstdio>
#include <signal.h>
#include <stdlib.h>
int main ();
template <int D> inline void* RA() {
void *result = __builtin_return_address (D);
return result;
}
inline void* ra (int arg) {
switch (arg) {
case 0: return RA<0>();
case 1: return RA<1>();
case 2: return RA<2>();
case 3: return RA<3>();
case 4: return RA<4>();
case 5: return RA<5>();
case 6: return RA<6>();
case 7: return RA<7>();
case 8: return RA<8>();
case 9: return RA<9>();
}
return nullptr;
}
void handler(int sig) {
exit(1);
}
int main () {
signal(SIGSEGV, handler);
printf("ptr0=%p\n", ra(0));
printf("ptr1=%p\n", ra(1));
printf("ptr2=%p\n", ra(2));
printf("ptr3=%p\n", ra(3));
printf("ptr4=%p\n", ra(4));
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPHNpZ25hbC5oPgojaW5jbHVkZSA8c3RkbGliLmg+CgppbnQgbWFpbiAoKTsKCnRlbXBsYXRlIDxpbnQgRD4gaW5saW5lIHZvaWQqIFJBKCkgewogIHZvaWQgKnJlc3VsdCA9IF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcyAoRCk7CiAgcmV0dXJuIHJlc3VsdDsKfQoKaW5saW5lIHZvaWQqIHJhIChpbnQgYXJnKSB7CgogIHN3aXRjaCAoYXJnKSB7CiAgICBjYXNlIDA6IHJldHVybiBSQTwwPigpOwogICAgY2FzZSAxOiByZXR1cm4gUkE8MT4oKTsKICAgIGNhc2UgMjogcmV0dXJuIFJBPDI+KCk7CiAgICBjYXNlIDM6IHJldHVybiBSQTwzPigpOwogICAgY2FzZSA0OiByZXR1cm4gUkE8ND4oKTsKICAgIGNhc2UgNTogcmV0dXJuIFJBPDU+KCk7CiAgICBjYXNlIDY6IHJldHVybiBSQTw2PigpOwogICAgY2FzZSA3OiByZXR1cm4gUkE8Nz4oKTsKICAgIGNhc2UgODogcmV0dXJuIFJBPDg+KCk7CiAgICBjYXNlIDk6IHJldHVybiBSQTw5PigpOwogIH0KCiAgcmV0dXJuIG51bGxwdHI7Cn0KCnZvaWQgaGFuZGxlcihpbnQgc2lnKSB7CiAgZXhpdCgxKTsKfQoKaW50IG1haW4gKCkgewogIHNpZ25hbChTSUdTRUdWLCBoYW5kbGVyKTsgIAogIAogIHByaW50ZigicHRyMD0lcFxuIiwgcmEoMCkpOwogIHByaW50ZigicHRyMT0lcFxuIiwgcmEoMSkpOwogIHByaW50ZigicHRyMj0lcFxuIiwgcmEoMikpOwogIHByaW50ZigicHRyMz0lcFxuIiwgcmEoMykpOwogIHByaW50ZigicHRyND0lcFxuIiwgcmEoNCkpOwogIAogIHJldHVybiAwOwp9