[compiler-rt] [CompilerRT][ASan] Add new substitutions for tests while using lto to (PR #78523)

Usama Hameed via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 17 15:56:25 PST 2024


https://github.com/usama54321 created https://github.com/llvm/llvm-project/pull/78523

explicitly pass libLTO path. This fixes a failure in swift-ci where libLTO was being picked from the system instead which was an older version and caused issues.

rdar://117474861

>From 2590446306d4150aa562b3369694c33118779654 Mon Sep 17 00:00:00 2001
From: usama hameed <u_hameed at apple.com>
Date: Wed, 17 Jan 2024 15:48:00 -0800
Subject: [PATCH] [CompilerRT][ASan] Add new substitutions for tests while
 using lto to explicitly pass libLTO path. This fixes a failure in swift-ci
 where libLTO was being picked from the system instead which was an older
 version and caused issues.

rdar://117474861
---
 compiler-rt/test/asan/TestCases/Darwin/odr-lto.cpp |  2 +-
 compiler-rt/test/asan/lit.cfg.py                   | 10 ++++++++--
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/compiler-rt/test/asan/TestCases/Darwin/odr-lto.cpp b/compiler-rt/test/asan/TestCases/Darwin/odr-lto.cpp
index 55953d33940a8d..90c16776a63b13 100644
--- a/compiler-rt/test/asan/TestCases/Darwin/odr-lto.cpp
+++ b/compiler-rt/test/asan/TestCases/Darwin/odr-lto.cpp
@@ -5,7 +5,7 @@
 
 // RUN: %clangxx_asan -DPART=0 -c %s -o %t-1.o -flto -mllvm -asan-use-private-alias
 // RUN: %clangxx_asan -DPART=1 -c %s -o %t-2.o -flto -mllvm -asan-use-private-alias
-// RUN: %clangxx_asan %t-1.o %t-2.o -o %t -flto -mlinker-version=133
+// RUN: %clangxx_asan_lto %t-1.o %t-2.o -o %t -flto -mlinker-version=133
 // RUN: %run %t 2>&1 | FileCheck %s
 
 #include <stdio.h>
diff --git a/compiler-rt/test/asan/lit.cfg.py b/compiler-rt/test/asan/lit.cfg.py
index d9303466021250..4f264d6c434617 100644
--- a/compiler-rt/test/asan/lit.cfg.py
+++ b/compiler-rt/test/asan/lit.cfg.py
@@ -101,14 +101,20 @@ def get_required_attr(config, attr_name):
     config.available_features.add(win_runtime_feature)
 
 
-def build_invocation(compile_flags):
-    return " " + " ".join([config.clang] + compile_flags) + " "
+def build_invocation(compile_flags, with_lto = False):
+    lto_flags = []
+    if with_lto and config.lto_supported:
+       lto_flags += config.lto_flags
+
+    return " " + " ".join([config.clang] + lto_flags + compile_flags) + " "
 
 
 config.substitutions.append(("%clang ", build_invocation(target_cflags)))
 config.substitutions.append(("%clangxx ", build_invocation(target_cxxflags)))
 config.substitutions.append(("%clang_asan ", build_invocation(clang_asan_cflags)))
 config.substitutions.append(("%clangxx_asan ", build_invocation(clang_asan_cxxflags)))
+config.substitutions.append(("%clang_asan_lto ", build_invocation(clang_asan_cflags, True)))
+config.substitutions.append(("%clangxx_asan_lto ", build_invocation(clang_asan_cxxflags, True)))
 if config.asan_dynamic:
     if config.host_os in ["Linux", "FreeBSD", "NetBSD", "SunOS"]:
         shared_libasan_path = os.path.join(



More information about the llvm-commits mailing list