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