[clang] 8b1d624 - [clang] Make serenity.cpp more independent of the host (#193981)
via cfe-commits
cfe-commits at lists.llvm.org
Sat Apr 25 11:26:23 PDT 2026
Author: Lucas Chollet
Date: 2026-04-25T14:26:18-04:00
New Revision: 8b1d6244de714df1288c611fa245fdc168f5bd8a
URL: https://github.com/llvm/llvm-project/commit/8b1d6244de714df1288c611fa245fdc168f5bd8a
DIFF: https://github.com/llvm/llvm-project/commit/8b1d6244de714df1288c611fa245fdc168f5bd8a.diff
LOG: [clang] Make serenity.cpp more independent of the host (#193981)
Tests matching crt files previously relied on the host system not using
the same file paths as Serenity. This breaks on AIX, as both systems use
`/usr/lib/crt0.o`.
Redirect most tests to an empty sysroot so they match only on the
filename and remain independent of the host system. Also add a test that
verifies crt files can be found in a normal sysroot.
Added:
clang/test/Driver/Inputs/empty_tree/.keep
clang/test/Driver/Inputs/serenity_tree/usr/lib/crtbeginS.o
clang/test/Driver/Inputs/serenity_tree/usr/lib/crtendS.o
Modified:
clang/test/Driver/serenity.cpp
Removed:
################################################################################
diff --git a/clang/test/Driver/Inputs/empty_tree/.keep b/clang/test/Driver/Inputs/empty_tree/.keep
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/serenity_tree/usr/lib/crtbeginS.o b/clang/test/Driver/Inputs/serenity_tree/usr/lib/crtbeginS.o
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/serenity_tree/usr/lib/crtendS.o b/clang/test/Driver/Inputs/serenity_tree/usr/lib/crtendS.o
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/serenity.cpp b/clang/test/Driver/serenity.cpp
index 16291b250b704..db734e3cbaf71 100644
--- a/clang/test/Driver/serenity.cpp
+++ b/clang/test/Driver/serenity.cpp
@@ -60,21 +60,31 @@
// CHECK-PIE2-SAME: "-pic-is-pie"
/// Check default linker args for each supported triple.
-// RUN: %clang -### %s --target=x86_64-unknown-serenity -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir 2>&1 | FileCheck %s --check-prefix=SERENITY_X86_64,DEFAULT_LINKER
+// RUN: %clang -### %s --target=x86_64-unknown-serenity \
+// RUN: --sysroot=%S/Inputs/serenity_tree \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
+// RUN: 2>&1 | FileCheck %s --check-prefix=SERENITY_X86_64,DEFAULT_LINKER
// SERENITY_X86_64: "-cc1" "-triple" "[[TRIPLE:x86_64-unknown-serenity]]"
-// RUN: %clang -### %s --target=aarch64-unknown-serenity -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir 2>&1 | FileCheck %s --check-prefix=SERENITY_AARCH64,DEFAULT_LINKER
+// RUN: %clang -### %s --target=aarch64-unknown-serenity \
+// RUN: --sysroot=%S/Inputs/serenity_tree \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
+// RUN: 2>&1 | FileCheck %s --check-prefix=SERENITY_AARCH64,DEFAULT_LINKER
// SERENITY_AARCH64: "-cc1" "-triple" "[[TRIPLE:aarch64-unknown-serenity]]"
-// RUN: %clang -### %s --target=riscv64-unknown-serenity -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir 2>&1 | FileCheck %s --check-prefix=SERENITY_RISCV64,DEFAULT_LINKER
+// RUN: %clang -### %s --target=riscv64-unknown-serenity \
+// RUN: --sysroot=%S/Inputs/serenity_tree \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
+// RUN: 2>&1 | FileCheck %s --check-prefix=SERENITY_RISCV64,DEFAULT_LINKER
// SERENITY_RISCV64: "-cc1" "-triple" "[[TRIPLE:riscv64-unknown-serenity]]"
+// DEFAULT_LINKER: "-isysroot" "[[SYSROOT:[^"]+]]"
// DEFAULT_LINKER: ld.lld"
// DEFAULT_LINKER-SAME: "-pie"
// DEFAULT_LINKER-SAME: "-dynamic-linker" "/usr/lib/Loader.so" "--eh-frame-hdr"
// DEFAULT_LINKER-SAME: "-o" "a.out"
// DEFAULT_LINKER-SAME: "-z" "pack-relative-relocs"
-// DEFAULT_LINKER-SAME: "crt0.o"
+// DEFAULT_LINKER-SAME: "[[SYSROOT]]/usr/lib/crt0.o"
// DEFAULT_LINKER-SAME: "[[RESOURCE:[^"]+]]/lib/[[TRIPLE]]/clang_rt.crtbegin.o"
// DEFAULT_LINKER-SAME: "[[RESOURCE]]/lib/[[TRIPLE]]/libclang_rt.builtins.a"
// DEFAULT_LINKER-SAME: "-lc" "[[RESOURCE]]/lib/[[TRIPLE]]/clang_rt.crtend.o"
@@ -85,8 +95,18 @@
// LINKER_SYSROOT: ld.lld"
// LINKER_SYSROOT-SAME: "--sysroot=TestSysroot"
+/// Check that we find crt*.o files in the sysroot, use -static-pie to
+/// be able to check for crtbeginS.o and crtendS.o too.
+// RUN: %clang -### %s --target=x86_64-unknown-serenity \
+// RUN: --sysroot=%S/Inputs/serenity_tree \
+// RUN: -static-pie 2>&1 | FileCheck %s --check-prefix=CRT_SYSROOT
+// CRT_SYSROOT: "-isysroot" "[[SYSROOT:[^"]+]]"
+// CRT_SYSROOT: "[[SYSROOT]]/usr/lib/crt0.o"
+// CRT_SYSROOT-SAME: "[[SYSROOT]]/usr/lib/crtbeginS.o"
+// CRT_SYSROOT-SAME: "[[SYSROOT]]/usr/lib/crtendS.o"
+
/// -static-pie suppresses -dynamic-linker.
-// RUN: %clang -### %s --target=x86_64-unknown-serenity --sysroot= -resource-dir= \
+// RUN: %clang -### %s --target=x86_64-unknown-serenity --sysroot=%S/Inputs/empty_tree \
// RUN: -static-pie 2>&1 | FileCheck %s --check-prefix=STATIC_PIE
// STATIC_PIE: "-static" "-pie"
// STATIC_PIE-NOT: "-dynamic-linker"
@@ -97,7 +117,7 @@
// STATIC_PIE-SAME: "-lc" "crtendS.o"
/// -shared forces use of shared crt files.
-// RUN: %clang -### %s --target=x86_64-unknown-serenity --sysroot= -resource-dir= \
+// RUN: %clang -### %s --target=x86_64-unknown-serenity --sysroot=%S/Inputs/empty_tree \
// RUN: -shared 2>&1 | FileCheck %s --check-prefix=SHARED
// SHARED: "-shared"
// SHARED-SAME: "--eh-frame-hdr"
@@ -107,7 +127,7 @@
// SHARED-SAME: "-lc" "crtendS.o"
/// -static forces use of static crt files.
-// RUN: %clang -### %s --target=x86_64-unknown-serenity --sysroot= -resource-dir= \
+// RUN: %clang -### %s --target=x86_64-unknown-serenity --sysroot=%S/Inputs/empty_tree \
// RUN: -static 2>&1 | FileCheck %s --check-prefix=STATIC
// STATIC: "-static"
// STATIC-SAME: "--eh-frame-hdr"
@@ -116,11 +136,11 @@
// STATIC-SAME: "-lc" "crtendS.o"
/// -rdynamic passes -export-dynamic.
-// RUN: %clang -### %s --target=x86_64-unknown-serenity --sysroot= -resource-dir= \
+// RUN: %clang -### %s --target=x86_64-unknown-serenity --sysroot=%S/Inputs/empty_tree \
// RUN: -rdynamic 2>&1 | FileCheck %s --check-prefix=RDYNAMIC,RDYNAMIC_SHARED
// RDYNAMIC: "-export-dynamic" "-pie"
-// RUN: %clang -### %s --target=x86_64-unknown-serenity --sysroot= -resource-dir= \
+// RUN: %clang -### %s --target=x86_64-unknown-serenity --sysroot=%S/Inputs/empty_tree \
// RUN: -no-pie -rdynamic 2>&1 | FileCheck %s --check-prefix=RDYNAMIC_NOPIE,RDYNAMIC_SHARED
// RDYNAMIC_NOPIE: "-export-dynamic"
// RDYNAMIC_NOPIE-NOT: "-pie"
@@ -176,12 +196,12 @@
// RUN: 2>&1 | FileCheck %s --check-prefix=NOLIBC
// NOLIBC: "-isysroot" "[[SYSROOT:[^"]+]]"
// NOLIBC: "-internal-isystem"
-// NOLIBC: "[[SYSROOT]]/usr/lib/crt0.o" "crtbeginS.o"
+// NOLIBC: "[[SYSROOT]]/usr/lib/crt0.o" "[[SYSROOT]]/usr/lib/crtbeginS.o"
// NOLIBC: "-L
// NOLIBC-SAME: {{^}}[[SYSROOT]]/usr/lib"
// NOLIBC-NOT: "-lc"
// NOLIBC: "[[RESOURCE:[^"]+]]/lib/x86_64-unknown-serenity/libclang_rt.builtins.a"
-// NOLIBC: "crtendS.o"
+// NOLIBC: "[[SYSROOT]]/usr/lib/crtendS.o"
/// -fsanitize=undefined redirects to Serenity-custom UBSAN runtime.
// RUN: %clang -### %s --target=x86_64-unknown-serenity --sysroot=%S/Inputs/serenity_tree \
@@ -197,7 +217,7 @@
// KASAN-SAME: "-fsanitize-recover=kernel-address"
/// Check C++ stdlib behavior.
-// RUN: %clangxx -### %s --target=x86_64-unknown-serenity --sysroot="" -resource-dir= \
+// RUN: %clangxx -### %s --target=x86_64-unknown-serenity --sysroot=%S/Inputs/empty_tree \
// RUN: 2>&1 | FileCheck %s --check-prefix=DEFAULT_LIBCXX
// DEFAULT_LIBCXX: "-dynamic-linker" "/usr/lib/Loader.so" "--eh-frame-hdr"
// DEFAULT_LIBCXX: "-z" "pack-relative-relocs"
@@ -208,7 +228,7 @@
// DEFAULT_LIBCXX: "--pop-state"
// DEFAULT_LIBCXX: "-lc" "crtendS.o"
-// RUN: %clangxx -### %s --target=x86_64-unknown-serenity --sysroot="" -resource-dir= \
+// RUN: %clangxx -### %s --target=x86_64-unknown-serenity --sysroot=%S/Inputs/empty_tree \
// RUN: -static 2>&1 | FileCheck %s --check-prefix=STATIC_LIBCXX
// STATIC_LIBCXX: "-z" "pack-relative-relocs"
// STATIC_LIBCXX: "crt0.o" "crtbeginS.o"
@@ -218,7 +238,7 @@
// STATIC_LIBCXX: "--pop-state"
// STATIC_LIBCXX: "-lc" "crtendS.o"
-// RUN: %clangxx -### %s --target=x86_64-unknown-serenity --sysroot="" -resource-dir= \
+// RUN: %clangxx -### %s --target=x86_64-unknown-serenity --sysroot=%S/Inputs/empty_tree \
// RUN: -static-libstdc++ 2>&1 | FileCheck %s --check-prefix=STATIC_LIBSTDCXX
// STATIC_LIBSTDCXX: "-z" "pack-relative-relocs"
// STATIC_LIBSTDCXX: "crt0.o" "crtbeginS.o"
@@ -230,7 +250,7 @@
// STATIC_LIBSTDCXX: "--pop-state"
// STATIC_LIBSTDCXX: "-lc" "crtendS.o"
-// RUN: %clangxx -### %s --target=x86_64-unknown-serenity --sysroot="" -resource-dir= \
+// RUN: %clangxx -### %s --target=x86_64-unknown-serenity --sysroot=%S/Inputs/empty_tree \
// RUN: -nostdlib++ 2>&1 | FileCheck %s --check-prefix=NO_LIBCXX
// NO_LIBCXX: "-z" "pack-relative-relocs"
// NO_LIBCXX: "crt0.o" "crtbeginS.o"
More information about the cfe-commits
mailing list