Don't sort shared library link order.
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
diff --git a/core/binary.mk b/core/binary.mk
index 750e783..5774357 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -235,16 +235,15 @@
$(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