Upload Tizen:Base source
[external/binutils.git] / ld / testsuite / ld-srec / sr3.cc
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 ();
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
23 main ()
24 {
25   Foo automatic_foo( "automatic_foo");
26   return 0;
27 }
28
29 void
30 terminate(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
39 __main ()
40 {
41 }
42
43 void
44 __builtin_delete ()
45 {
46 }
47
48 void
49 __builtin_new ()
50 {
51 }
52
53 void
54 __throw ()
55 {
56 }
57
58 void
59 __rethrow ()
60 {
61 }
62
63 void
64 __terminate ()
65 {
66 }
67
68 void *__eh_pc;
69
70 void ***
71 __get_dynamic_handler_chain ()
72 {
73   return 0;
74 }
75
76 void *
77 __get_eh_context ()
78 {
79   return 0;
80 }
81
82 }
83
84 int Foo::foos = 0;
85
86 void Foo::init_foo ()
87 {
88   foos = 80;
89 }
90
91 Foo::Foo ()
92 {
93   i = ++foos;
94 }
95
96 Foo::Foo (const char*)
97 {
98   i = ++foos;
99 }
100
101 Foo::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
108 Foo& 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
115 Foo::~Foo ()
116 {
117   foos--;
118 }
119
120 void *__dso_handle;
121
122 extern "C"
123 int
124 __cxa_atexit (void)
125 {
126   return 0;
127 }