#include <stdlib.h>
#include <csignal>
#include <cstdlib>
#include <exception>
#include <iostream>
void print (char const* msg) { std::cout << msg << std::endl; }
void on_exit() { print("on_exit"); }
struct class_exit_t { ~class_exit_t() { print ("class_exit"); } };
class_exit_t class_exit;
void my_term () { print("my_term"); abort(); }
void on_abort(int) { print("on_abort"); }
int main ()
{
atexit (&on_exit);
signal(SIGABRT, &on_abort);
std::set_terminate (&my_term);
#if 0
_Exit(EXIT_FAILURE);
#else
std::terminate ();
#endif
return 0;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8Y3NpZ25hbD4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxleGNlcHRpb24+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnZvaWQgcHJpbnQgKGNoYXIgY29uc3QqIG1zZykgeyBzdGQ6OmNvdXQgPDwgbXNnIDw8IHN0ZDo6ZW5kbDsgfQoKdm9pZCBvbl9leGl0KCkgeyBwcmludCgib25fZXhpdCIpOyB9CgpzdHJ1Y3QgY2xhc3NfZXhpdF90IHsgfmNsYXNzX2V4aXRfdCgpIHsgcHJpbnQgKCJjbGFzc19leGl0Iik7IH0gfTsKCmNsYXNzX2V4aXRfdCBjbGFzc19leGl0OwoKdm9pZCBteV90ZXJtICgpIHsgcHJpbnQoIm15X3Rlcm0iKTsgYWJvcnQoKTsgfQoKdm9pZCBvbl9hYm9ydChpbnQpIHsgcHJpbnQoIm9uX2Fib3J0Iik7IH0KCmludCBtYWluICgpCnsKICBhdGV4aXQgKCZvbl9leGl0KTsKICBzaWduYWwoU0lHQUJSVCwgJm9uX2Fib3J0KTsKICBzdGQ6OnNldF90ZXJtaW5hdGUgKCZteV90ZXJtKTsKCiNpZiAwCiAgX0V4aXQoRVhJVF9GQUlMVVJFKTsKI2Vsc2UKICBzdGQ6OnRlcm1pbmF0ZSAoKTsKI2VuZGlmCgogIHJldHVybiAwOwp9Cg==