Skip to content

Commit 1e40dfc

Browse files
authored
[Driver] Also respect SysRoot for the system library paths on DragonFly (#66056)
1 parent e9f044a commit 1e40dfc

File tree

9 files changed

+20
-3
lines changed

9 files changed

+20
-3
lines changed

clang/lib/Driver/ToolChains/DragonFly.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,9 @@ void dragonfly::Linker::ConstructJob(Compilation &C, const JobAction &JA,
123123

124124
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs,
125125
options::OPT_r)) {
126-
CmdArgs.push_back("-L/usr/lib/gcc80");
126+
SmallString<128> Dir(D.SysRoot);
127+
llvm::sys::path::append(Dir, "/usr/lib/gcc80");
128+
CmdArgs.push_back(Args.MakeArgString("-L" + Dir));
127129

128130
if (!Args.hasArg(options::OPT_static)) {
129131
CmdArgs.push_back("-rpath");
@@ -192,8 +194,8 @@ DragonFly::DragonFly(const Driver &D, const llvm::Triple &Triple,
192194
getProgramPaths().push_back(getDriver().Dir);
193195

194196
getFilePaths().push_back(getDriver().Dir + "/../lib");
195-
getFilePaths().push_back("/usr/lib");
196-
getFilePaths().push_back("/usr/lib/gcc80");
197+
getFilePaths().push_back(concat(getDriver().SysRoot, "/usr/lib"));
198+
getFilePaths().push_back(concat(getDriver().SysRoot, "/usr/lib/gcc80"));
197199
}
198200

199201
void DragonFly::AddClangSystemIncludeArgs(

clang/test/Driver/Inputs/basic_dragonfly_tree/usr/lib/crt1.o

Whitespace-only changes.

clang/test/Driver/Inputs/basic_dragonfly_tree/usr/lib/crti.o

Whitespace-only changes.

clang/test/Driver/Inputs/basic_dragonfly_tree/usr/lib/crtn.o

Whitespace-only changes.

clang/test/Driver/Inputs/basic_dragonfly_tree/usr/lib/gcc80/crtbegin.o

Whitespace-only changes.

clang/test/Driver/Inputs/basic_dragonfly_tree/usr/lib/gcc80/crtbeginS.o

Whitespace-only changes.

clang/test/Driver/Inputs/basic_dragonfly_tree/usr/lib/gcc80/crtend.o

Whitespace-only changes.

clang/test/Driver/Inputs/basic_dragonfly_tree/usr/lib/gcc80/crtendS.o

Whitespace-only changes.

clang/test/Driver/dragonfly.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,21 @@
44
// CHECK: "-cc1" "-triple" "x86_64-pc-dragonfly"
55
// CHECK: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/usr/libexec/ld-elf.so.{{.*}}" "--hash-style=gnu" "--enable-new-dtags" "-o" "a.out" "{{.*}}crt1.o" "{{.*}}crti.o" "{{.*}}crtbegin.o" "{{.*}}.o" "-L{{.*}}gcc{{.*}}" "-rpath" "{{.*}}gcc{{.*}}" "-lc" "-lgcc" "{{.*}}crtend.o" "{{.*}}crtn.o"
66

7+
// Check x86_64-unknown-dragonfly, X86_64
8+
// RUN: %clang -### %s 2>&1 --target=x86_64-unknown-dragonfly \
9+
// RUN: --gcc-toolchain="" \
10+
// RUN: --sysroot=%S/Inputs/basic_dragonfly_tree \
11+
// RUN: | FileCheck --check-prefix=CHECK-LD-X86_64 %s
12+
// CHECK-LD-X86_64: "-cc1" "-triple" "x86_64-unknown-dragonfly"
13+
// CHECK-LD-X86_64-SAME: "-isysroot" "[[SYSROOT:[^"]+]]"
14+
// CHECK-LD-X86_64: "{{.*}}ld{{(.exe)?}}"
15+
// CHECK-LD-X86_64-SAME: "[[SYSROOT]]{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o"
16+
// CHECK-LD-X86_64-SAME: "[[SYSROOT]]{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crti.o"
17+
// CHECK-LD-X86_64-SAME: "[[SYSROOT]]{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}gcc80{{/|\\\\}}crtbegin.o"
18+
// CHECK-LD-X86_64-SAME: "-L[[SYSROOT]]{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}gcc80" "-rpath" "/usr/lib/gcc80" "-lc" "-lgcc" "--as-needed" "-lgcc_pic" "--no-as-needed"
19+
// CHECK-LD-X86_64-SAME: "[[SYSROOT]]{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}gcc80{{/|\\\\}}crtend.o"
20+
// CHECK-LD-X86_64-SAME: "[[SYSROOT]]{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crtn.o"
21+
722
// -r suppresses -dynamic-linker, default -l and crt*.o like -nostdlib.
823
// RUN: %clang -### %s --target=x86_64-pc-dragonfly -r \
924
// RUN: 2>&1 | FileCheck %s --check-prefix=RELOCATABLE

0 commit comments

Comments
 (0)