summaryrefslogtreecommitdiff
path: root/cxx
diff options
context:
space:
mode:
authorXavi Del Campo <xavi.dcr@tutanota.com>2020-01-31 10:32:23 +0100
committerXavi Del Campo <xavi.dcr@tutanota.com>2020-01-31 10:32:23 +0100
commit7c24e9a9b02b04dcaf9507acb94091ea70a2c02d (patch)
treec28d0748652ad4b4222309e46e6cfc82c0906220 /cxx
parenta2b7b6bb1cc2f4a3258b7b2dbc92399d151f864d (diff)
downloadpsxsdk-7c24e9a9b02b04dcaf9507acb94091ea70a2c02d.tar.gz
Imported pristine psxsdk-20190410 from official repo
Diffstat (limited to 'cxx')
-rw-r--r--cxx/Makefile19
-rwxr-xr-xcxx/new.cc29
-rw-r--r--cxx/virtual.cc11
3 files changed, 59 insertions, 0 deletions
diff --git a/cxx/Makefile b/cxx/Makefile
new file mode 100644
index 0000000..c896a9b
--- /dev/null
+++ b/cxx/Makefile
@@ -0,0 +1,19 @@
+include ../Makefile.cfg
+
+OBJS = $(patsubst %.cc, %.o, $(wildcard *.cc))
+
+all: libstdc++.a
+
+libstdc++.a: $(OBJS)
+ $(AR) r libstdc++.a $(OBJS)
+
+%.o: %.cc
+ $(CXX) $(CXXFLAGS) -c -o $@ $<
+
+install: libstdc++.a
+ cp libstdc++.a $(TOOLCHAIN_PREFIX)/lib
+
+clean:
+ rm -f $(OBJS) libstdc++.a
+
+distclean: clean
diff --git a/cxx/new.cc b/cxx/new.cc
new file mode 100755
index 0000000..5903faa
--- /dev/null
+++ b/cxx/new.cc
@@ -0,0 +1,29 @@
+extern "C"
+{
+ #include <stdio.h>
+ #include <stdlib.h>
+}
+
+void *
+operator new(size_t size)
+{
+ return malloc(size);
+}
+
+void *
+operator new[](size_t size)
+{
+ return malloc(size);
+}
+
+void
+operator delete(void *ptr)
+{
+ free(ptr);
+}
+
+void
+operator delete[](void *ptr)
+{
+ free(ptr);
+}
diff --git a/cxx/virtual.cc b/cxx/virtual.cc
new file mode 100644
index 0000000..71d8b9a
--- /dev/null
+++ b/cxx/virtual.cc
@@ -0,0 +1,11 @@
+extern "C"
+{
+ #include <stdio.h>
+ #include <stdlib.h>
+}
+
+extern "C" void __cxa_pure_virtual()
+{
+ printf("\nError: Called pure virtual C++ function!\n");
+ exit(-1);
+}