Skip to content

Commit c7cf1e1

Browse files
authored
Merge branch 'llvm:main' into patch-1
2 parents f48fab6 + 1d4b5c1 commit c7cf1e1

File tree

15 files changed

+315
-213
lines changed

15 files changed

+315
-213
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# This workflow is for pre-commit testing of the LLVM-libc project.
2+
name: LLVM-libc Pre-commit Fullbuild Tests
3+
4+
on:
5+
pull_request:
6+
branches: [ "main" ]
7+
paths:
8+
- 'libc/**'
9+
- '.github/workflows/libc-fullbuild-tests.yml'
10+
11+
jobs:
12+
build:
13+
runs-on: ubuntu-24.04
14+
strategy:
15+
fail-fast: false
16+
matrix:
17+
include:
18+
- c_compiler: clang
19+
cpp_compiler: clang++
20+
# TODO: add back gcc build when it is fixed
21+
# - c_compiler: gcc
22+
# cpp_compiler: g++
23+
steps:
24+
- uses: actions/checkout@v4
25+
26+
- name: Setup ccache
27+
uses: hendrikmuhs/[email protected]
28+
with:
29+
max-size: 1G
30+
key: libc_fullbuild_${{ matrix.c_compiler }}
31+
variant: sccache
32+
33+
- name: Prepare dependencies (Ubuntu)
34+
run: |
35+
sudo apt-get update
36+
sudo apt-get install -y libmpfr-dev libgmp-dev libmpc-dev ninja-build linux-headers-generic linux-libc-dev
37+
sudo ln -sf /usr/include/$(uname -p)-linux-gnu/asm /usr/include/asm
38+
39+
- name: Set reusable strings
40+
id: strings
41+
shell: bash
42+
run: |
43+
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
44+
echo "build-install-dir=${{ github.workspace }}/install" >> "$GITHUB_OUTPUT"
45+
46+
- name: Configure CMake
47+
run: >
48+
cmake -B ${{ steps.strings.outputs.build-output-dir }}
49+
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
50+
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
51+
-DCMAKE_BUILD_TYPE=MinSizeRel
52+
-DCMAKE_C_COMPILER_LAUNCHER=sccache
53+
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache
54+
-DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }}
55+
-DLLVM_ENABLE_RUNTIMES="libc;compiler-rt"
56+
-DLLVM_LIBC_FULL_BUILD=ON
57+
-DLLVM_LIBC_INCLUDE_SCUDO=ON
58+
-DCOMPILER_RT_BUILD_SCUDO_STANDALONE_WITH_LLVM_LIBC=ON
59+
-DCOMPILER_RT_BUILD_GWP_ASAN=OFF
60+
-DCOMPILER_RT_SCUDO_STANDALONE_BUILD_SHARED=OFF
61+
-G Ninja
62+
-S ${{ github.workspace }}/runtimes
63+
64+
- name: Build
65+
run: >
66+
cmake
67+
--build ${{ steps.strings.outputs.build-output-dir }}
68+
--parallel
69+
--target install
70+
71+
- name: Test
72+
run: >
73+
cmake
74+
--build ${{ steps.strings.outputs.build-output-dir }}
75+
--parallel
76+
--target check-libc
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# This workflow is for pre-commit testing of the LLVM-libc project.
2+
name: LLVM-libc Pre-commit Overlay Tests
3+
4+
on:
5+
pull_request:
6+
branches: [ "main" ]
7+
paths:
8+
- 'libc/**'
9+
- '.github/workflows/libc-overlay-tests.yml'
10+
11+
jobs:
12+
build:
13+
runs-on: ${{ matrix.os }}
14+
strategy:
15+
# Set fail-fast to false to ensure that feedback is delivered for all matrix combinations.
16+
fail-fast: false
17+
matrix:
18+
include:
19+
# TODO: add linux gcc when it is fixed
20+
- os: ubuntu-24.04
21+
compiler:
22+
c_compiler: clang
23+
cpp_compiler: clang++
24+
- os: windows-2022
25+
compiler:
26+
c_compiler: clang-cl
27+
cpp_compiler: clang-cl
28+
- os: macos-14
29+
compiler:
30+
c_compiler: clang
31+
cpp_compiler: clang++
32+
33+
steps:
34+
- uses: actions/checkout@v4
35+
36+
- name: Setup ccache
37+
uses: hendrikmuhs/ccache-action@v1
38+
with:
39+
max-size: 1G
40+
key: libc_overlay_build_${{ matrix.os }}_${{ matrix.compiler.c_compiler }}
41+
variant: sccache
42+
43+
- name: Prepare dependencies (Ubuntu)
44+
if: runner.os == 'Linux'
45+
run: |
46+
sudo apt-get update
47+
sudo apt-get install -y libmpfr-dev libgmp-dev libmpc-dev ninja-build
48+
49+
- name: Prepare dependencies (Windows)
50+
if: runner.os == 'Windows'
51+
run: |
52+
choco install ninja
53+
54+
- name: Prepare dependencies (macOS)
55+
if: runner.os == 'macOS'
56+
run: |
57+
brew install ninja
58+
59+
- name: Set reusable strings
60+
id: strings
61+
shell: bash
62+
run: |
63+
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
64+
65+
- name: Configure CMake
66+
run: >
67+
cmake -B ${{ steps.strings.outputs.build-output-dir }}
68+
-DCMAKE_CXX_COMPILER=${{ matrix.compiler.cpp_compiler }}
69+
-DCMAKE_C_COMPILER=${{ matrix.compiler.c_compiler }}
70+
-DCMAKE_BUILD_TYPE=MinSizeRel
71+
-DCMAKE_C_COMPILER_LAUNCHER=sccache
72+
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache
73+
-DCMAKE_POLICY_DEFAULT_CMP0141=NEW
74+
-DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT=Embedded
75+
-DLLVM_ENABLE_RUNTIMES=libc
76+
-G Ninja
77+
-S ${{ github.workspace }}/runtimes
78+
79+
- name: Build
80+
run: >
81+
cmake
82+
--build ${{ steps.strings.outputs.build-output-dir }}
83+
--parallel
84+
--config MinSizeRel
85+
--target libc
86+
87+
- name: Test
88+
run: >
89+
cmake
90+
--build ${{ steps.strings.outputs.build-output-dir }}
91+
--parallel
92+
--target check-libc

clang/lib/Driver/ToolChains/CommonArgs.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1410,7 +1410,7 @@ void tools::linkSanitizerRuntimeDeps(const ToolChain &TC,
14101410
// libresolv.a, even if exists, is an empty archive to satisfy POSIX -lresolv
14111411
// requirement.
14121412
if (TC.getTriple().isOSLinux() && !TC.getTriple().isAndroid() &&
1413-
!TC.getTriple().isMusl())
1413+
!TC.getTriple().isMusl() && TC.getSanitizerArgs(Args).needsMsanRt())
14141414
CmdArgs.push_back("-lresolv");
14151415
}
14161416

clang/test/Driver/sanitizer-ld.c

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
// CHECK-ASAN-LINUX: "-lpthread"
1616
// CHECK-ASAN-LINUX: "-lrt"
1717
// CHECK-ASAN-LINUX: "-ldl"
18-
// CHECK-ASAN-LINUX: "-lresolv"
18+
// CHECK-ASAN-LINUX-NOT: "-lresolv"
1919

2020
// RUN: %clang -fsanitize=address -fno-sanitize-link-runtime -### %s 2>&1 \
2121
// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \
@@ -143,7 +143,7 @@
143143
// CHECK-ASAN-LINUX-CXX: "-lpthread"
144144
// CHECK-ASAN-LINUX-CXX: "-lrt"
145145
// CHECK-ASAN-LINUX-CXX: "-ldl"
146-
// CHECK-ASAN-LINUX-CXX: "-lresolv"
146+
// CHECK-ASAN-LINUX-CXX-NOT: "-lresolv"
147147

148148
// RUN: %clang -### %s -o /dev/null -fsanitize=address \
149149
// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform \
@@ -292,7 +292,7 @@
292292
// CHECK-TSAN-LINUX-CXX: "-lpthread"
293293
// CHECK-TSAN-LINUX-CXX: "-lrt"
294294
// CHECK-TSAN-LINUX-CXX: "-ldl"
295-
// CHECK-TSAN-LINUX-CXX: "-lresolv"
295+
// CHECK-TSAN-LINUX-CXX-NOT: "-lresolv"
296296

297297
// RUN: %clang -fsanitize=thread -fno-sanitize-link-runtime -### %s 2>&1 \
298298
// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \
@@ -365,7 +365,7 @@
365365
// CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_standalone_cxx
366366
// CHECK-UBSAN-LINUX-NOT: "-lstdc++"
367367
// CHECK-UBSAN-LINUX: "-lpthread"
368-
// CHECK-UBSAN-LINUX: "-lresolv"
368+
// CHECK-UBSAN-LINUX-NOT: "-lresolv"
369369

370370
// RUN: %clang -fsanitize=undefined -fno-sanitize-link-runtime -### %s 2>&1 \
371371
// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \
@@ -438,7 +438,7 @@
438438
// CHECK-UBSAN-LINUX-CXX: "-lstdc++"
439439
// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
440440
// CHECK-UBSAN-LINUX-CXX: "-lpthread"
441-
// CHECK-UBSAN-LINUX-CXX: "-lresolv"
441+
// CHECK-UBSAN-LINUX-CXX-NOT: "-lresolv"
442442

443443
// RUN: %clang -fsanitize=undefined -fsanitize-minimal-runtime -### %s 2>&1 \
444444
// RUN: --target=i386-unknown-linux -fuse-ld=ld \
@@ -448,7 +448,7 @@
448448
// CHECK-UBSAN-MINIMAL-LINUX: "{{.*}}ld{{(.exe)?}}"
449449
// CHECK-UBSAN-MINIMAL-LINUX: "--whole-archive" "{{.*}}libclang_rt.ubsan_minimal.a" "--no-whole-archive"
450450
// CHECK-UBSAN-MINIMAL-LINUX: "-lpthread"
451-
// CHECK-UBSAN-MINIMAL-LINUX: "-lresolv"
451+
// CHECK-UBSAN-MINIMAL-LINUX-NOT: "-lresolv"
452452

453453
// RUN: %clang -fsanitize=undefined -fsanitize-minimal-runtime -### %s 2>&1 \
454454
// RUN: --target=x86_64-apple-darwin -fuse-ld=ld \
@@ -485,7 +485,7 @@
485485
// CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.ubsan
486486
// CHECK-ASAN-UBSAN-LINUX-NOT: "-lstdc++"
487487
// CHECK-ASAN-UBSAN-LINUX: "-lpthread"
488-
// CHECK-ASAN-UBSAN-LINUX: "-lresolv"
488+
// CHECK-ASAN-UBSAN-LINUX-NOT: "-lresolv"
489489

490490
// RUN: %clangxx -fsanitize=address,undefined -### %s 2>&1 \
491491
// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform \
@@ -498,7 +498,7 @@
498498
// CHECK-ASAN-UBSAN-LINUX-CXX-NOT: libclang_rt.ubsan
499499
// CHECK-ASAN-UBSAN-LINUX-CXX: "-lstdc++"
500500
// CHECK-ASAN-UBSAN-LINUX-CXX: "-lpthread"
501-
// CHECK-ASAN-UBSAN-LINUX-CXX: "-lresolv"
501+
// CHECK-ASAN-UBSAN-LINUX-CXX-NOT: "-lresolv"
502502

503503
// RUN: %clangxx -fsanitize=memory,undefined -### %s 2>&1 \
504504
// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \
@@ -541,7 +541,7 @@
541541
// CHECK-LSAN-LINUX: libclang_rt.lsan.a"
542542
// CHECK-LSAN-LINUX: "-lpthread"
543543
// CHECK-LSAN-LINUX: "-ldl"
544-
// CHECK-LSAN-LINUX: "-lresolv"
544+
// CHECK-LSAN-LINUX-NOT: "-lresolv"
545545

546546
// RUN: %clang -fsanitize=leak -fno-sanitize-link-runtime -### %s 2>&1 \
547547
// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \
@@ -564,7 +564,7 @@
564564
// CHECK-LSAN-COV-LINUX-NOT: libclang_rt.ubsan
565565
// CHECK-LSAN-COV-LINUX: "-lpthread"
566566
// CHECK-LSAN-COV-LINUX: "-ldl"
567-
// CHECK-LSAN-COV-LINUX: "-lresolv"
567+
// CHECK-LSAN-COV-LINUX-NOT: "-lresolv"
568568

569569
// RUN: %clang -fsanitize=leak,address -### %s 2>&1 \
570570
// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \
@@ -586,7 +586,7 @@
586586
// CHECK-ASAN-COV-LINUX-NOT: libclang_rt.ubsan
587587
// CHECK-ASAN-COV-LINUX-NOT: "-lstdc++"
588588
// CHECK-ASAN-COV-LINUX: "-lpthread"
589-
// CHECK-ASAN-COV-LINUX: "-lresolv"
589+
// CHECK-ASAN-COV-LINUX-NOT: "-lresolv"
590590

591591
// RUN: %clang -fsanitize=memory -fsanitize-coverage=func -### %s 2>&1 \
592592
// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \
@@ -610,7 +610,7 @@
610610
// CHECK-DFSAN-COV-LINUX-NOT: libclang_rt.ubsan
611611
// CHECK-DFSAN-COV-LINUX-NOT: "-lstdc++"
612612
// CHECK-DFSAN-COV-LINUX: "-lpthread"
613-
// CHECK-DFSAN-COV-LINUX: "-lresolv"
613+
// CHECK-DFSAN-COV-LINUX-NOT: "-lresolv"
614614

615615
// RUN: %clang -fsanitize=undefined -fsanitize-coverage=func -### %s 2>&1 \
616616
// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \
@@ -621,7 +621,7 @@
621621
// CHECK-UBSAN-COV-LINUX: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone.a" "--no-whole-archive"
622622
// CHECK-UBSAN-COV-LINUX-NOT: "-lstdc++"
623623
// CHECK-UBSAN-COV-LINUX: "-lpthread"
624-
// CHECK-UBSAN-COV-LINUX: "-lresolv"
624+
// CHECK-UBSAN-COV-LINUX-NOT: "-lresolv"
625625

626626
// RUN: %clang -fsanitize-coverage=func -### %s 2>&1 \
627627
// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \
@@ -632,7 +632,7 @@
632632
// CHECK-COV-LINUX: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone.a" "--no-whole-archive"
633633
// CHECK-COV-LINUX-NOT: "-lstdc++"
634634
// CHECK-COV-LINUX: "-lpthread"
635-
// CHECK-COV-LINUX: "-lresolv"
635+
// CHECK-COV-LINUX-NOT: "-lresolv"
636636

637637
// RUN: %clang -### %s 2>&1 \
638638
// RUN: --target=x86_64-unknown-linux -fuse-ld=ld -fsanitize=numerical \
@@ -644,7 +644,8 @@
644644
// CHECK-NSAN-LINUX-NOT: "-lc"
645645
// CHECK-NSAN-LINUX-NOT: libclang_rt.ubsan
646646
// CHECK-NSAN-LINUX: libclang_rt.nsan.a"
647-
// CHECK-NSAN-LINUX: "-lpthread" "-lrt" "-lm" "-ldl" "-lresolv"
647+
// CHECK-NSAN-LINUX: "-lpthread" "-lrt" "-lm" "-ldl"
648+
// CHECK-NSAN-LINUX-NOT: "-lresolv"
648649

649650
// RUN: %clang -### %s 2>&1 --target=x86_64-unknown-linux -fuse-ld=ld -fsanitize=numerical -shared-libsan \
650651
// RUN: -resource-dir=%S/Inputs/resource_dir \
@@ -757,7 +758,7 @@
757758
// CHECK-SAFESTACK-LINUX: libclang_rt.safestack.a"
758759
// CHECK-SAFESTACK-LINUX: "-lpthread"
759760
// CHECK-SAFESTACK-LINUX: "-ldl"
760-
// CHECK-SAFESTACK-LINUX: "-lresolv"
761+
// CHECK-SAFESTACK-LINUX-NOT: "-lresolv"
761762

762763
// RUN: %clang -fsanitize=shadow-call-stack -### %s 2>&1 \
763764
// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \
@@ -957,7 +958,7 @@
957958
// CHECK-SCUDO-LINUX-NOT: "-lstdc++"
958959
// CHECK-SCUDO-LINUX: "-lpthread"
959960
// CHECK-SCUDO-LINUX: "-ldl"
960-
// CHECK-SCUDO-LINUX: "-lresolv"
961+
// CHECK-SCUDO-LINUX-NOT: "-lresolv"
961962

962963
// RUN: %clang -### %s -o %t.so -shared 2>&1 \
963964
// RUN: --target=i386-unknown-linux -fuse-ld=ld -fsanitize=scudo -shared-libsan \
@@ -1018,7 +1019,7 @@
10181019
// CHECK-HWASAN-X86-64-LINUX: "-lpthread"
10191020
// CHECK-HWASAN-X86-64-LINUX: "-lrt"
10201021
// CHECK-HWASAN-X86-64-LINUX: "-ldl"
1021-
// CHECK-HWASAN-X86-64-LINUX: "-lresolv"
1022+
// CHECK-HWASAN-X86-64-LINUX-NOT: "-lresolv"
10221023

10231024
// RUN: %clang -### %s 2>&1 \
10241025
// RUN: --target=x86_64-unknown-linux -fuse-ld=ld -fsanitize=hwaddress \
@@ -1067,7 +1068,7 @@
10671068
// CHECK-HWASAN-AARCH64-LINUX: "-lpthread"
10681069
// CHECK-HWASAN-AARCH64-LINUX: "-lrt"
10691070
// CHECK-HWASAN-AARCH64-LINUX: "-ldl"
1070-
// CHECK-HWASAN-AARCH64-LINUX: "-lresolv"
1071+
// CHECK-HWASAN-AARCH64-LINUX-NOT: "-lresolv"
10711072

10721073
// RUN: %clang -### %s 2>&1 \
10731074
// RUN: --target=aarch64-unknown-linux -fuse-ld=ld -fsanitize=hwaddress \

0 commit comments

Comments
 (0)