Commit 6014a0fc authored by Nico Weber's avatar Nico Weber Committed by Commit Bot

clang package: Stop shipping 32-bit asan on win, and 32-bit libraries on linux.

See "Does anyone use the 32-bit asan runtime on Windows?" on chromium-dev
for Windows. (We sadly still need the 32-bit profile library, so the build
script doesn't get any simpler.)

We haven't supported 32-bit builds on linux in a while, so those libs should
be safe to remove as well.

If anyone needs these, shout and we can add them back.

Also use ' instead of " for strings added in my previous change.

Linux package size: 48.73MB -> 47.49MB; main build 3924 -> 3526 build steps.
Windows package size 43.49MB -> 41.56MB; 32-bit compiler-rt build 207 -> 18 build steps.

Bug: 959966
Change-Id: I8c326dab4e07df69ee734f6390cda7291bfd7642
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1635410
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: default avatarHans Wennborg <hans@chromium.org>
Cr-Commit-Position: refs/heads/master@{#664523}
parent 81e50638
......@@ -443,16 +443,16 @@ def main():
# libraries are needed though, and only libclang_rt (i.e.
# COMPILER_RT_BUILD_BUILTINS).
bootstrap_args.extend([
"-DDARWIN_osx_ARCHS=x86_64",
"-DCOMPILER_RT_BUILD_BUILTINS=ON",
"-DCOMPILER_RT_BUILD_CRT=OFF",
"-DCOMPILER_RT_BUILD_LIBFUZZER=OFF",
"-DCOMPILER_RT_BUILD_PROFILE=OFF",
"-DCOMPILER_RT_BUILD_SANITIZERS=OFF",
"-DCOMPILER_RT_BUILD_XRAY=OFF",
"-DCOMPILER_RT_ENABLE_IOS=OFF",
"-DCOMPILER_RT_ENABLE_WATCHOS=OFF",
"-DCOMPILER_RT_ENABLE_TVOS=OFF",
'-DDARWIN_osx_ARCHS=x86_64',
'-DCOMPILER_RT_BUILD_BUILTINS=ON',
'-DCOMPILER_RT_BUILD_CRT=OFF',
'-DCOMPILER_RT_BUILD_LIBFUZZER=OFF',
'-DCOMPILER_RT_BUILD_PROFILE=OFF',
'-DCOMPILER_RT_BUILD_SANITIZERS=OFF',
'-DCOMPILER_RT_BUILD_XRAY=OFF',
'-DCOMPILER_RT_ENABLE_IOS=OFF',
'-DCOMPILER_RT_ENABLE_WATCHOS=OFF',
'-DCOMPILER_RT_ENABLE_TVOS=OFF',
])
if cc is not None: bootstrap_args.append('-DCMAKE_C_COMPILER=' + cc)
if cxx is not None: bootstrap_args.append('-DCMAKE_CXX_COMPILER=' + cxx)
......@@ -480,27 +480,33 @@ def main():
compiler_rt_args = [
"-DCOMPILER_RT_BUILD_CRT=OFF",
"-DCOMPILER_RT_BUILD_LIBFUZZER=ON",
"-DCOMPILER_RT_BUILD_PROFILE=ON",
"-DCOMPILER_RT_BUILD_SANITIZERS=ON",
"-DCOMPILER_RT_BUILD_XRAY=OFF",
'-DCOMPILER_RT_BUILD_CRT=OFF',
'-DCOMPILER_RT_BUILD_LIBFUZZER=ON',
'-DCOMPILER_RT_BUILD_PROFILE=ON',
'-DCOMPILER_RT_BUILD_SANITIZERS=ON',
'-DCOMPILER_RT_BUILD_XRAY=OFF',
]
if sys.platform == 'darwin':
compiler_rt_args.extend([
"-DCOMPILER_RT_BUILD_BUILTINS=ON",
"-DCOMPILER_RT_ENABLE_IOS=ON",
"-DCOMPILER_RT_ENABLE_WATCHOS=OFF",
"-DCOMPILER_RT_ENABLE_TVOS=OFF",
'-DCOMPILER_RT_BUILD_BUILTINS=ON',
'-DCOMPILER_RT_ENABLE_IOS=ON',
'-DCOMPILER_RT_ENABLE_WATCHOS=OFF',
'-DCOMPILER_RT_ENABLE_TVOS=OFF',
# armv7 is A5 and earlier, armv7s is A6+ (2012 and later, before 64-bit
# iPhones). armv7k is Apple Watch, which we don't need.
"-DDARWIN_ios_ARCHS=armv7;armv7s;arm64",
"-DDARWIN_iossim_ARCHS=i386;x86_64",
'-DDARWIN_ios_ARCHS=armv7;armv7s;arm64',
'-DDARWIN_iossim_ARCHS=i386;x86_64',
# We don't need 32-bit intel support for macOS, we only ship 64-bit.
"-DDARWIN_osx_ARCHS=x86_64",
'-DDARWIN_osx_ARCHS=x86_64',
])
else:
compiler_rt_args.append("-DCOMPILER_RT_BUILD_BUILTINS=OFF")
compiler_rt_args.append('-DCOMPILER_RT_BUILD_BUILTINS=OFF')
if sys.platform.startswith('linux'):
# Only build the 64-bit runtime, we don't need the 32-bit one.
compiler_rt_args.extend([
'-DCMAKE_C_COMPILER_TARGET=x86_64-unknown-linux-gnu',
'-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON',
])
# LLVM uses C++11 starting in llvm 3.5. On Linux, this means libstdc++4.7+ is
# needed, on OS X it requires libc++. clang only automatically links to libc++
......@@ -635,8 +641,7 @@ def main():
rt_lib_dst_dir = os.path.join(LLVM_BUILD_DIR, 'lib', 'clang',
RELEASE_VERSION, 'lib', platform)
# Do an out-of-tree build of compiler-rt for 32-bit Win ASan.
# TODO(hans): Do we use 32-bit ASan? Can we drop it?
# Do an out-of-tree build of compiler-rt for 32-bit Win clang_rt.profile.lib.
if sys.platform == 'win32':
if os.path.isdir(COMPILER_RT_BUILD_DIR):
RmTree(COMPILER_RT_BUILD_DIR)
......@@ -646,10 +651,17 @@ def main():
# The bootstrap compiler produces 64-bit binaries by default.
cflags += ['-m32']
cxxflags += ['-m32']
compiler_rt_args = base_cmake_args + compiler_rt_args + [
compiler_rt_args = base_cmake_args + [
'-DLLVM_ENABLE_THREADS=OFF',
'-DCMAKE_C_FLAGS=' + ' '.join(cflags),
'-DCMAKE_CXX_FLAGS=' + ' '.join(cxxflags)]
'-DCMAKE_CXX_FLAGS=' + ' '.join(cxxflags),
'-DCOMPILER_RT_BUILD_BUILTINS=OFF',
'-DCOMPILER_RT_BUILD_CRT=OFF',
'-DCOMPILER_RT_BUILD_LIBFUZZER=OFF',
'-DCOMPILER_RT_BUILD_PROFILE=ON',
'-DCOMPILER_RT_BUILD_SANITIZERS=OFF',
'-DCOMPILER_RT_BUILD_XRAY=OFF',
]
RunCommand(['cmake'] + compiler_rt_args +
[os.path.join(LLVM_DIR, 'llvm')],
msvc_arch='x86', env=deployment_env)
......@@ -658,9 +670,6 @@ def main():
# Copy select output to the main tree.
rt_lib_src_dir = os.path.join(COMPILER_RT_BUILD_DIR, 'lib', 'clang',
RELEASE_VERSION, 'lib', platform)
# Blacklists:
CopyDirectoryContents(os.path.join(rt_lib_src_dir, '..', '..', 'share'),
os.path.join(rt_lib_dst_dir, '..', '..', 'share'))
# Static and dynamic libraries:
CopyDirectoryContents(rt_lib_src_dir, rt_lib_dst_dir)
......
......@@ -260,12 +260,10 @@ def main():
'bin/llvm-ar',
# AddressSanitizer C runtime (pure C won't link with *_cxx).
'lib/clang/$V/lib/linux/libclang_rt.asan-i386.a',
'lib/clang/$V/lib/linux/libclang_rt.asan-x86_64.a',
'lib/clang/$V/lib/linux/libclang_rt.asan-x86_64.a.syms',
# AddressSanitizer C++ runtime.
'lib/clang/$V/lib/linux/libclang_rt.asan_cxx-i386.a',
'lib/clang/$V/lib/linux/libclang_rt.asan_cxx-x86_64.a',
'lib/clang/$V/lib/linux/libclang_rt.asan_cxx-x86_64.a.syms',
......@@ -289,7 +287,6 @@ def main():
'lib/clang/$V/lib/linux/libclang_rt.msan_cxx-x86_64.a.syms',
# Profile runtime (used by profiler and code coverage).
'lib/clang/$V/lib/linux/libclang_rt.profile-i386.a',
'lib/clang/$V/lib/linux/libclang_rt.profile-x86_64.a',
'lib/clang/$V/lib/linux/libclang_rt.profile-aarch64-android.a',
'lib/clang/$V/lib/linux/libclang_rt.profile-arm-android.a',
......@@ -303,12 +300,10 @@ def main():
'lib/clang/$V/lib/linux/libclang_rt.tsan_cxx-x86_64.a.syms',
# UndefinedBehaviorSanitizer C runtime (pure C won't link with *_cxx).
'lib/clang/$V/lib/linux/libclang_rt.ubsan_standalone-i386.a',
'lib/clang/$V/lib/linux/libclang_rt.ubsan_standalone-x86_64.a',
'lib/clang/$V/lib/linux/libclang_rt.ubsan_standalone-x86_64.a.syms',
# UndefinedBehaviorSanitizer C++ runtime.
'lib/clang/$V/lib/linux/libclang_rt.ubsan_standalone_cxx-i386.a',
'lib/clang/$V/lib/linux/libclang_rt.ubsan_standalone_cxx-x86_64.a',
'lib/clang/$V/lib/linux/libclang_rt.ubsan_standalone_cxx-x86_64.a.syms',
......@@ -322,28 +317,22 @@ def main():
elif sys.platform == 'win32':
want.extend([
# AddressSanitizer C runtime (pure C won't link with *_cxx).
'lib/clang/$V/lib/windows/clang_rt.asan-i386.lib',
'lib/clang/$V/lib/windows/clang_rt.asan-x86_64.lib',
# AddressSanitizer C++ runtime.
'lib/clang/$V/lib/windows/clang_rt.asan_cxx-i386.lib',
'lib/clang/$V/lib/windows/clang_rt.asan_cxx-x86_64.lib',
# Fuzzing instrumentation (-fsanitize=fuzzer-no-link).
'lib/clang/$V/lib/windows/clang_rt.fuzzer_no_main-x86_64.lib',
# Thunk for AddressSanitizer needed for static build of a shared lib.
'lib/clang/$V/lib/windows/clang_rt.asan_dll_thunk-i386.lib',
'lib/clang/$V/lib/windows/clang_rt.asan_dll_thunk-x86_64.lib',
# AddressSanitizer runtime for component build.
'lib/clang/$V/lib/windows/clang_rt.asan_dynamic-i386.dll',
'lib/clang/$V/lib/windows/clang_rt.asan_dynamic-i386.lib',
'lib/clang/$V/lib/windows/clang_rt.asan_dynamic-x86_64.dll',
'lib/clang/$V/lib/windows/clang_rt.asan_dynamic-x86_64.lib',
# Thunk for AddressSanitizer for component build of a shared lib.
'lib/clang/$V/lib/windows/clang_rt.asan_dynamic_runtime_thunk-i386.lib',
'lib/clang/$V/lib/windows/clang_rt.asan_dynamic_runtime_thunk-x86_64.lib',
# Profile runtime (used by profiler and code coverage).
......@@ -351,11 +340,9 @@ def main():
'lib/clang/$V/lib/windows/clang_rt.profile-x86_64.lib',
# UndefinedBehaviorSanitizer C runtime (pure C won't link with *_cxx).
'lib/clang/$V/lib/windows/clang_rt.ubsan_standalone-i386.lib',
'lib/clang/$V/lib/windows/clang_rt.ubsan_standalone-x86_64.lib',
# UndefinedBehaviorSanitizer C++ runtime.
'lib/clang/$V/lib/windows/clang_rt.ubsan_standalone_cxx-i386.lib',
'lib/clang/$V/lib/windows/clang_rt.ubsan_standalone_cxx-x86_64.lib',
])
......
......@@ -38,7 +38,7 @@ import zipfile
# Reverting problematic clang rolls is safe, though.
CLANG_REVISION = '67510fac36d27b2e22c7cd955fc167136b737b93'
CLANG_SVN_REVISION = '361212'
CLANG_SUB_REVISION = 3
CLANG_SUB_REVISION = 4
PACKAGE_VERSION = '%s-%s-%s' % (CLANG_SVN_REVISION, CLANG_REVISION[:8],
CLANG_SUB_REVISION)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment