summaryrefslogtreecommitdiff
path: root/userspace/cpp
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-10-11 12:33:38 +0200
committerMiguel <m.i@gmx.at>2018-10-11 12:33:38 +0200
commit1e5c0baa8cd59f651985ac3a7b41ab2ecbe90b5e (patch)
tree9da3bc1effa2b9da6762620971faedf00f7a6247 /userspace/cpp
parent8b33f268b67455ded8d35f3c198425562173fa2e (diff)
c++ global constructors calling from crt
Diffstat (limited to 'userspace/cpp')
-rw-r--r--userspace/cpp/Makefile13
-rw-r--r--userspace/cpp/prep.cpp8
-rw-r--r--userspace/cpp/testcpp.cpp48
3 files changed, 38 insertions, 31 deletions
diff --git a/userspace/cpp/Makefile b/userspace/cpp/Makefile
index 9f4b314..e61438a 100644
--- a/userspace/cpp/Makefile
+++ b/userspace/cpp/Makefile
@@ -1,15 +1,10 @@
CXX=i686-foolos-g++
-CFLAGS=
-CFLAGS+=-O0
-CFLAGS+=-gstabs
+CXXFLAGS=
+CXXFLAGS+=-O0
+CXXFLAGS+=-gstabs
-LDLIBS+=-lgcc
-
-ASFLAGS=
-ASFLAGS+=-gstabs
-
-testcpp: prep.cpp
+testcpp:
clean:
rm -f testcpp
diff --git a/userspace/cpp/prep.cpp b/userspace/cpp/prep.cpp
deleted file mode 100644
index a09adbe..0000000
--- a/userspace/cpp/prep.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <reent.h>
-#include <cstring>
-
-void prep()
-{
-_REENT_INIT_PTR(_impure_ptr);
-}
-
diff --git a/userspace/cpp/testcpp.cpp b/userspace/cpp/testcpp.cpp
index 53e3a3b..8ed7d55 100644
--- a/userspace/cpp/testcpp.cpp
+++ b/userspace/cpp/testcpp.cpp
@@ -3,31 +3,51 @@
#include <cstdio>
#include <iostream>
-void prep();
-void myinit();
+struct test
+{
+ int i;
+ test(int ii):i(ii) { printf("test:ctor %i\n",i); }
+ ~test() { printf("test:dtor %i\n",i ); }
+};
+
+test t1(1); // global constructor should get called and desctructed on exit from our crt0
+
+int somefunc()
+{
+ test t2(2);
+}
int main()
{
- prep();
- myinit();
- int myints[] = {32,71,12,45,26,80,53,33};
- std::vector<int> myvector (myints, myints+8); // 32 71 12 45 26 80 53 33
+ printf(" --- testing ctors & dtors ---\n");
- // using default comparison (operator <):
- std::sort (myvector.begin(), myvector.begin()+4); //(12 32 45 71)26 80 53 33
+ somefunc();
+ test t3(3);
- for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
- printf("%i\n",*it);
- printf("hello\n");
-// printf("reent struct size: %d bytes\n",sizeof(struct _reent));
- // printf("reent pointer : 0x%08x\n",_impure_ptr);
- //printf("reent pointer : 0x%08x\n",_impure_ptr);
std::cout << "bye bye" << std::endl;
+
+ /*
+
+ int myints[] = {32,71,12,45,26,80,53,33};
+
+ std::vector<int> myvector (myints, myints+8); // 32 71 12 45 26 80 53 33
+ std::sort (myvector.begin(), myvector.begin()+4); //(12 32 45 71)26 80 53 33
+
+ for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
+ printf("%i\n",*it);
+
+ printf("hello\n");
printf("hello\n");
+ */
+ printf("-- fin -- \n");
+
}
+// printf("reent struct size: %d bytes\n",sizeof(struct _reent));
+ // printf("reent pointer : 0x%08x\n",_impure_ptr);
+ //printf("reent pointer : 0x%08x\n",_impure_ptr);
// constructing vectors
/*
#include <iostream>