add support for __cxa_demangle

This adds support for __cxa_demangle through the cxxabi.h file.

At the moment it is the only symbol included.
The source was taken from FreeBSD
contrib/libcxxrt/libelftc_dem_gnu3.c
2176c9ab71c85efd90a6c7af4a9e04fe8e3d49ca

FreeBSD does say this is also almost verbatim from ELFToolkit
This commit is contained in:
Farid Zakaria 2023-07-03 04:08:52 +00:00 committed by Justine Tunney
parent 0d3c1c8b1a
commit a1dd777f22
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
3 changed files with 4442 additions and 0 deletions

View file

@ -67,6 +67,7 @@ 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 \
@ -143,6 +144,7 @@ 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 \
@ -212,6 +214,16 @@ $(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))