diff options
Diffstat (limited to 'binutils-2.21/ld/testsuite/ld-srec/sr3.cc')
-rw-r--r-- | binutils-2.21/ld/testsuite/ld-srec/sr3.cc | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/binutils-2.21/ld/testsuite/ld-srec/sr3.cc b/binutils-2.21/ld/testsuite/ld-srec/sr3.cc new file mode 100644 index 0000000..0b5fa7e --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-srec/sr3.cc @@ -0,0 +1,127 @@ +// This file is compiled and linked into the S-record format. + +#define FOO_MSG_LEN 80 + +class Foo { + static int foos; + int i; + static const int len = FOO_MSG_LEN; + char message[len]; +public: + static void init_foo (); + static int nb_foos() { return foos; } + Foo(); + Foo(const char* message); + Foo(const Foo&); + Foo & operator= (const Foo&); + ~Foo (); +}; + +static Foo static_foo( "static_foo"); + +int +main () +{ + Foo automatic_foo( "automatic_foo"); + return 0; +} + +void +terminate(void) +{ + /* This recursive call prevents a compiler warning that the noreturn + function terminate actually does return. */ + terminate (); +} + +extern "C" { +void +__main () +{ +} + +void +__builtin_delete () +{ +} + +void +__builtin_new () +{ +} + +void +__throw () +{ +} + +void +__rethrow () +{ +} + +void +__terminate () +{ +} + +void *__eh_pc; + +void *** +__get_dynamic_handler_chain () +{ + return 0; +} + +void * +__get_eh_context () +{ + return 0; +} + +} + +int Foo::foos = 0; + +void Foo::init_foo () +{ + foos = 80; +} + +Foo::Foo () +{ + i = ++foos; +} + +Foo::Foo (const char*) +{ + i = ++foos; +} + +Foo::Foo (const Foo& foo) +{ + i = ++foos; + for (int k = 0; k < FOO_MSG_LEN; k++) + message[k] = foo.message[k]; +} + +Foo& Foo::operator= (const Foo& foo) +{ + for (int k = 0; k < FOO_MSG_LEN; k++) + message[k] = foo.message[k]; + return *this; +} + +Foo::~Foo () +{ + foos--; +} + +void *__dso_handle; + +extern "C" +int +__cxa_atexit (void) +{ + return 0; +} |