Merge "Revert "CFI compatibility with static executables and nested archives""

This commit is contained in:
Colin Cross 2017-10-31 21:01:41 +00:00 committed by Gerrit Code Review
commit 66a11b7ccc
2 changed files with 7 additions and 26 deletions

View File

@ -235,11 +235,6 @@ ifneq ($(filter cfi,$(my_sanitize)),)
# entire module. # entire module.
LOCAL_ARM_MODE := thumb LOCAL_ARM_MODE := thumb
my_cflags += $(CFI_EXTRA_CFLAGS) my_cflags += $(CFI_EXTRA_CFLAGS)
# Only append the default visibility flag if -fvisibility has not already been
# set to hidden.
ifeq ($(filter -fvisibility=hidden,$(LOCAL_CFLAGS)),)
my_cflags += -fvisibility=default
endif
my_ldflags += $(CFI_EXTRA_LDFLAGS) my_ldflags += $(CFI_EXTRA_LDFLAGS)
my_arflags += --plugin $(LLVM_PREBUILTS_PATH)/../lib64/LLVMgold.so my_arflags += --plugin $(LLVM_PREBUILTS_PATH)/../lib64/LLVMgold.so
# Workaround for b/33678192. CFI jumptables need Thumb2 codegen. Revert when # Workaround for b/33678192. CFI jumptables need Thumb2 codegen. Revert when
@ -247,15 +242,6 @@ ifneq ($(filter cfi,$(my_sanitize)),)
ifneq ($(filter arm,$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)),) ifneq ($(filter arm,$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)),)
my_ldflags += -march=armv7-a my_ldflags += -march=armv7-a
endif endif
ifeq ($(LOCAL_FORCE_STATIC_EXECUTABLE),true)
my_ldflags := $(filter-out -fsanitize-cfi-cross-dso,$(my_ldflags))
my_cflags := $(filter-out -fsanitize-cfi-cross-dso,$(my_cflags))
else
# Apply the version script to non-static executables
my_ldflags += -Wl,--version-script,build/soong/cc/config/cfi_exports.map
LOCAL_ADDITIONAL_DEPENDENCIES += build/soong/cc/config/cfi_exports.map
endif
endif endif
# If local or global modules need ASAN, add linker flags. # If local or global modules need ASAN, add linker flags.
@ -307,16 +293,11 @@ ifneq ($(strip $(LOCAL_SANITIZE_RECOVER)),)
endif endif
ifneq ($(my_sanitize_diag),) ifneq ($(my_sanitize_diag),)
# TODO(vishwath): Add diagnostic support for static executables once notrap_arg := $(subst $(space),$(comma),$(my_sanitize_diag)),
# we switch to clang-4393122 (which adds the static ubsan runtime my_cflags += -fno-sanitize-trap=$(notrap_arg)
# that this depends on) # Diagnostic requires a runtime library, unless ASan or TSan are also enabled.
ifneq ($(LOCAL_FORCE_STATIC_EXECUTABLE),true) ifeq ($(filter address thread,$(my_sanitize)),)
notrap_arg := $(subst $(space),$(comma),$(my_sanitize_diag)), # Does not have to be the first DT_NEEDED unlike ASan.
my_cflags += -fno-sanitize-trap=$(notrap_arg) my_shared_libraries += $($(LOCAL_2ND_ARCH_VAR_PREFIX)UBSAN_RUNTIME_LIBRARY)
# Diagnostic requires a runtime library, unless ASan or TSan are also enabled.
ifeq ($(filter address thread,$(my_sanitize)),)
# Does not have to be the first DT_NEEDED unlike ASan.
my_shared_libraries += $($(LOCAL_2ND_ARCH_VAR_PREFIX)UBSAN_RUNTIME_LIBRARY)
endif
endif endif
endif endif

View File

@ -1556,7 +1556,7 @@ $(hide) ldir=$(PRIVATE_INTERMEDIATES_DIR)/WHOLE/$(basename $(notdir $(1)))_objs;
filelist="$$filelist $$ldir/$$ext$$f"; \ filelist="$$filelist $$ldir/$$ext$$f"; \
done ; \ done ; \
$($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_ARFLAGS) \ $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_ARFLAGS) \
$(PRIVATE_ARFLAGS) $(2) $$filelist $(2) $$filelist
endef endef