From 857a43c70a95efbb76b5d90e38e166cf802507a5 Mon Sep 17 00:00:00 2001 From: Chaoren Lin Date: Sat, 18 Jul 2015 01:09:43 +0000 Subject: [PATCH] Add evil hack to workaround the missing libdl.a in the Android toolchain. Reviewers: vharron, ovyalov Subscribers: tberghammer, danalbert, srhines, lldb-commits Differential Revision: http://reviews.llvm.org/D11321 llvm-svn: 242599 --- lldb/cmake/platforms/Android.cmake | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lldb/cmake/platforms/Android.cmake b/lldb/cmake/platforms/Android.cmake index df735612d8b9..b3a136156e34 100644 --- a/lldb/cmake/platforms/Android.cmake +++ b/lldb/cmake/platforms/Android.cmake @@ -119,6 +119,25 @@ endif() set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -fdata-sections -ffunction-sections" ) set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,--gc-sections" ) +################# BEGIN EVIL HACK ################## +# lldb-server links against libdl even though it's not being used and +# libdl.a is currently missing from the toolchain (b.android.com/178517). +# Therefore, in order to statically link lldb-server, we need a temporary +# workaround. This creates a dummy libdl.a stub until the actual +# libdl.a can be implemented in the toolchain. +set( ANDROID_LIBDL_STUB "${CMAKE_BINARY_DIR}/libdl_stub" ) +file( MAKE_DIRECTORY ${ANDROID_LIBDL_STUB} ) +file( WRITE "${ANDROID_LIBDL_STUB}/libdl.c" " +#include +void * dlopen (const char *filename, int flag) { return 0; } +const char * dlerror (void) { return 0; } +void * dlsym (void *handle, const char *symbol) { return 0; } +int dlclose (void *handle) { return 0; }") +execute_process( COMMAND ${CMAKE_C_COMPILER} -c ${ANDROID_LIBDL_STUB}/libdl.c -o ${ANDROID_LIBDL_STUB}/libdl.o ) +execute_process( COMMAND ${CMAKE_AR} rcs ${ANDROID_LIBDL_STUB}/libdl.a ${ANDROID_LIBDL_STUB}/libdl.o ) +set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -L${ANDROID_LIBDL_STUB}" ) +################# END EVIL HACK ################## + # cache flags set( CMAKE_CXX_FLAGS "" CACHE STRING "c++ flags" ) set( CMAKE_C_FLAGS "" CACHE STRING "c flags" )