From b0c0ab7f4db9ca01e15baa3ae39246f18017524c Mon Sep 17 00:00:00 2001 From: Andrew Morrow Date: Thu, 1 Oct 2015 23:08:28 -0400 Subject: SERVER-20974 Improve undefined behavior sanitizer integration --- SConstruct | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'SConstruct') diff --git a/SConstruct b/SConstruct index bb14ca10911..0868846dba8 100644 --- a/SConstruct +++ b/SConstruct @@ -1114,17 +1114,21 @@ if link_model.startswith("dynamic"): env['LIBDEPS_TAG_EXPANSIONS'].append(libdeps_tags_expand_incomplete) else: env.AppendUnique(SHLINKFLAGS=["-Wl,--no-as-needed"]) - if link_model == "dynamic-strict": - env.AppendUnique(SHLINKFLAGS=["-Wl,-z,defs"]) - else: - # On BFD/gold linker environments, which are not strict by - # default, we need to add a flag when libraries are not - # tagged incomplete. - def libdeps_tags_expand_incomplete(source, target, env, for_signature): - if 'incomplete' not in target[0].get_env().get("LIBDEPS_TAGS", []): - return ["-Wl,-z,defs"] - return [] - env['LIBDEPS_TAG_EXPANSIONS'].append(libdeps_tags_expand_incomplete) + + # Using zdefs doesn't work at all with the sanitizers + if not has_option('sanitize'): + + if link_model == "dynamic-strict": + env.AppendUnique(SHLINKFLAGS=["-Wl,-z,defs"]) + else: + # On BFD/gold linker environments, which are not strict by + # default, we need to add a flag when libraries are not + # tagged incomplete. + def libdeps_tags_expand_incomplete(source, target, env, for_signature): + if 'incomplete' not in target[0].get_env().get("LIBDEPS_TAGS", []): + return ["-Wl,-z,defs"] + return [] + env['LIBDEPS_TAG_EXPANSIONS'].append(libdeps_tags_expand_incomplete) if optBuild: env.SetConfigHeaderDefine("MONGO_CONFIG_OPTIMIZED_BUILD") -- cgit v1.2.1