summaryrefslogtreecommitdiffstats
path: root/core/definitions.mk
diff options
context:
space:
mode:
authorDan Albert <danalbert@google.com>2014-11-13 21:24:04 -0800
committerDan Albert <danalbert@google.com>2014-11-13 21:29:28 -0800
commit741b36e922a09c47507b61cbfc9cd8bba029f476 (patch)
treecaa7d9f7b362f548d9119156cefe10a1f560c27f /core/definitions.mk
parente088c0d281b796694c6c0d0e761ef62d3fe287c2 (diff)
downloadbuild-741b36e922a09c47507b61cbfc9cd8bba029f476.zip
build-741b36e922a09c47507b61cbfc9cd8bba029f476.tar.gz
build-741b36e922a09c47507b61cbfc9cd8bba029f476.tar.bz2
Fix the libgcc/libatomic link order.
The previous position of libgcc.a/libatomic.a on the link line causes the linker to prefer satisfying dependencies from these libraries from other libraries that might include them, rather than from libgcc.a (or libatomic.a) itself. This imposes an ABI requirement that those intermediate shared libraries _always_ export those symbols, which is undesirable. Change-Id: Ib593236b475d3e98356b2b1be6f96cee2b67378f
Diffstat (limited to 'core/definitions.mk')
-rw-r--r--core/definitions.mk25
1 files changed, 7 insertions, 18 deletions
diff --git a/core/definitions.mk b/core/definitions.mk
index a8ae51a..79cb1f8 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -1301,15 +1301,6 @@ endef
## Commands for running gcc to link a shared library or package
###########################################################
-#echo >$@.vers "{"; \
-#echo >>$@.vers " global:"; \
-#$(BUILD_SYSTEM)/filter_symbols.sh $(TARGET_NM) " " ";" $(filter %.o,$^) | sort -u >>$@.vers; \
-#echo >>$@.vers " local:"; \
-#echo >>$@.vers " *;"; \
-#echo >>$@.vers "};"; \
-
-# -Wl,--version-script=$@.vers \
-
define transform-o-to-shared-lib-inner
$(hide) $(PRIVATE_CXX) \
-nostdlib -Wl,-soname,$(notdir $@) \
@@ -1324,14 +1315,13 @@ $(hide) $(PRIVATE_CXX) \
$(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \
$(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
$(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \
- $(if $(TARGET_BUILD_APPS),$(PRIVATE_TARGET_LIBGCC)) \
+ $(if $(filter true,$(NATIVE_COVERAGE)),$(PRIVATE_TARGET_LIBGCOV)) \
+ $(PRIVATE_TARGET_LIBATOMIC) \
+ $(PRIVATE_TARGET_LIBGCC) \
$(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \
-o $@ \
$(PRIVATE_TARGET_GLOBAL_LDFLAGS) \
$(PRIVATE_LDFLAGS) \
- $(PRIVATE_TARGET_LIBATOMIC) \
- $(if $(filter true,$(NATIVE_COVERAGE)),$(PRIVATE_TARGET_LIBGCOV)) \
- $(if $(PRIVATE_LIBCXX),,$(PRIVATE_TARGET_LIBGCC)) \
$(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_SO_O)) \
$(PRIVATE_LDLIBS)
endef
@@ -1387,14 +1377,13 @@ $(hide) $(PRIVATE_CXX) -pie \
$(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \
$(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
$(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \
- $(if $(TARGET_BUILD_APPS),$(PRIVATE_TARGET_LIBGCC)) \
+ $(if $(filter true,$(NATIVE_COVERAGE)),$(PRIVATE_TARGET_LIBGCOV)) \
+ $(PRIVATE_TARGET_LIBATOMIC) \
+ $(PRIVATE_TARGET_LIBGCC) \
$(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \
-o $@ \
$(PRIVATE_TARGET_GLOBAL_LDFLAGS) \
$(PRIVATE_LDFLAGS) \
- $(PRIVATE_TARGET_LIBATOMIC) \
- $(if $(filter true,$(NATIVE_COVERAGE)),$(PRIVATE_TARGET_LIBGCOV)) \
- $(if $(PRIVATE_LIBCXX),,$(PRIVATE_TARGET_LIBGCC)) \
$(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_O)) \
$(PRIVATE_LDLIBS)
endef
@@ -1432,7 +1421,7 @@ $(hide) $(PRIVATE_CXX) \
$(PRIVATE_TARGET_LIBATOMIC) \
$(if $(filter true,$(NATIVE_COVERAGE)),$(PRIVATE_TARGET_LIBGCOV)) \
$(call normalize-target-libraries,$(filter %libcompiler_rt.a,$(PRIVATE_ALL_STATIC_LIBRARIES))) \
- $(if $(PRIVATE_LIBCXX),,$(PRIVATE_TARGET_LIBGCC)) \
+ $(PRIVATE_TARGET_LIBGCC) \
-Wl,--end-group \
$(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_O))
endef