1 // This file is compiled and linked into the S-record format. 2 3 #define FOO_MSG_LEN 80 4 5 class Foo { 6 static int foos; 7 int i; 8 static const int len = FOO_MSG_LEN; 9 char message[len]; 10 public: 11 static void init_foo (); nb_foos()12 static int nb_foos() { return foos; } 13 Foo(); 14 Foo(const char* message); 15 Foo(const Foo&); 16 Foo & operator= (const Foo&); 17 ~Foo (); 18 }; 19 20 static Foo static_foo( "static_foo"); 21 22 int main()23main () 24 { 25 Foo automatic_foo( "automatic_foo"); 26 return 0; 27 } 28 29 void terminate(void)30terminate(void) 31 { 32 /* This recursive call prevents a compiler warning that the noreturn 33 function terminate actually does return. */ 34 terminate (); 35 } 36 37 extern "C" { 38 void __main()39__main () 40 { 41 } 42 43 void __builtin_delete()44__builtin_delete () 45 { 46 } 47 48 void __builtin_new()49__builtin_new () 50 { 51 } 52 53 void __throw()54__throw () 55 { 56 } 57 58 void __rethrow()59__rethrow () 60 { 61 } 62 63 void __terminate()64__terminate () 65 { 66 } 67 68 void *__eh_pc; 69 70 void *** __get_dynamic_handler_chain()71__get_dynamic_handler_chain () 72 { 73 return 0; 74 } 75 76 void * __get_eh_context()77__get_eh_context () 78 { 79 return 0; 80 } 81 82 } 83 84 int Foo::foos = 0; 85 init_foo()86void Foo::init_foo () 87 { 88 foos = 80; 89 } 90 Foo()91Foo::Foo () 92 { 93 i = ++foos; 94 } 95 Foo(const char *)96Foo::Foo (const char*) 97 { 98 i = ++foos; 99 } 100 Foo(const Foo & foo)101Foo::Foo (const Foo& foo) 102 { 103 i = ++foos; 104 for (int k = 0; k < FOO_MSG_LEN; k++) 105 message[k] = foo.message[k]; 106 } 107 operator =(const Foo & foo)108Foo& Foo::operator= (const Foo& foo) 109 { 110 for (int k = 0; k < FOO_MSG_LEN; k++) 111 message[k] = foo.message[k]; 112 return *this; 113 } 114 ~Foo()115Foo::~Foo () 116 { 117 foos--; 118 } 119 120 void *__dso_handle; 121 122 extern "C" 123 int __cxa_atexit(void)124__cxa_atexit (void) 125 { 126 return 0; 127 } 128