From a95a7417ad456115a1ef2da4bb8320531c0821f1 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 29 Sep 2022 16:16:15 +0200 Subject: BASELINE: Update Chromium to 106.0.5249.126 Change-Id: Ib0bb21c437a7d1686e21c33f2d329f2ac425b7ab Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/438936 Reviewed-by: Allan Sandfeld Jensen --- .../tools/clang/blink_gc_plugin/CMakeLists.txt | 2 +- .../tools/clang/blink_gc_plugin/process-graph.py | 2 +- chromium/tools/clang/plugins/CMakeLists.txt | 2 +- .../clang/plugins/FindBadConstructsAction.cpp | 8 +- .../clang/plugins/FindBadConstructsConsumer.cpp | 61 +- chromium/tools/clang/plugins/Options.h | 3 +- .../tools/clang/pylib/clang/compile_db_test.py | 2 +- .../rewrite_raw_ptr_fields/RewriteRawPtrFields.cpp | 8 + .../manual-fields-to-ignore.txt | 36 ++ .../manual-paths-to-ignore.txt | 1 + .../rewrite-multiple-platforms.sh | 25 + chromium/tools/clang/scripts/build.py | 692 ++++++++------------- chromium/tools/clang/scripts/goma_ld.py | 11 +- chromium/tools/clang/scripts/goma_link.py | 19 +- chromium/tools/clang/scripts/package.py | 109 ++-- .../tools/clang/scripts/process_crashreports.py | 4 + .../sanitizers/sanitizer_intercept_overriders.h | 5 + chromium/tools/clang/scripts/update.py | 19 +- chromium/tools/clang/scripts/upload_revision.py | 1 + 19 files changed, 473 insertions(+), 537 deletions(-) create mode 100644 chromium/tools/clang/scripts/sanitizers/sanitizer_intercept_overriders.h (limited to 'chromium/tools/clang') diff --git a/chromium/tools/clang/blink_gc_plugin/CMakeLists.txt b/chromium/tools/clang/blink_gc_plugin/CMakeLists.txt index 1ccb2ee6764..27ab135243a 100644 --- a/chromium/tools/clang/blink_gc_plugin/CMakeLists.txt +++ b/chromium/tools/clang/blink_gc_plugin/CMakeLists.txt @@ -31,6 +31,6 @@ endforeach() set_property(TARGET clang APPEND PROPERTY SOURCES ${absolute_sources}) cr_add_test(blink_gc_plugin_test - python tests/test.py + python3 tests/test.py ${CMAKE_BINARY_DIR}/bin/clang ) diff --git a/chromium/tools/clang/blink_gc_plugin/process-graph.py b/chromium/tools/clang/blink_gc_plugin/process-graph.py index eac8f363c64..c5976892a58 100755 --- a/chromium/tools/clang/blink_gc_plugin/process-graph.py +++ b/chromium/tools/clang/blink_gc_plugin/process-graph.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright 2014 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. diff --git a/chromium/tools/clang/plugins/CMakeLists.txt b/chromium/tools/clang/plugins/CMakeLists.txt index 0c79c004b19..63f5deed03d 100644 --- a/chromium/tools/clang/plugins/CMakeLists.txt +++ b/chromium/tools/clang/plugins/CMakeLists.txt @@ -23,6 +23,6 @@ endforeach() set_property(TARGET clang APPEND PROPERTY SOURCES ${absolute_sources}) cr_add_test(plugins_test - python tests/test.py + python3 tests/test.py ${CMAKE_BINARY_DIR}/bin/clang ) diff --git a/chromium/tools/clang/plugins/FindBadConstructsAction.cpp b/chromium/tools/clang/plugins/FindBadConstructsAction.cpp index f1618de6480..3ba4e6e69a1 100644 --- a/chromium/tools/clang/plugins/FindBadConstructsAction.cpp +++ b/chromium/tools/clang/plugins/FindBadConstructsAction.cpp @@ -53,12 +53,8 @@ bool FindBadConstructsAction::ParseArgs(const CompilerInstance& instance, options_.check_gmock_objects = true; } else if (args[i] == "check-layout-object-methods") { options_.check_layout_object_methods = true; - } else if (args[i] == "checked-ptr-as-trivial-member") { - options_.checked_ptr_as_trivial_member = true; - } else if (args[i] == "raw-ptr-template-as-trivial-member") { - options_.raw_ptr_template_as_trivial_member = true; - } else if (args[i] == "use-classify-type") { - // This option is ignored, will be removed soon. + } else if (args[i] == "raw-ref-template-as-trivial-member") { + options_.raw_ref_template_as_trivial_member = true; } else { parsed = false; llvm::errs() << "Unknown clang plugin argument: " << args[i] << "\n"; diff --git a/chromium/tools/clang/plugins/FindBadConstructsConsumer.cpp b/chromium/tools/clang/plugins/FindBadConstructsConsumer.cpp index 0dadc5eb5fc..1f004360ff5 100644 --- a/chromium/tools/clang/plugins/FindBadConstructsConsumer.cpp +++ b/chromium/tools/clang/plugins/FindBadConstructsConsumer.cpp @@ -70,10 +70,8 @@ bool IsGmockObject(const CXXRecordDecl* decl) { } bool IsPodOrTemplateType(const CXXRecordDecl& record) { - return record.isPOD() || - record.getDescribedClassTemplate() || - record.getTemplateSpecializationKind() || - record.isDependentType(); + return record.isPOD() || record.getDescribedClassTemplate() || + record.getTemplateSpecializationKind() || record.isDependentType(); } // Use a local RAV implementation to simply collect all FunctionDecls marked for @@ -226,13 +224,16 @@ void FindBadConstructsConsumer::Traverse(ASTContext& context) { layout_visitor_->VisitLayoutObjectMethods(context); } RecursiveASTVisitor::TraverseDecl(context.getTranslationUnitDecl()); - if (ipc_visitor_) ipc_visitor_->set_context(nullptr); + if (ipc_visitor_) + ipc_visitor_->set_context(nullptr); } bool FindBadConstructsConsumer::TraverseDecl(Decl* decl) { - if (ipc_visitor_) ipc_visitor_->BeginDecl(decl); + if (ipc_visitor_) + ipc_visitor_->BeginDecl(decl); bool result = RecursiveASTVisitor::TraverseDecl(decl); - if (ipc_visitor_) ipc_visitor_->EndDecl(); + if (ipc_visitor_) + ipc_visitor_->EndDecl(); return result; } @@ -249,12 +250,14 @@ bool FindBadConstructsConsumer::VisitTagDecl(clang::TagDecl* tag_decl) { bool FindBadConstructsConsumer::VisitTemplateSpecializationType( TemplateSpecializationType* spec) { - if (ipc_visitor_) ipc_visitor_->VisitTemplateSpecializationType(spec); + if (ipc_visitor_) + ipc_visitor_->VisitTemplateSpecializationType(spec); return true; } bool FindBadConstructsConsumer::VisitCallExpr(CallExpr* call_expr) { - if (ipc_visitor_) ipc_visitor_->VisitCallExpr(call_expr); + if (ipc_visitor_) + ipc_visitor_->VisitCallExpr(call_expr); return true; } @@ -369,8 +372,7 @@ void FindBadConstructsConsumer::CheckCtorDtorWeight( // destructor can be inlined. int templated_base_classes = 0; for (CXXRecordDecl::base_class_const_iterator it = record->bases_begin(); - it != record->bases_end(); - ++it) { + it != record->bases_end(); ++it) { if (it->getTypeSourceInfo()->getTypeLoc().getTypeLocClass() == TypeLoc::TemplateSpecialization) { ++templated_base_classes; @@ -382,8 +384,7 @@ void FindBadConstructsConsumer::CheckCtorDtorWeight( int non_trivial_member = 0; int templated_non_trivial_member = 0; for (RecordDecl::field_iterator it = record->field_begin(); - it != record->field_end(); - ++it) { + it != record->field_end(); ++it) { switch (ClassifyType(it->getType().getTypePtr())) { case TypeClassification::kTrivial: trivial_member += 1; @@ -429,8 +430,7 @@ void FindBadConstructsConsumer::CheckCtorDtorWeight( // Iterate across all the constructors in this file and yell if we // find one that tries to be inline. for (CXXRecordDecl::ctor_iterator it = record->ctor_begin(); - it != record->ctor_end(); - ++it) { + it != record->ctor_end(); ++it) { // The current check is buggy. An implicit copy constructor does not // have an inline body, so this check never fires for classes with a // user-declared out-of-line constructor. @@ -462,8 +462,9 @@ void FindBadConstructsConsumer::CheckCtorDtorWeight( diag_inline_complex_ctor_); } } else if (it->isInlined() && !it->isInlineSpecified() && - !it->isDeleted() && (!it->isCopyOrMoveConstructor() || - it->isExplicitlyDefaulted())) { + !it->isDeleted() && + (!it->isCopyOrMoveConstructor() || + it->isExplicitlyDefaulted())) { // isInlined() is a more reliable check than hasInlineBody(), but // unfortunately, it results in warnings for implicit copy/move // constructors in the previously mentioned situation. To preserve @@ -528,8 +529,7 @@ void FindBadConstructsConsumer::CheckVirtualMethods( } for (CXXRecordDecl::method_iterator it = record->method_begin(); - it != record->method_end(); - ++it) { + it != record->method_end(); ++it) { if (it->isCopyAssignmentOperator() || isa(*it)) { // Ignore constructors and assignment operators. } else if (isa(*it) && @@ -708,13 +708,16 @@ FindBadConstructsConsumer::ClassifyType(const Type* type) { if (name == "std::basic_string") return TypeClassification::kNonTrivialExternTemplate; - // `base::raw_ptr` is non-trivial if the `use_backup_ref_ptr` flag is - // enabled, and trivial otherwise. Since there are many existing types - // using this that we don't wish to burden with defining custom - // ctors/dtors, and we'd rather not vary on triviality by build config, - // treat this as always trivial. - if (name == "base::raw_ptr") + // `base::raw_ptr` and `base::raw_ref` are non-trivial if the + // `use_backup_ref_ptr` flag is enabled, and trivial otherwise. Since + // there are many existing types using this that we don't wish to burden + // with defining custom ctors/dtors, and we'd rather not vary on + // triviality by build config, treat this as always trivial. + if (name == "base::raw_ptr" || + (options_.raw_ref_template_as_trivial_member && + name == "base::raw_ref")) { return TypeClassification::kTrivialTemplate; + } return TypeClassification::kNonTrivial; } @@ -837,9 +840,8 @@ FindBadConstructsConsumer::CheckRecordForRefcountIssue( // Returns true if |base| specifies one of the Chromium reference counted // classes (base::RefCounted / base::RefCountedThreadSafe). -bool FindBadConstructsConsumer::IsRefCounted( - const CXXBaseSpecifier* base, - CXXBasePath& path) { +bool FindBadConstructsConsumer::IsRefCounted(const CXXBaseSpecifier* base, + CXXBasePath& path) { const TemplateSpecializationType* base_type = dyn_cast( UnwrapType(base->getType().getTypePtr())); @@ -990,8 +992,7 @@ void FindBadConstructsConsumer::CheckRefCountedDtors( } for (CXXBasePaths::const_paths_iterator it = dtor_paths.begin(); - it != dtor_paths.end(); - ++it) { + it != dtor_paths.end(); ++it) { // The record with the problem will always be the last record // in the path, since it is the record that stopped the search. const CXXRecordDecl* problem_record = dyn_cast( diff --git a/chromium/tools/clang/plugins/Options.h b/chromium/tools/clang/plugins/Options.h index e3e29e14742..78fd7fb9d05 100644 --- a/chromium/tools/clang/plugins/Options.h +++ b/chromium/tools/clang/plugins/Options.h @@ -12,8 +12,7 @@ struct Options { bool check_ipc = false; bool check_gmock_objects = false; bool check_layout_object_methods = false; - bool checked_ptr_as_trivial_member = false; - bool raw_ptr_template_as_trivial_member = false; + bool raw_ref_template_as_trivial_member = false; }; } // namespace chrome_checker diff --git a/chromium/tools/clang/pylib/clang/compile_db_test.py b/chromium/tools/clang/pylib/clang/compile_db_test.py index 06b7e43ef8e..2ae494236c6 100755 --- a/chromium/tools/clang/pylib/clang/compile_db_test.py +++ b/chromium/tools/clang/pylib/clang/compile_db_test.py @@ -1,4 +1,4 @@ -#!/usr/bin/env vpython +#!/usr/bin/env vpython3 # Copyright 2019 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. diff --git a/chromium/tools/clang/rewrite_raw_ptr_fields/RewriteRawPtrFields.cpp b/chromium/tools/clang/rewrite_raw_ptr_fields/RewriteRawPtrFields.cpp index c7e2d9662d8..b854538dbe7 100644 --- a/chromium/tools/clang/rewrite_raw_ptr_fields/RewriteRawPtrFields.cpp +++ b/chromium/tools/clang/rewrite_raw_ptr_fields/RewriteRawPtrFields.cpp @@ -852,6 +852,14 @@ class FieldDeclRewriter : public MatchFinder::MatchCallback { const clang::TypeSourceInfo* type_source_info = field_decl->getTypeSourceInfo(); + if (auto* ivar_decl = clang::dyn_cast(field_decl)) { + // Objective-C @synthesize statements should not be rewritten. They return + // null for getTypeSourceInfo(). + if (ivar_decl->getSynthesize()) { + assert(!type_source_info); + return; + } + } assert(type_source_info && "assuming |type_source_info| is always present"); clang::QualType pointer_type = type_source_info->getType(); diff --git a/chromium/tools/clang/rewrite_raw_ptr_fields/manual-fields-to-ignore.txt b/chromium/tools/clang/rewrite_raw_ptr_fields/manual-fields-to-ignore.txt index 1a88fb4b414..71549e3c53f 100644 --- a/chromium/tools/clang/rewrite_raw_ptr_fields/manual-fields-to-ignore.txt +++ b/chromium/tools/clang/rewrite_raw_ptr_fields/manual-fields-to-ignore.txt @@ -67,6 +67,7 @@ views::LayoutManager::view_setting_visibility_on_ FullscreenController::deactivated_contents_ content::RenderWidgetHostInputEventRouter::touch_target_ content::RenderWidgetHostInputEventRouter::touchpad_gesture_target_ +base::MessagePumpLibevent::run_state_ # Populated manually - incompatibilities with tracing in not-rewritten platform specific code TabStripModelChange::RemovedTab::contents @@ -235,6 +236,36 @@ device::(anonymous namespace)::CBORExtract_RequiredInOptionalMap_Test::TestBody( # Populated manually - pointer to Objective-C object gfx::ScopedNSGraphicsContextSaveGState::context_ base::mac::ScopedNSAutoreleasePool::autorelease_pool_ +content::ThemeHelperMac::theme_observer_ +content::PopupMenuHelper::menu_runner_ +content::ShellJavaScriptDialog::helper_ +ui::ClipboardFormatType::data_ +ui::WeakPtrNSObjectFactory::handle_ +content::NativeEventProcessorObserver::event_ +image_editor::EventCaptureMac::web_contents_view_ +image_editor::EventCaptureMac::window_ +content::ScopedNotifyNativeEventProcessorObserver::event_ +device::fido::mac::TouchIdCredentialStore::authentication_context_ + +# Populated manually - struct is part of separate binary and must be a POD +# https://source.chromium.org/chromium/chromium/src/+/main:chrome/common/mac/app_mode_common.mm;l=64 +app_mode::ChromeAppModeInfo::argv + +# Populated manually - requires @property rewrite +# In Objective-C the instance variable type and property type must be the same. +# Currently, the rewriter can only rewrite the instance variable declaration. +# So the types do not match, and causes a compiler error. +# These fields can be rewritten once the rewriter can rewrite @property declarations. +ObjCPropertyTestBase::_basePointer +ObjCPropertyTestDerived::_derivedPointer +ObjCPropertyTestDerived::_protoPointer +NativeWidgetMacNSWindow::_bridge +AlertBridgeHelper::_alertBridge +BridgedContentView::_bridge +WindowControlsOverlayNSView::_bridge +AXPlatformNodeCocoa::_node +ShellNativeAppWindowController::_appWindow +WatchedLifetimeMenuController::_deallocCalled ####### # BackupRefPtr-specific sections @@ -309,6 +340,11 @@ disk_cache::MappedFile::buffer_ network::MojoToNetPendingBuffer::buffer_ network::NetToMojoPendingBuffer::buffer_ +# Populated manually - Field initialized with non-nullptr value in constexpr. +enterprise_connectors::ServiceProvider::analysis +enterprise_connectors::ServiceProvider::reporting +enterprise_connectors::ServiceProvider::file_system + # Populated manually - based on sampling profiler data and tab_search:top100:2020 profiler data (anonymous namespace)::TlsVectorEntry::data LinkNodeBase::next_ diff --git a/chromium/tools/clang/rewrite_raw_ptr_fields/manual-paths-to-ignore.txt b/chromium/tools/clang/rewrite_raw_ptr_fields/manual-paths-to-ignore.txt index 0a7941f3f14..df0e1d1b79b 100644 --- a/chromium/tools/clang/rewrite_raw_ptr_fields/manual-paths-to-ignore.txt +++ b/chromium/tools/clang/rewrite_raw_ptr_fields/manual-paths-to-ignore.txt @@ -23,6 +23,7 @@ base/allocator/ # TODO(bartekn): Update the list of dependencies. base/logging.h base/synchronization/lock_impl.h +base/check.h # Exclude - deprecated and contains legacy C++ and pre-C++11 code. ppapi/ diff --git a/chromium/tools/clang/rewrite_raw_ptr_fields/rewrite-multiple-platforms.sh b/chromium/tools/clang/rewrite_raw_ptr_fields/rewrite-multiple-platforms.sh index 7d809473f5f..9f22361fb40 100755 --- a/chromium/tools/clang/rewrite_raw_ptr_fields/rewrite-multiple-platforms.sh +++ b/chromium/tools/clang/rewrite_raw_ptr_fields/rewrite-multiple-platforms.sh @@ -67,6 +67,31 @@ is_official_build = true symbol_level = 1 use_goma = false chrome_pgo_phase = 0 +EOF + ;; + + linux) + cat <=24. + 'ANDROID_NATIVE_API_LEVEL=' + api_level, ] - # First build the builtins and copy to the main build tree. - RunCommand( - ['cmake'] + android_args + - # On Android, we want DWARF info for the builtins for - # unwinding. See crbug.com/1311807. - ['-DCMAKE_BUILD_TYPE=RelWithDebInfo'] + - [os.path.join(COMPILER_RT_DIR, 'lib', 'builtins')]) - builtins_a = 'lib/linux/libclang_rt.builtins-%s-android.a' % target_arch - RunCommand(['ninja', builtins_a]) - shutil.copy(builtins_a, rt_lib_dst_dir) - - # With the builtins in place, we can build the other runtimes. - build_dir_2 = build_dir + '-phase2' - if not os.path.exists(build_dir_2): - os.mkdir(os.path.join(build_dir_2)) - os.chdir(build_dir_2) - - android_args.extend([ - '-DCOMPILER_RT_BUILD_BUILTINS=OFF', - '-DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON', - '-DCOMPILER_RT_BUILD_PROFILE=ON', - '-DCOMPILER_RT_BUILD_SANITIZERS=ON', - ]) - RunCommand(['cmake'] + android_args + [COMPILER_RT_DIR]) - - libs_want = [ - 'lib/linux/libclang_rt.asan-{0}-android.so', - 'lib/linux/libclang_rt.asan_static-{0}-android.a', - 'lib/linux/libclang_rt.ubsan_standalone-{0}-android.so', - 'lib/linux/libclang_rt.profile-{0}-android.a', - ] - # Only build HWASan for AArch64. - if target_arch == 'aarch64': - libs_want += ['lib/linux/libclang_rt.hwasan-{0}-android.so'] - libs_want = [lib.format(target_arch) for lib in libs_want] - RunCommand(['ninja'] + libs_want) - - # And copy them into the main build tree. - for p in libs_want: - shutil.copy(p, rt_lib_dst_dir) + runtimes_triples_args.append((target_triple, android_args)) if args.with_fuchsia: # Fuchsia links against libclang_rt.builtins-.a instead of libgcc.a. @@ -1206,112 +1103,68 @@ def main(): fuchsia_arch_name = {'aarch64': 'arm64', 'x86_64': 'x64'}[target_arch] toolchain_dir = os.path.join( FUCHSIA_SDK_DIR, 'arch', fuchsia_arch_name, 'sysroot') - # Build clang_rt runtime for Fuchsia in a separate build tree. - build_dir = os.path.join(LLVM_BUILD_DIR, 'fuchsia-' + target_arch) - if not os.path.exists(build_dir): - os.mkdir(os.path.join(build_dir)) - os.chdir(build_dir) - target_spec = target_arch + '-unknown-fuchsia' - if args.build_mac_arm: - # Just-built clang can't run (it's an arm binary on an intel host), so - # use the bootstrap compiler instead. - host_path = LLVM_BOOTSTRAP_INSTALL_DIR - else: - host_path = LLVM_BUILD_DIR - # TODO(thakis): Might have to pass -B here once sysroot contains - # binaries (e.g. gas for arm64?) - fuchsia_args = base_cmake_args + [ - '-DCMAKE_C_COMPILER=' + os.path.join(host_path, 'bin/clang'), - '-DCMAKE_CXX_COMPILER=' + os.path.join(host_path, 'bin/clang++'), - '-DCMAKE_LINKER=' + os.path.join(host_path, 'bin/clang'), - '-DCMAKE_AR=' + os.path.join(host_path, 'bin/llvm-ar'), - '-DLLVM_CONFIG_PATH=' + os.path.join(host_path, 'bin/llvm-config'), - '-DCMAKE_SYSTEM_NAME=Fuchsia', - '-DCMAKE_CXX_COMPILER_TARGET=' + target_spec, - '-DCMAKE_C_COMPILER_TARGET=' + target_spec, - '-DCMAKE_ASM_COMPILER_TARGET=' + target_spec, - '-DCOMPILER_RT_BUILD_BUILTINS=ON', - '-DCOMPILER_RT_BUILD_CRT=OFF', - '-DCOMPILER_RT_BUILD_LIBFUZZER=OFF', - '-DCOMPILER_RT_BUILD_MEMPROF=OFF', - '-DCOMPILER_RT_BUILD_ORC=OFF', - '-DCOMPILER_RT_BUILD_PROFILE=OFF', - '-DCOMPILER_RT_BUILD_SANITIZERS=OFF', - '-DCOMPILER_RT_BUILD_XRAY=OFF', - '-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON', - '-DCMAKE_SYSROOT=%s' % toolchain_dir, - # TODO(thakis|scottmg): Use PER_TARGET_RUNTIME_DIR for all platforms. - # https://crbug.com/882485. - '-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON', - - # These are necessary because otherwise CMake tries to build an - # executable to test to see if the compiler is working, but in doing so, - # it links against the builtins.a that we're about to build. - '-DCMAKE_CXX_COMPILER_WORKS=ON', - '-DCMAKE_C_COMPILER_WORKS=ON', - '-DCMAKE_ASM_COMPILER_WORKS=ON', - ] - RunCommand(['cmake'] + - fuchsia_args + - [os.path.join(COMPILER_RT_DIR, 'lib', 'builtins')]) - builtins_a = 'libclang_rt.builtins.a' - RunCommand(['ninja', builtins_a]) - - # And copy it into the main build tree. - fuchsia_lib_dst_dir = os.path.join(LLVM_BUILD_DIR, 'lib', 'clang', - RELEASE_VERSION, 'lib', target_spec) - if not os.path.exists(fuchsia_lib_dst_dir): - os.makedirs(fuchsia_lib_dst_dir) - CopyFile(os.path.join(build_dir, 'lib', target_spec, builtins_a), - fuchsia_lib_dst_dir) - + target_triple = target_arch + '-unknown-fuchsia' # Build the Fuchsia profile and asan runtimes. This is done after the rt # builtins have been created because the CMake build runs link checks that # require that the builtins already exist to succeed. # TODO(thakis): Figure out why this doesn't build with the stage0 # compiler in arm cross builds. - if target_arch == 'x86_64' and not args.build_mac_arm: - fuchsia_args.extend([ - '-DCOMPILER_RT_BUILD_BUILTINS=OFF', - '-DCOMPILER_RT_BUILD_PROFILE=ON', - ]) - # Build the asan runtime only on non-Mac platforms. Macs are excluded - # because the asan install changes library RPATHs which CMake only - # supports on ELF platforms and MacOS uses Mach-O instead of ELF. - if sys.platform != 'darwin': - fuchsia_args.extend([ - '-DCOMPILER_RT_BUILD_SANITIZERS=ON', - '-DSANITIZER_NO_UNDEFINED_SYMBOLS=OFF', - ]) - build_phase2_dir = os.path.join(LLVM_BUILD_DIR, - 'fuchsia-phase2-' + target_arch) - if not os.path.exists(build_phase2_dir): - os.mkdir(os.path.join(build_phase2_dir)) - os.chdir(build_phase2_dir) - RunCommand(['cmake'] + - fuchsia_args + - [COMPILER_RT_DIR]) - profile_a = 'libclang_rt.profile.a' - asan_preinit_a = 'libclang_rt.asan-preinit.a' - asan_static_a = 'libclang_rt.asan_static.a' - asan_so = 'libclang_rt.asan.so' - ninja_command = ['ninja', profile_a] - if sys.platform != 'darwin': - ninja_command.append(asan_so) - ninja_command.append(asan_preinit_a) - ninja_command.append(asan_static_a) - RunCommand(ninja_command) - CopyFile(os.path.join(build_phase2_dir, 'lib', target_spec, profile_a), - fuchsia_lib_dst_dir) - if sys.platform != 'darwin': - CopyFile(os.path.join(build_phase2_dir, 'lib', target_spec, asan_so), - fuchsia_lib_dst_dir) - CopyFile( - os.path.join(build_phase2_dir, 'lib', target_spec, - asan_preinit_a), fuchsia_lib_dst_dir) - CopyFile( - os.path.join(build_phase2_dir, 'lib', target_spec, asan_static_a), - fuchsia_lib_dst_dir) + build_profile = target_arch == 'x86_64' and not args.build_mac_arm + # Build the asan runtime only on non-Mac platforms. Macs are excluded + # because the asan install changes library RPATHs which CMake only + # supports on ELF platforms and MacOS uses Mach-O instead of ELF. + build_sanitizers = build_profile and sys.platform != 'darwin' + # TODO(thakis): Might have to pass -B here once sysroot contains + # binaries (e.g. gas for arm64?) + fuchsia_args = compiler_rt_cmake_flags( + sanitizers=build_sanitizers, profile=build_profile + ) + [ + 'LLVM_ENABLE_RUNTIMES=compiler-rt', + 'CMAKE_SYSTEM_NAME=Fuchsia', + 'CMAKE_SYSROOT=%s' % toolchain_dir, + # TODO(thakis|scottmg): Use PER_TARGET_RUNTIME_DIR for all platforms. + # https://crbug.com/882485. + 'LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON', + ] + if build_sanitizers: + fuchsia_args.append('SANITIZER_NO_UNDEFINED_SYMBOLS=OFF') + + runtimes_triples_args.append((target_triple, fuchsia_args)) + + # Convert FOO=BAR CMake flags per triple into + # -DBUILTINS_$triple_FOO=BAR/-DRUNTIMES_$triple_FOO=BAR and build up + # -DLLVM_BUILTIN_TARGETS/-DLLVM_RUNTIME_TARGETS. + all_triples = '' + for (triple, a) in runtimes_triples_args: + all_triples += ';' + triple + for arg in a: + assert not arg.startswith('-') + # 'default' is specially handled to pass through relevant CMake flags. + if triple == 'default': + cmake_args.append('-D' + arg) + else: + cmake_args.append('-DBUILTINS_' + triple + '_' + arg) + cmake_args.append('-DRUNTIMES_' + triple + '_' + arg) + cmake_args.append('-DLLVM_BUILTIN_TARGETS=' + all_triples) + cmake_args.append('-DLLVM_RUNTIME_TARGETS=' + all_triples) + + if os.path.exists(LLVM_BUILD_DIR): + RmTree(LLVM_BUILD_DIR) + EnsureDirExists(LLVM_BUILD_DIR) + os.chdir(LLVM_BUILD_DIR) + RunCommand(['cmake'] + cmake_args + [os.path.join(LLVM_DIR, 'llvm')], + msvc_arch='x64', + env=deployment_env) + CopyLibstdcpp(args, LLVM_BUILD_DIR) + RunCommand(['ninja'], msvc_arch='x64') + + if chrome_tools: + # If any Chromium tools were built, install those now. + RunCommand(['ninja', 'cr-install'], msvc_arch='x64') + + if not args.build_mac_arm: + VerifyVersionOfBuiltClangMatchesVERSION() + VerifyZlibSupport() # Run tests. if (not args.build_mac_arm and @@ -1319,11 +1172,16 @@ def main(): RunCommand(['ninja', '-C', LLVM_BUILD_DIR, 'cr-check-all'], msvc_arch='x64') if not args.build_mac_arm and args.run_tests: - test_targets = [ 'check-all' ] - if sys.platform == 'darwin': - # TODO(thakis): Run check-all on Darwin too, https://crbug.com/959361 - test_targets = [ 'check-llvm', 'check-clang', 'check-lld' ] - RunCommand(['ninja', '-C', LLVM_BUILD_DIR] + test_targets, msvc_arch='x64') + env = None + if sys.platform.startswith('linux'): + env = os.environ.copy() + # See SANITIZER_OVERRIDE_INTERCEPTORS above: We disable crypt_r() + # interception, so its tests can't pass. + env['LIT_FILTER_OUT'] = ('^SanitizerCommon-(a|l|m|ub|t)san-x86_64-Linux' + + ' :: Linux/crypt_r.cpp$') + RunCommand(['ninja', '-C', LLVM_BUILD_DIR, 'check-all'], + env=env, + msvc_arch='x64') WriteStampFile(PACKAGE_VERSION, STAMP_FILE) WriteStampFile(PACKAGE_VERSION, FORCE_HEAD_REVISION_FILE) diff --git a/chromium/tools/clang/scripts/goma_ld.py b/chromium/tools/clang/scripts/goma_ld.py index 21a7dd2286c..123da699881 100755 --- a/chromium/tools/clang/scripts/goma_ld.py +++ b/chromium/tools/clang/scripts/goma_ld.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /usr/bin/env python3 # Copyright (c) 2020 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -9,17 +9,12 @@ # E.g. original: clang++ -o foo foo.o # Becomes: goma-ld clang++ -o foo foo.o -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function -from __future__ import unicode_literals - -import goma_link - import os import re import sys +import goma_link + class GomaLinkUnix(goma_link.GomaLinkBase): # Target-platform-specific constants. diff --git a/chromium/tools/clang/scripts/goma_link.py b/chromium/tools/clang/scripts/goma_link.py index a101dc93bfd..5d7339fbf91 100755 --- a/chromium/tools/clang/scripts/goma_link.py +++ b/chromium/tools/clang/scripts/goma_link.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /usr/bin/env python3 # Copyright (c) 2020 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -9,11 +9,6 @@ # E.g. original: lld-link -out:foo foo.obj # Becomes: goma_link.py lld-link -out:foo foo.obj -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function -from __future__ import unicode_literals - import argparse import errno import io @@ -26,14 +21,6 @@ from collections import namedtuple from pipes import quote as shquote from tempfile import NamedTemporaryFile -# Python 2 has int and long, and we want to use long. Python 3 only has int, -# which is like long in Python 2. So we check if long is defined, and, if not, -# define it to be the same as int. -try: - long -except NameError: - long = int - # Type returned by analyze_args. AnalyzeArgsResult = namedtuple('AnalyzeArgsResult', [ 'output', 'linker', 'compiler', 'splitfile', 'index_inputs', 'index_params', @@ -124,13 +111,13 @@ def names_in_archive(path): f.seek(32, io.SEEK_CUR) m = re.match(b'/([0-9]+)', file_id) if long_names and m: - name_pos = long(m.group(1)) + name_pos = int(m.group(1)) name_end = long_names.find(b'/\n', name_pos) name = long_names[name_pos:name_end] else: name = file_id try: - size = long(f.read(10)) + size = int(f.read(10)) except: sys.stderr.write('While parsing %r, pos %r\n' % (path, f.tell())) raise diff --git a/chromium/tools/clang/scripts/package.py b/chromium/tools/clang/scripts/package.py index 32a79a5e3e5..bd8782125c3 100755 --- a/chromium/tools/clang/scripts/package.py +++ b/chromium/tools/clang/scripts/package.py @@ -4,13 +4,12 @@ # found in the LICENSE file. """This script will check out llvm and clang, and then package the results up -to a tgz file.""" - -from __future__ import print_function +to a number of tarballs.""" import argparse import fnmatch import itertools +import lzma import multiprocessing.dummy import os import platform @@ -101,16 +100,24 @@ def PackageInArchive(directory_path, archive_path): if not os.path.islink(file_path): subprocess.call(['strip', file_path]) - with tarfile.open(archive_path, 'w:gz') as tar: - for f in os.listdir(directory_path): - tar.add(os.path.join(directory_path, f), - arcname=f, filter=PrintTarProgress) + with tarfile.open(archive_path + '.tar.xz', + 'w:xz', + preset=9 | lzma.PRESET_EXTREME) as tar_xz: + with tarfile.open(archive_path + '.tgz', 'w:gz') as tar_gz: + for f in sorted(os.listdir(directory_path)): + tar_xz.add(os.path.join(directory_path, f), + arcname=f, + filter=PrintTarProgress) + # TODO(crbug.com/1261812) Stop making gzip'ed archives once the + # goma/reclient push processes are updated to consume the .xz files + # instead. + tar_gz.add(os.path.join(directory_path, f), arcname=f) def MaybeUpload(do_upload, filename, gcs_platform, extra_gsutil_args=[]): gsutil_args = ['cp'] + extra_gsutil_args + [ - '-a', 'public-read', filename, - 'gs://chromium-browser-clang-staging/%s/%s' % (gcs_platform, filename) + '-n', '-a', 'public-read', filename, + 'gs://chromium-browser-clang-staging/%s/' % (gcs_platform) ] if do_upload: print('Uploading %s to Google Cloud Storage...' % filename) @@ -256,20 +263,23 @@ def main(): ]) else: want.extend([ - 'bin/clang', + 'bin/clang', + + # Add LLD. + 'bin/lld', - # Add LLD. - 'bin/lld', + # Add llvm-ar for LTO. + 'bin/llvm-ar', - # Add llvm-ar for LTO. - 'bin/llvm-ar', + # llvm-ml for Windows cross builds. + 'bin/llvm-ml', - # Include libclang_rt.builtins.a for Fuchsia targets. - 'lib/clang/$V/lib/aarch64-unknown-fuchsia/libclang_rt.builtins.a', - 'lib/clang/$V/lib/x86_64-unknown-fuchsia/libclang_rt.builtins.a', + # Include libclang_rt.builtins.a for Fuchsia targets. + 'lib/clang/$V/lib/aarch64-unknown-fuchsia/libclang_rt.builtins.a', + 'lib/clang/$V/lib/x86_64-unknown-fuchsia/libclang_rt.builtins.a', - # Add llvm-readobj (symlinked from llvm-readelf) for extracting SONAMEs. - 'bin/llvm-readobj', + # Add llvm-readobj (symlinked from llvm-readelf) for extracting SONAMEs. + 'bin/llvm-readobj', ]) if not args.build_mac_arm: # TODO(thakis): Figure out why this doesn't build in --build-mac-arm @@ -343,9 +353,15 @@ def main(): 'lib/clang/$V/lib/linux/libclang_rt.builtins-x86_64-android.a', # Builtins for Lacros (and potentially Linux, but not used there atm). + 'lib/clang/$V/lib/aarch64-unknown-linux-gnu/libclang_rt.builtins.a', + 'lib/clang/$V/lib/armv7-unknown-linux-gnueabihf/libclang_rt.builtins.a', 'lib/clang/$V/lib/x86_64-unknown-linux-gnu/libclang_rt.builtins.a', # crtstart/crtend for Linux and Lacros. + 'lib/clang/$V/lib/aarch64-unknown-linux-gnu/clang_rt.crtbegin.o', + 'lib/clang/$V/lib/aarch64-unknown-linux-gnu/clang_rt.crtend.o', + 'lib/clang/$V/lib/armv7-unknown-linux-gnueabihf/clang_rt.crtbegin.o', + 'lib/clang/$V/lib/armv7-unknown-linux-gnueabihf/clang_rt.crtend.o', 'lib/clang/$V/lib/x86_64-unknown-linux-gnu/clang_rt.crtbegin.o', 'lib/clang/$V/lib/x86_64-unknown-linux-gnu/clang_rt.crtend.o', @@ -361,9 +377,11 @@ def main(): 'lib/clang/$V/lib/x86_64-unknown-linux-gnu/libclang_rt.msan_cxx.a.syms', # Profile runtime (used by profiler and code coverage). + 'lib/clang/$V/lib/aarch64-unknown-linux-gnu/libclang_rt.profile.a', + 'lib/clang/$V/lib/armv7-unknown-linux-gnueabihf/libclang_rt.profile.a', 'lib/clang/$V/lib/i386-unknown-linux-gnu/libclang_rt.profile.a', - 'lib/clang/$V/lib/linux/libclang_rt.profile-i686-android.a', 'lib/clang/$V/lib/x86_64-unknown-linux-gnu/libclang_rt.profile.a', + 'lib/clang/$V/lib/linux/libclang_rt.profile-i686-android.a', 'lib/clang/$V/lib/linux/libclang_rt.profile-aarch64-android.a', 'lib/clang/$V/lib/linux/libclang_rt.profile-arm-android.a', @@ -516,19 +534,16 @@ def main(): # Make `--target=*-cros-linux-gnu` work with # LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON. - os.symlink( - 'x86_64-unknown-linux-gnu', - os.path.join(pdir, 'lib', 'clang', RELEASE_VERSION, 'lib', - 'x86_64-cros-linux-gnu')) - - # Copy libc++ headers. - if sys.platform == 'darwin': - shutil.copytree(os.path.join(LLVM_BOOTSTRAP_INSTALL_DIR, 'include', 'c++'), - os.path.join(pdir, 'include', 'c++')) + for arch, abi in [('armv7', 'gnueabihf'), ('aarch64', 'gnu'), + ('x86_64', 'gnu')]: + old = '%s-unknown-linux-%s' % (arch, abi) + new = old.replace('unknown', 'cros').replace('armv7', 'armv7a') + os.symlink( + old, os.path.join(pdir, 'lib', 'clang', RELEASE_VERSION, 'lib', new)) # Create main archive. - PackageInArchive(pdir, pdir + '.tgz') - MaybeUpload(args.upload, pdir + '.tgz', gcs_platform) + PackageInArchive(pdir, pdir) + MaybeUpload(args.upload, pdir + '.t*z', gcs_platform) # Upload build log next to it. os.rename('buildlog.txt', pdir + '-buildlog.txt') @@ -545,8 +560,8 @@ def main(): for filename in ['llvm-cov', 'llvm-profdata']: shutil.copy(os.path.join(LLVM_RELEASE_DIR, 'bin', filename + exe_ext), os.path.join(code_coverage_dir, 'bin')) - PackageInArchive(code_coverage_dir, code_coverage_dir + '.tgz') - MaybeUpload(args.upload, code_coverage_dir + '.tgz', gcs_platform) + PackageInArchive(code_coverage_dir, code_coverage_dir) + MaybeUpload(args.upload, code_coverage_dir + '.t*z', gcs_platform) # Zip up llvm-objdump and related tools for sanitizer coverage and Supersize. objdumpdir = 'llvmobjdump-' + stamp @@ -565,8 +580,8 @@ def main(): f.write('\n') if sys.platform != 'win32': os.symlink('llvm-objdump', os.path.join(objdumpdir, 'bin', 'llvm-otool')) - PackageInArchive(objdumpdir, objdumpdir + '.tgz') - MaybeUpload(args.upload, objdumpdir + '.tgz', gcs_platform) + PackageInArchive(objdumpdir, objdumpdir) + MaybeUpload(args.upload, objdumpdir + '.t*z', gcs_platform) # Zip up clang-tidy for users who opt into it, and Tricium. clang_tidy_dir = 'clang-tidy-' + stamp @@ -574,8 +589,8 @@ def main(): os.makedirs(os.path.join(clang_tidy_dir, 'bin')) shutil.copy(os.path.join(LLVM_RELEASE_DIR, 'bin', 'clang-tidy' + exe_ext), os.path.join(clang_tidy_dir, 'bin')) - PackageInArchive(clang_tidy_dir, clang_tidy_dir + '.tgz') - MaybeUpload(args.upload, clang_tidy_dir + '.tgz', gcs_platform) + PackageInArchive(clang_tidy_dir, clang_tidy_dir) + MaybeUpload(args.upload, clang_tidy_dir + '.t*z', gcs_platform) # Zip up clang-format so we can update it (separately from the clang roll). clang_format_dir = 'clang-format-' + stamp @@ -583,8 +598,8 @@ def main(): os.makedirs(os.path.join(clang_format_dir, 'bin')) shutil.copy(os.path.join(LLVM_RELEASE_DIR, 'bin', 'clang-format' + exe_ext), os.path.join(clang_format_dir, 'bin')) - PackageInArchive(clang_format_dir, clang_format_dir + '.tgz') - MaybeUpload(args.upload, clang_format_dir + '.tgz', gcs_platform) + PackageInArchive(clang_format_dir, clang_format_dir) + MaybeUpload(args.upload, clang_format_dir + '.t*z', gcs_platform) # Zip up clang-libs for users who opt into it. We want Clang and LLVM headers # and libs, as well as a couple binaries. The LLVM parts are needed by the @@ -635,8 +650,8 @@ def main(): if fnmatch.fnmatch(lib_path, lib_want): shutil.copy(os.path.join(LLVM_BOOTSTRAP_DIR, 'lib', lib_path), os.path.join(clang_libs_dir, 'lib')) - PackageInArchive(clang_libs_dir, clang_libs_dir + '.tgz') - MaybeUpload(args.upload, clang_libs_dir + '.tgz', gcs_platform) + PackageInArchive(clang_libs_dir, clang_libs_dir) + MaybeUpload(args.upload, clang_libs_dir + '.t*z', gcs_platform) if sys.platform == 'darwin': # dsymutil isn't part of the main zip, and it gets periodically @@ -647,8 +662,8 @@ def main(): os.makedirs(os.path.join(dsymdir, 'bin')) shutil.copy(os.path.join(LLVM_RELEASE_DIR, 'bin', 'dsymutil'), os.path.join(dsymdir, 'bin')) - PackageInArchive(dsymdir, dsymdir + '.tgz') - MaybeUpload(args.upload, dsymdir + '.tgz', gcs_platform) + PackageInArchive(dsymdir, dsymdir) + MaybeUpload(args.upload, dsymdir + '.t*z', gcs_platform) # Zip up the translation_unit tool. translation_unit_dir = 'translation_unit-' + stamp @@ -657,8 +672,8 @@ def main(): shutil.copy(os.path.join(LLVM_RELEASE_DIR, 'bin', 'translation_unit' + exe_ext), os.path.join(translation_unit_dir, 'bin')) - PackageInArchive(translation_unit_dir, translation_unit_dir + '.tgz') - MaybeUpload(args.upload, translation_unit_dir + '.tgz', gcs_platform) + PackageInArchive(translation_unit_dir, translation_unit_dir) + MaybeUpload(args.upload, translation_unit_dir + '.t*z', gcs_platform) # Zip up the libclang binaries. libclang_dir = 'libclang-' + stamp @@ -672,8 +687,8 @@ def main(): shutil.copy(os.path.join(LLVM_DIR, 'clang', 'bindings', 'python', 'clang', filename), os.path.join(libclang_dir, 'bindings', 'python', 'clang')) - PackageInArchive(libclang_dir, libclang_dir + '.tgz') - MaybeUpload(args.upload, libclang_dir + '.tgz', gcs_platform) + PackageInArchive(libclang_dir, libclang_dir) + MaybeUpload(args.upload, libclang_dir + '.t*z', gcs_platform) if sys.platform == 'win32' and args.upload: binaries = [f for f in want if f.endswith('.exe') or f.endswith('.dll')] diff --git a/chromium/tools/clang/scripts/process_crashreports.py b/chromium/tools/clang/scripts/process_crashreports.py index d6d7cd9104f..020530460a1 100755 --- a/chromium/tools/clang/scripts/process_crashreports.py +++ b/chromium/tools/clang/scripts/process_crashreports.py @@ -66,6 +66,10 @@ def ProcessCrashreport(base, source): subprocess.check_call([sys.executable, GSUTIL, '-q', 'cp', tmp_name, dest]) print('done') print(' %s' % dest) + except subprocess.CalledProcessError as e: + print('upload failed; if it was due to missing permissions, try running') + print('download_from_google_storage --config') + print('and then try again') finally: if tmp_name: os.remove(tmp_name) diff --git a/chromium/tools/clang/scripts/sanitizers/sanitizer_intercept_overriders.h b/chromium/tools/clang/scripts/sanitizers/sanitizer_intercept_overriders.h new file mode 100644 index 00000000000..bfd0f6b5b98 --- /dev/null +++ b/chromium/tools/clang/scripts/sanitizers/sanitizer_intercept_overriders.h @@ -0,0 +1,5 @@ +// Workaround for https://crbug.com/1302636#c49, #c55 +#ifdef SANITIZER_INTERCEPT_CRYPT_R +#undef SANITIZER_INTERCEPT_CRYPT_R +#define SANITIZER_INTERCEPT_CRYPT_R 0 +#endif \ No newline at end of file diff --git a/chromium/tools/clang/scripts/update.py b/chromium/tools/clang/scripts/update.py index a6af0980390..c8703580d32 100755 --- a/chromium/tools/clang/scripts/update.py +++ b/chromium/tools/clang/scripts/update.py @@ -35,11 +35,11 @@ import zlib # https://chromium.googlesource.com/chromium/src/+/main/docs/updating_clang.md # Reverting problematic clang rolls is safe, though. # This is the output of `git describe` and is usable as a commit-ish. -CLANG_REVISION = 'llvmorg-15-init-11722-g3f3a235a' -CLANG_SUB_REVISION = 2 +CLANG_REVISION = 'llvmorg-16-init-907-g8b740747' +CLANG_SUB_REVISION = 1 PACKAGE_VERSION = '%s-%s' % (CLANG_REVISION, CLANG_SUB_REVISION) -RELEASE_VERSION = '15.0.0' +RELEASE_VERSION = '16.0.0' CDS_URL = os.environ.get('CDS_CLANG_BUCKET_OVERRIDE', 'https://commondatastorage.googleapis.com/chromium-browser-clang') @@ -140,6 +140,8 @@ def DownloadUrl(url, output_file): e, urllib.error.HTTPError) and e.code == 404: raise e num_retries -= 1 + output_file.seek(0) + output_file.truncate() print('Retrying in %d s ...' % retry_wait_s) sys.stdout.flush() time.sleep(retry_wait_s) @@ -181,8 +183,11 @@ def GetPlatformUrlPrefix(host_os): return CDS_URL + '/' + _HOST_OS_URL_MAP[host_os] + '/' -def DownloadAndUnpackPackage(package_file, output_dir, host_os): - cds_file = "%s-%s.tgz" % (package_file, PACKAGE_VERSION) +def DownloadAndUnpackPackage(package_file, + output_dir, + host_os, + version=PACKAGE_VERSION): + cds_file = "%s-%s.tar.xz" % (package_file, version) cds_full_url = GetPlatformUrlPrefix(host_os) + cds_file try: DownloadAndUnpack(cds_full_url, output_dir) @@ -194,7 +199,7 @@ def DownloadAndUnpackPackage(package_file, output_dir, host_os): def DownloadAndUnpackClangMacRuntime(output_dir): - cds_file = "clang-%s.tgz" % PACKAGE_VERSION + cds_file = "clang-%s.tar.xz" % PACKAGE_VERSION # We run this only for the runtime libraries, and 'mac' and 'mac-arm64' both # have the same (universal) runtime libraries. It doesn't matter which one # we download here. @@ -213,7 +218,7 @@ def DownloadAndUnpackClangMacRuntime(output_dir): # TODO(hans): Create a clang-win-runtime package instead. def DownloadAndUnpackClangWinRuntime(output_dir): - cds_file = "clang-%s.tgz" % PACKAGE_VERSION + cds_file = "clang-%s.tar.xz" % PACKAGE_VERSION cds_full_url = GetPlatformUrlPrefix('win') + cds_file path_prefixes = [ 'lib/clang/' + RELEASE_VERSION + '/lib/windows', 'bin/llvm-symbolizer.exe' diff --git a/chromium/tools/clang/scripts/upload_revision.py b/chromium/tools/clang/scripts/upload_revision.py index 7386e5ac5ec..911ee36d0ba 100755 --- a/chromium/tools/clang/scripts/upload_revision.py +++ b/chromium/tools/clang/scripts/upload_revision.py @@ -39,6 +39,7 @@ Cq-Include-Trybots: chromium/try:linux_chromium_cfi_rel_ng Cq-Include-Trybots: chromium/try:linux_chromium_chromeos_msan_rel_ng Cq-Include-Trybots: chromium/try:linux_chromium_msan_rel_ng Cq-Include-Trybots: chromium/try:mac11-arm64-rel,mac_chromium_asan_rel_ng +Cq-Include-Trybots: chromium/try:ios-catalyst Cq-Include-Trybots: chromium/try:win-asan,win7-rel Cq-Include-Trybots: chromium/try:android-official,fuchsia-official Cq-Include-Trybots: chromium/try:mac-official,linux-official -- cgit v1.2.1