diff --git a/build.sh b/build.sh index ef30241..7d31957 100755 --- a/build.sh +++ b/build.sh @@ -173,7 +173,13 @@ extract $CCTOOLS_TARBALL 1 pushd cctools*/cctools &>/dev/null pushd .. &>/dev/null if [ $LINKER_VERSION != "134.9" ]; then + # fix compiling ld64 with libc++ patch -p0 < $PATCH_DIR/cctools-e3cbeaf.patch + # check for __cxa_demangle in -lstdc++ + patch -p0 < $PATCH_DIR/cctools-499e470.patch +else + # __cxa_demangle + 3.5 build fix + patch -p0 < $PATCH_DIR/cctools-a78597e.patch fi if [ "$PLATFORM" == "Linux" ]; then patch -p0 < $PATCH_DIR/cctools-old-linux.patch diff --git a/patches/cctools-499e470.patch b/patches/cctools-499e470.patch new file mode 100644 index 0000000..89e6075 --- /dev/null +++ b/patches/cctools-499e470.patch @@ -0,0 +1,26 @@ +commit 499e470904eaa976755de9caca2b98b92f0efcd9 +Author: Thomas Pöchtrager +Date: Fri Jun 20 10:25:39 2014 +0200 + + check for __cxa_demangle in -lstdc++ + +diff --git cctools/configure.ac cctools/configure.ac +index 3411e34..4ac2d69 100644 +--- cctools/configure.ac ++++ cctools/configure.ac +@@ -254,10 +254,12 @@ AC_SUBST(UUID_LIBS) + AC_CHECK_LIB([crypto],[MD5_Init],[CRYPT_LIBS=-lcrypto]) + AC_SUBST(CRYPT_LIBS) + +-AC_CHECK_LIB([supc++],[__cxa_demangle],[CXXABI_LIB=-lsupc++]) +-AC_SUBST(CXXABI_LIB) ++AC_CHECK_LIB([c++abi],[__cxa_demangle],[CXXABI_LIB=-lc++abi],[ ++ AC_CHECK_LIB([supc++],[__cxa_demangle],[CXXABI_LIB=-lsupc++],[ ++ AC_CHECK_LIB([stdc++],[__cxa_demangle],[CXXABI_LIB=-lstdc++],[exit 1]) ++ ]) ++]) + +-AC_CHECK_LIB([c++abi],[__cxa_demangle],[CXXABI_LIB=-lc++abi]) + AC_SUBST(CXXABI_LIB) + + AC_C_BIGENDIAN([AC_SUBST([ENDIAN_FLAG],[-D__BIG_ENDIAN__=1])], diff --git a/patches/cctools-a78597e.patch b/patches/cctools-a78597e.patch new file mode 100644 index 0000000..3847903 --- /dev/null +++ b/patches/cctools-a78597e.patch @@ -0,0 +1,77 @@ +commit a78597e93b6fc7332a3761771fa19c8e0d2945cf +Author: Thomas Pöchtrager +Date: Fri Jun 20 11:01:58 2014 +0200 + + check for __cxa_demangle in -lstdc++ + clang 3.5 compile fix + +diff --git cctools/configure.ac cctools/configure.ac +index 0d9a4ec..2b23112 100644 +--- cctools/configure.ac ++++ cctools/configure.ac +@@ -239,26 +239,26 @@ CFLAGS=$ORIGCFLAGS + AC_SUBST([WARNINGS], [$WARNINGS]) + + +-AC_CHECK_LIB([dl],[dlopen],[ +- DL_LIBS=-ldl +- ]) ++AC_CHECK_LIB([dl],[dlopen],[DL_LIBS=-ldl]) + AC_SUBST(DL_LIBS) + +-AC_CHECK_LIB([pthread],[pthread_create],[ +- PTHREAD_FLAGS=-pthread +- ]) ++AC_CHECK_LIB([pthread],[pthread_create],[PTHREAD_FLAGS=-pthread]) + AC_SUBST(PTHREAD_FLAGS) + +-AC_CHECK_LIB([uuid],[uuid_generate_random],[ +- UUID_LIBS=-luuid +- ]) ++AC_CHECK_LIB([uuid],[uuid_generate_random],[UUID_LIBS=-luuid]) + AC_SUBST(UUID_LIBS) + +-AC_CHECK_LIB([crypto],[MD5_Init],[ +- CRYPT_LIBS=-lcrypto +- ]) ++AC_CHECK_LIB([crypto],[MD5_Init],[CRYPT_LIBS=-lcrypto]) + AC_SUBST(CRYPT_LIBS) + ++AC_CHECK_LIB([c++abi],[__cxa_demangle],[CXXABI_LIB=-lc++abi],[ ++ AC_CHECK_LIB([supc++],[__cxa_demangle],[CXXABI_LIB=-lsupc++],[ ++ AC_CHECK_LIB([stdc++],[__cxa_demangle],[CXXABI_LIB=-lstdc++],[exit 1]) ++ ]) ++]) ++ ++AC_SUBST(CXXABI_LIB) ++ + AC_C_BIGENDIAN([AC_SUBST([ENDIAN_FLAG],[-D__BIG_ENDIAN__=1])], + [AC_SUBST([ENDIAN_FLAG],[-D__LITTLE_ENDIAN__=1])]) + +diff --git cctools/ld64/src/ld/code-sign-blobs/memutils.h cctools/ld64/src/ld/code-sign-blobs/memutils.h +index 391ddc1..b0421f0 100644 +--- cctools/ld64/src/ld/code-sign-blobs/memutils.h ++++ cctools/ld64/src/ld/code-sign-blobs/memutils.h +@@ -33,6 +33,9 @@ + #include + #include + ++#ifdef __GLIBCXX__ ++using namespace __gnu_cxx; ++#endif + + // + // Encapsulate these very sharp tools in a separate (ugly-named) namespace +diff --git cctools/otool/Makefile.am cctools/otool/Makefile.am +index 3172d7e..4adb742 100644 +--- cctools/otool/Makefile.am ++++ cctools/otool/Makefile.am +@@ -4,7 +4,7 @@ otool_LDADD = \ + $(top_srcdir)/libobjc2/libobjc.la \ + $(DL_LIBS) + +-otool_LDFLAGS = $(PTHREAD_FLAGS) -lsupc++ # __cxa_demangle ++otool_LDFLAGS = $(PTHREAD_FLAGS) $(CXXABI_LIB) + + otool_CFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/foreign -I$(top_srcdir)/libstuff -I$(top_srcdir)/libobjc2 $(WARNINGS) $(LTO_DEFS) -D_DARWIN_C_SOURCE -D__DARWIN_UNIX03 $(ENDIAN_FLAG) -DOTOOL +