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
This commit is contained in:
Dan Albert 2014-10-23 14:04:02 -07:00
parent 4dfda1fa42
commit 04eead7e2b

View 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