From 91a7fb1da7a25d5297506c57191f51cd6ab2fa7e Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Fri, 29 Jan 2021 15:22:57 +0100 Subject: [PATCH] cxx: localize operator new(unsigned long) in supc++.o Otherwise, base code in ld.lib.so may accidentally use 'new' without passing an allocator. --- repos/base/lib/mk/cxx.mk | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/repos/base/lib/mk/cxx.mk b/repos/base/lib/mk/cxx.mk index 4d115feae1..b928b80aa0 100644 --- a/repos/base/lib/mk/cxx.mk +++ b/repos/base/lib/mk/cxx.mk @@ -15,6 +15,11 @@ LIBC_SYMBOLS += malloc free calloc realloc \ memcmp strncmp strcmp sprintf \ __stderrp +# +# Symbols for supc++.o local use only +# +LOCAL_CXX_SYMBOLS += _Znam _Znwm + # # Symbols we wrap (see unwind.cc) # @@ -47,7 +52,7 @@ SRC_O = supc++.o SRC_C = unwind.c CXX_SRC = $(sort $(CXX_SRC_CC)) CXX_OBJECTS = $(addsuffix .o,$(basename $(CXX_SRC))) -LOCAL_SYMBOLS = $(patsubst %,--localize-symbol=%,$(LIBC_SYMBOLS)) +LOCAL_SYMBOLS = $(patsubst %,--localize-symbol=%,$(LIBC_SYMBOLS) $(LOCAL_CXX_SYMBOLS)) REDEF_SYMBOLS = $(foreach S, $(EH_SYMBOLS), --redefine-sym $(S)=_cxx_$(S)) #