Gregory Nutt 7dd81cc5c2 libs/libxx/Kconfig: utomatically select CONFIG_LIBC_WCHAR and CONFIG_TIME_EXTENDED when CONFIG_LIBCXX is selected since libcxx compile fails if without these two option 5 years ago
..
.gitignore cf99fb40c9 This commit moves all of the libraries under a common directory called libs/. This most certainly break libcxx and uClibc++ for now. 6 years ago
Kconfig 7dd81cc5c2 libs/libxx/Kconfig: utomatically select CONFIG_LIBC_WCHAR and CONFIG_TIME_EXTENDED when CONFIG_LIBCXX is selected since libcxx compile fails if without these two option 5 years ago
Makefile 38ffb98f1b Kconfig files, binfmt/libelf, libs/libc/machin, libs/libxx: Correct libcxx exception handling by introducing the generic config(CXX_EXCEPTION and CXX_LIBSUPCXX) 5 years ago
README.txt cf99fb40c9 This commit moves all of the libraries under a common directory called libs/. This most certainly break libcxx and uClibc++ for now. 6 years ago
libxx.hxx cf99fb40c9 This commit moves all of the libraries under a common directory called libs/. This most certainly break libcxx and uClibc++ for now. 6 years ago
libxx__gnu_unwind_find_exidx.cxx 38ffb98f1b Kconfig files, binfmt/libelf, libs/libc/machin, libs/libxx: Correct libcxx exception handling by introducing the generic config(CXX_EXCEPTION and CXX_LIBSUPCXX) 5 years ago
libxx__gnu_unwind_find_exidx.hxx 38ffb98f1b Kconfig files, binfmt/libelf, libs/libc/machin, libs/libxx: Correct libcxx exception handling by introducing the generic config(CXX_EXCEPTION and CXX_LIBSUPCXX) 5 years ago
libxx_cxa_atexit.cxx cf99fb40c9 This commit moves all of the libraries under a common directory called libs/. This most certainly break libcxx and uClibc++ for now. 6 years ago
libxx_cxa_guard.cxx cf99fb40c9 This commit moves all of the libraries under a common directory called libs/. This most certainly break libcxx and uClibc++ for now. 6 years ago
libxx_cxapurevirtual.cxx 467d2a58ea Replace non critical PANIC with DEBUGPANIC to save the code space 6 years ago
libxx_delete.cxx cf99fb40c9 This commit moves all of the libraries under a common directory called libs/. This most certainly break libcxx and uClibc++ for now. 6 years ago
libxx_delete_sized.cxx cf99fb40c9 This commit moves all of the libraries under a common directory called libs/. This most certainly break libcxx and uClibc++ for now. 6 years ago
libxx_deletea.cxx cf99fb40c9 This commit moves all of the libraries under a common directory called libs/. This most certainly break libcxx and uClibc++ for now. 6 years ago
libxx_deletea_sized.cxx cf99fb40c9 This commit moves all of the libraries under a common directory called libs/. This most certainly break libcxx and uClibc++ for now. 6 years ago
libxx_eabi_atexit.cxx cf99fb40c9 This commit moves all of the libraries under a common directory called libs/. This most certainly break libcxx and uClibc++ for now. 6 years ago
libxx_new.cxx cf99fb40c9 This commit moves all of the libraries under a common directory called libs/. This most certainly break libcxx and uClibc++ for now. 6 years ago
libxx_newa.cxx cf99fb40c9 This commit moves all of the libraries under a common directory called libs/. This most certainly break libcxx and uClibc++ for now. 6 years ago
libxx_stdthrow.cxx cf99fb40c9 This commit moves all of the libraries under a common directory called libs/. This most certainly break libcxx and uClibc++ for now. 6 years ago

README.txt

libs/libxx/README.txt
^^^^^^^^^^^^^^^^^^^^^

This directory contains a fragmentary C++ library that will allow to build
only the simplest of C++ applications. In the deeply embedded world, that
is probably all that is necessary. If you have a need for more extensive
C++ support, the following libraries are recommended:

- libstdc++ (part of GCC)
- STLport http://www.stlport.org/
- uClibc++ http://cxx.uclibc.org/
- uSTL http://ustl.sourceforge.net/

There is a version of uClibc++ that has been customized for use with NuttX.
That version that can be found in the NuttX uClibc++ GIT repository. Refer
to the top-level uClibc++ README.txt file for installation instructions.

At present, only the following are supported here:

- void *operator new(std::size_t nbytes);
- void operator delete(void* ptr);
- void operator delete[](void *ptr);
- void __cxa_pure_virtual(void);
- int __aeabi_atexit(void* object, void (*destroyer)(void*), void *dso_handle);
- int __cxa_atexit(__cxa_exitfunc_t func, FAR void *arg, FAR void *dso_handle);

operator new
------------

This operator should take a type of size_t. But size_t has an unknown underlying
type. In the nuttx sys/types.h header file, size_t is typed as uint32_t
(which is determined by architecture-specific logic). But the C++
compiler may believe that size_t is of a different type resulting in
compilation errors in the operator. Using the underlying integer type
instead of size_t seems to resolve the compilation issues. Need to
REVISIT this.

Once some C++ compilers, this will cause an error:

Problem: "'operator new' takes size_t ('...') as first parameter"
Workaround: Add -fpermissive to the compilation flags