diff options
author | James Zern <jzern@google.com> | 2023-05-08 16:58:59 -0700 |
---|---|---|
committer | James Zern <jzern@google.com> | 2023-05-12 10:20:54 -0700 |
commit | 2a9b810d3df62ff3c527ce3895f6b80d9d6f6296 (patch) | |
tree | cf6fd4496a6bc7dc1cdc21bc294d09565530fdbb | |
parent | 894262fb8fe137401d56586b7998711cf49ebe24 (diff) | |
download | libvpx-2a9b810d3df62ff3c527ce3895f6b80d9d6f6296.tar.gz |
Don't use -Wl,-z,defs with Clang's sanitizers
This avoids link errors related to the sanitizers:
https://clang.llvm.org/docs/AddressSanitizer.html#usage
"When linking shared libraries, the AddressSanitizer run-time is not
linked, so -Wl,-z,defs may cause link errors ..."
See also:
https://crbug.com/aomedia/3438
Bug: webm:1801
Fixed: webm:1801
Change-Id: Ie212318005a5f7222e5486775175534025306367
-rw-r--r-- | build/make/Makefile | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/build/make/Makefile b/build/make/Makefile index 5c38c18e5..65ac2290c 100644 --- a/build/make/Makefile +++ b/build/make/Makefile @@ -304,6 +304,19 @@ $(1): $(qexec)$$(AR) $$(ARFLAGS) $$@ $$^ endef +# Don't use -Wl,-z,defs with Clang's sanitizers. +# +# Clang's AddressSanitizer documentation says "When linking shared libraries, +# the AddressSanitizer run-time is not linked, so -Wl,-z,defs may cause link +# errors (don't use it with AddressSanitizer)." See +# https://clang.llvm.org/docs/AddressSanitizer.html#usage. +NO_UNDEFINED := -Wl,-z,defs +ifeq ($(findstring clang,$(CC)),clang) + ifneq ($(filter -fsanitize=%,$(LDFLAGS)),) + NO_UNDEFINED := + endif +endif + define so_template # Not using a pattern rule here because we don't want to generate empty # archives when they are listed as a dependency in files not responsible @@ -313,7 +326,8 @@ define so_template $(1): $(if $(quiet),@echo " [LD] $$@") $(qexec)$$(LD) -shared $$(LDFLAGS) \ - -Wl,--no-undefined -Wl,-soname,$$(SONAME) \ + $(NO_UNDEFINED) \ + -Wl,-soname,$$(SONAME) \ -Wl,--version-script,$$(EXPORTS_FILE) -o $$@ \ $$(filter %.o,$$^) $$(extralibs) endef |