OSDN Git Service

Don't sort shared library link order.
authorDan Albert <danalbert@google.com>
Thu, 23 Oct 2014 21:04:02 +0000 (14:04 -0700)
committerDan Albert <danalbert@google.com>
Thu, 23 Oct 2014 21:04:02 +0000 (14:04 -0700)
Only sort the list of shared libraries used for naming dependencies,
not the order they are actually linked in. The order in which shared
libraries appear to the linker affects which symbols get used if there
is a multiply defined symbol.

Also link system shared libraries _after_ user provided libraries,
since a user will want their functions to override the system's if
they exist.

Change-Id: I071059d940d40a648d69d90e0699073ef520138a

core/binary.mk

index 750e783..5774357 100644 (file)
@@ -235,16 +235,15 @@ ifdef LOCAL_SDK_VERSION
       $(my_shared_libraries)
 else
   installed_shared_library_module_names := \
-      $(my_system_shared_libraries) $(my_shared_libraries)
+      $(my_shared_libraries) $(my_system_shared_libraries)
 endif
-installed_shared_library_module_names := $(sort $(installed_shared_library_module_names))
 
 # The real dependency will be added after all Android.mks are loaded and the install paths
 # of the shared libraries are determined.
 ifdef LOCAL_INSTALLED_MODULE
 ifdef installed_shared_library_module_names
 $(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)DEPENDENCIES_ON_SHARED_LIBRARIES += \
-    $(my_register_name):$(LOCAL_INSTALLED_MODULE):$(subst $(space),$(comma),$(installed_shared_library_module_names))
+    $(my_register_name):$(LOCAL_INSTALLED_MODULE):$(subst $(space),$(comma),$(sort $(installed_shared_library_module_names)))
 endif
 endif