rust: don't export cxx syms from libunwind-rust

This commit is contained in:
Norman Feske 2019-08-22 14:21:30 +02:00 committed by Christian Helmuth
parent a98f78afd9
commit 808ff3714e
1 changed files with 16 additions and 0 deletions

View File

@ -3,3 +3,19 @@ LIBS = libcore-rust
vpath % $(REP_DIR)/src/lib/rust/libunwind
CC_CXX_WARN_STRICT =
#
# libunwind contains the public symbol '_Unwind_Resume', which clashes with
# the symbol provided by the cxx library. The aliasing can lead to unexpected
# symbol resolutions by the dynamic linker at runtime, i.e., a C++ exception
# thrown in the libc ending up in the '_Unwind_Resume' code of libunwind-rust.
#
# This rule solves this uncertainty by making the symbol private to the
# libunwind library.
#
ifeq ($(called_from_lib_mk),yes)
$(LIB).lib.a: hide_cxx_symbols
hide_cxx_symbols: lib.o
$(VERBOSE)cp $< $<.tmp
$(VERBOSE)$(OBJCOPY) --localize-symbol=_Unwind_Resume $<.tmp $<
endif