Author: chaoren
Date: Fri Jul 17 20:09:43 2015
New Revision: 242599

URL: http://llvm.org/viewvc/llvm-project?rev=242599&view=rev
Log:
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

Modified:
    lldb/trunk/cmake/platforms/Android.cmake

Modified: lldb/trunk/cmake/platforms/Android.cmake
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/cmake/platforms/Android.cmake?rev=242599&r1=242598&r2=242599&view=diff
==============================================================================
--- lldb/trunk/cmake/platforms/Android.cmake (original)
+++ lldb/trunk/cmake/platforms/Android.cmake Fri Jul 17 20:09:43 2015
@@ -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 <dlfcn.h>
+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" )


_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to