[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