Initial revision
[binutils.git] / ld / testsuite / ld-srec / sr3.cc
blob8717c26f34ba5b078f0b76b1a9da64572c61901e
1 // This file is compiled and linked into the S-record format.
3 #define FOO_MSG_LEN 80
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 ();
12 static int nb_foos() { return foos; }
13 Foo();
14 Foo( char* message);
15 Foo(const Foo&);
16 Foo & operator= (const Foo&);
17 ~Foo ();
20 static Foo static_foo( "static_foo");
22 int
23 main ()
25 Foo automatic_foo( "automatic_foo");
26 return 0;
29 void
30 terminate(void)
32 /* This recursive call prevents a compiler warning that the noreturn
33 function terminate actually does return. */
34 terminate ();
37 extern "C" {
38 void
39 __main ()
43 void
44 __builtin_delete ()
48 void
49 __builtin_new ()
53 void
54 __throw ()
58 void
59 __terminate ()
63 void *__eh_pc;
65 void ***
66 __get_dynamic_handler_chain ()
68 return 0;
71 void *
72 __get_eh_context ()
74 return 0;
79 int Foo::foos = 0;
81 void Foo::init_foo ()
83 foos = 80;
86 Foo::Foo ()
88 i = ++foos;
91 Foo::Foo (char* msg)
93 i = ++foos;
96 Foo::Foo (const Foo& foo)
98 i = ++foos;
99 for (int k = 0; k < FOO_MSG_LEN; k++)
100 message[k] = foo.message[k];
103 Foo& Foo::operator= (const Foo& foo)
105 for (int k = 0; k < FOO_MSG_LEN; k++)
106 message[k] = foo.message[k];
107 return *this;
110 Foo::~Foo ()
112 foos--;