add test program for global constructors/destructors

This commit is contained in:
Wolfgang Thaller 2014-09-29 21:42:27 +02:00
parent 831cbc3aa9
commit eb5d22bac5
2 changed files with 74 additions and 0 deletions

View File

@ -29,6 +29,17 @@ add_custom_command(
DEPENDS ExceptionTest)
add_custom_target(ExceptionTestAPPL ALL DEPENDS ExceptionTest.bin)
add_executable(InitTest
InitTest.cc
)
target_link_libraries(InitTest RetroConsole retrocrt)
add_custom_command(
OUTPUT InitTest.bin
COMMAND ${MAKE_APPL} -b -c InitTest -o InitTest
DEPENDS InitTest)
add_custom_target(InitTestAPPL ALL DEPENDS InitTest.bin)
enable_language(ASM)
add_executable(AsmTest

63
TestApps/InitTest.cc Normal file
View File

@ -0,0 +1,63 @@
/*
Copyright 2012 Wolfgang Thaller.
This file is part of Retro68.
Retro68 is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Retro68 is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Retro68. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <stdlib.h>
#include <Events.h>
class Foo
{
public:
Foo()
{
printf("Foo::Foo() was called.\n");
}
~Foo()
{
printf("Foo::~Foo() was called. (delaying 1 sec)\n");
long start = TickCount();
while(TickCount() < start + 60)
;
}
};
Foo foo;
__attribute__((constructor))
void con()
{
printf("con() called.\n");
}
__attribute__((destructor))
void des()
{
printf("des() called. (delaying 1 sec)\n");
long start = TickCount();
while(TickCount() < start + 60)
;
}
int main(int argc, char** argv)
{
printf("Entering main. Press Enter.\n");
getchar();
return 0;
}