mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-24 14:22:28 +00:00
parent
a1dd777f22
commit
3a8579252d
5 changed files with 100 additions and 111 deletions
55
third_party/libcxx/cxxabi.h
vendored
55
third_party/libcxx/cxxabi.h
vendored
|
@ -1,55 +0,0 @@
|
|||
#ifndef _CXXABI_H
|
||||
#define _CXXABI_H 1
|
||||
|
||||
#include "third_party/libcxx/cstddef"
|
||||
|
||||
namespace abi {
|
||||
|
||||
/**
|
||||
* @brief Demangling routine.
|
||||
* ABI-mandated entry point in the C++ runtime library for demangling.
|
||||
*
|
||||
* @param __mangled_name A NUL-terminated character string
|
||||
* containing the name to be demangled.
|
||||
*
|
||||
* @param __output_buffer A region of memory, allocated with
|
||||
* malloc, of @a *__length bytes, into which the demangled name is
|
||||
* stored. If @a __output_buffer is not long enough, it is
|
||||
* expanded using realloc. @a __output_buffer may instead be null;
|
||||
* in that case, the demangled name is placed in a region of memory
|
||||
* allocated with malloc.
|
||||
*
|
||||
* @param __length If @a __length is non-null, the length of the
|
||||
* buffer containing the demangled name is placed in @a *__length.
|
||||
*
|
||||
* @param __status If @a __status is non-null, @a *__status is set to
|
||||
* one of the following values:
|
||||
* 0: The demangling operation succeeded.
|
||||
* -1: A memory allocation failure occurred.
|
||||
* -2: @a mangled_name is not a valid name under the C++ ABI mangling rules.
|
||||
* -3: One of the arguments is invalid.
|
||||
*
|
||||
* @return A pointer to the start of the NUL-terminated demangled
|
||||
* name, or a null pointer if the demangling fails. The caller is
|
||||
* responsible for deallocating this memory using @c free.
|
||||
*
|
||||
* The demangling is performed using the C++ ABI mangling rules,
|
||||
* with GNU extensions. For example, this function is used in
|
||||
* __gnu_cxx::__verbose_terminate_handler.
|
||||
*
|
||||
* See https://gcc.gnu.org/onlinedocs/libstdc++/manual/ext_demangling.html
|
||||
* for other examples of use.
|
||||
*
|
||||
* @note The same demangling functionality is available via
|
||||
* libiberty (@c <libiberty/demangle.h> and @c libiberty.a) in GCC
|
||||
* 3.1 and later, but that requires explicit installation (@c
|
||||
* --enable-install-libiberty) and uses a different API, although
|
||||
* the ABI is unchanged.
|
||||
*/
|
||||
extern "C" char*
|
||||
__cxa_demangle(const char* __mangled_name, char* __output_buffer,
|
||||
size_t* __length, int* __status);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
4375
third_party/libcxx/demangle.cc
vendored
4375
third_party/libcxx/demangle.cc
vendored
File diff suppressed because it is too large
Load diff
14
third_party/libcxx/libcxx.mk
vendored
14
third_party/libcxx/libcxx.mk
vendored
|
@ -67,7 +67,6 @@ THIRD_PARTY_LIBCXX_A_HDRS = \
|
|||
third_party/libcxx/ctype.h \
|
||||
third_party/libcxx/cwchar \
|
||||
third_party/libcxx/cwctype \
|
||||
third_party/libcxx/cxxabi.h \
|
||||
third_party/libcxx/deque \
|
||||
third_party/libcxx/errno.h \
|
||||
third_party/libcxx/exception \
|
||||
|
@ -144,7 +143,6 @@ THIRD_PARTY_LIBCXX_A_SRCS_CC = \
|
|||
third_party/libcxx/chrono.cc \
|
||||
third_party/libcxx/condition_variable.cc \
|
||||
third_party/libcxx/condition_variable_destructor.cc \
|
||||
third_party/libcxx/demangle.cc \
|
||||
third_party/libcxx/exception.cc \
|
||||
third_party/libcxx/functional.cc \
|
||||
third_party/libcxx/future.cc \
|
||||
|
@ -175,7 +173,6 @@ THIRD_PARTY_LIBCXX_A_SRCS = \
|
|||
|
||||
THIRD_PARTY_LIBCXX_A_OBJS = \
|
||||
$(THIRD_PARTY_LIBCXX_A_SRCS_S:%.S=o/$(MODE)/%.o) \
|
||||
$(THIRD_PARTY_LIBCXX_A_SRCS_C:%.c=o/$(MODE)/%.o) \
|
||||
$(THIRD_PARTY_LIBCXX_A_SRCS_CC:%.cc=o/$(MODE)/%.o)
|
||||
|
||||
THIRD_PARTY_LIBCXX_A_CHECKS = \
|
||||
|
@ -214,16 +211,6 @@ $(THIRD_PARTY_LIBCXX_A_OBJS): private \
|
|||
-ffunction-sections \
|
||||
-fdata-sections
|
||||
|
||||
# Super gross! But I found no way to do -fno-error=permissive
|
||||
# this steps from the fact that demangle is a C++ file extension
|
||||
# but the source I copied was written in C.
|
||||
# The fix would be to go through all the casts and make them correct.
|
||||
o/$(MODE)/third_party/libcxx/demangle.o: private \
|
||||
CXXFLAGS += \
|
||||
-fpermissive \
|
||||
-Wno-error
|
||||
|
||||
|
||||
THIRD_PARTY_LIBCXX_LIBS = $(foreach x,$(THIRD_PARTY_LIBCXX_ARTIFACTS),$($(x)))
|
||||
THIRD_PARTY_LIBCXX_SRCS = $(foreach x,$(THIRD_PARTY_LIBCXX_ARTIFACTS),$($(x)_SRCS))
|
||||
THIRD_PARTY_LIBCXX_HDRS = $(foreach x,$(THIRD_PARTY_LIBCXX_ARTIFACTS),$($(x)_HDRS))
|
||||
|
@ -235,4 +222,3 @@ THIRD_PARTY_LIBCXX_OBJS = $(foreach x,$(THIRD_PARTY_LIBCXX_ARTIFACTS),$($(x)_OBJ
|
|||
o/$(MODE)/third_party/libcxx: \
|
||||
$(THIRD_PARTY_LIBCXX_CHECKS) \
|
||||
$(THIRD_PARTY_LIBCXX_A)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue