clang++ and libc++

Paul Floyd pjfloyd at wanadoo.fr
Wed Mar 3 09:59:31 UTC 2021


Hi

A slightly off topic question. I have two macbooks, and the old one I 
use for testing the build of Valgrind when I'm wearing my opensource hat.

The Mac is running 10.7.5. XCode for this platform is too old to build 
the current Valgrind source, so I'm using clang 9.0.1 from macports.

This mostly works, at least for building the code, but there is an issue 
with C++ code. There are some regression tests that use 'modern C++' (my 
fault!). These use automake configure tests to check that the compiler 
supports these features. This works OK, but when it comes to linking 
there is a failure.

For instance, one test covers C++14 sized deallocation.


The configure test is

AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
   return 0;
]])], [
FLAG_FSIZED_DEALLOCATION="-fsized-deallocation"
ac_have_sized_deallocation=yes
AC_MSG_RESULT([yes])
], [
FLAG_FSIZED_DEALLOCATION=""
ac_have_sized_deallocation=no
AC_MSG_RESULT([no])
])

and the link error is

/opt/local/bin/clang++-mp-9.0 -Winline -Wall -Wshadow -Wno-long-long -g 
-fno-stack-protector -Wno-unused-private-field     -arch x86_64 
-fsized-deallocation -o sized_delete sized_delete-sized_delete.o
Undefined symbols for architecture x86_64:
   "operator delete[](void*, unsigned long)", referenced from:
       _main in sized_delete-sized_delete.o
   "operator delete(void*, unsigned long)", referenced from:
       _main in sized_delete-sized_delete.o
ld: symbol(s) not found for architecture x86_64


So my question, is there a way to get such code to link with clang++ on 
such an old platform? Or does in only use /usr/lib/libc++.1.dylib and so 
is limited to the C++ library features present in that library?


A+

Paul



More information about the macports-users mailing list