Skip to content

Commit da91431

Browse files
committedNov 22, 2018
[Driver] Support XRay on Fuchsia
This enables support for XRay in Fuchsia Clang driver. Differential Revision: https://reviews.llvm.org/D52160 llvm-svn: 347444
1 parent e7dec78 commit da91431

File tree

8 files changed

+36
-2
lines changed

8 files changed

+36
-2
lines changed
 

Diff for: ‎clang/cmake/caches/Fuchsia-stage2.cmake

+1
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ set(LLVM_TOOLCHAIN_TOOLS
147147
llvm-size
148148
llvm-strip
149149
llvm-symbolizer
150+
llvm-xray
150151
opt
151152
sancov
152153
CACHE STRING "")

Diff for: ‎clang/lib/Driver/ToolChains/Fuchsia.cpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,8 @@ void fuchsia::Linker::ConstructJob(Compilation &C, const JobAction &JA,
109109
D.getLTOMode() == LTOK_Thin);
110110
}
111111

112-
bool NeedSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs);
112+
bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs);
113+
bool NeedsXRayDeps = addXRayRuntime(ToolChain, Args, CmdArgs);
113114
AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
114115
ToolChain.addProfileRTLibs(Args, CmdArgs);
115116

@@ -133,9 +134,12 @@ void fuchsia::Linker::ConstructJob(Compilation &C, const JobAction &JA,
133134
}
134135
}
135136

136-
if (NeedSanitizerDeps)
137+
if (NeedsSanitizerDeps)
137138
linkSanitizerRuntimeDeps(ToolChain, CmdArgs);
138139

140+
if (NeedsXRayDeps)
141+
linkXRayRuntimeDeps(ToolChain, CmdArgs);
142+
139143
AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
140144

141145
if (Args.hasArg(options::OPT_pthread) ||

Diff for: ‎clang/lib/Driver/XRayArgs.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,15 @@ XRayArgs::XRayArgs(const ToolChain &TC, const ArgList &Args) {
5858
D.Diag(diag::err_drv_clang_unsupported)
5959
<< (std::string(XRayInstrumentOption) + " on " + Triple.str());
6060
}
61+
} else if (Triple.getOS() == llvm::Triple::Fuchsia) {
62+
switch (Triple.getArch()) {
63+
case llvm::Triple::x86_64:
64+
case llvm::Triple::aarch64:
65+
break;
66+
default:
67+
D.Diag(diag::err_drv_clang_unsupported)
68+
<< (std::string(XRayInstrumentOption) + " on " + Triple.str());
69+
}
6170
} else {
6271
D.Diag(diag::err_drv_clang_unsupported)
6372
<< (std::string(XRayInstrumentOption) + " on " + Triple.str());

Diff for: ‎clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/aarch64-fuchsia/lib/libclang_rt.xray-basic.a

Whitespace-only changes.

Diff for: ‎clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/aarch64-fuchsia/lib/libclang_rt.xray.a

Whitespace-only changes.

Diff for: ‎clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/x86_64-fuchsia/lib/libclang_rt.xray-basic.a

Whitespace-only changes.

Diff for: ‎clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/x86_64-fuchsia/lib/libclang_rt.xray.a

Whitespace-only changes.

Diff for: ‎clang/test/Driver/fuchsia.c

+20
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,26 @@
149149
// CHECK-SCUDO-SHARED: "-fsanitize=safe-stack,scudo"
150150
// CHECK-SCUDO-SHARED: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.scudo.so"
151151

152+
// RUN: %clang %s -### --target=x86_64-fuchsia \
153+
// RUN: -fxray-instrument -fxray-modes=xray-basic \
154+
// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
155+
// RUN: -fuse-ld=lld 2>&1 \
156+
// RUN: | FileCheck %s -check-prefix=CHECK-XRAY-X86
157+
// CHECK-XRAY-X86: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
158+
// CHECK-XRAY-X86: "-fxray-instrument"
159+
// CHECK-XRAY-X86: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.xray.a"
160+
// CHECK-XRAY-X86: "[[RESOURCE_DIR]]{{/|\\\\}}x86_64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.xray-basic.a"
161+
162+
// RUN: %clang %s -### --target=aarch64-fuchsia \
163+
// RUN: -fxray-instrument -fxray-modes=xray-basic \
164+
// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
165+
// RUN: -fuse-ld=lld 2>&1 \
166+
// RUN: | FileCheck %s -check-prefix=CHECK-XRAY-AARCH64
167+
// CHECK-XRAY-AARCH64: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
168+
// CHECK-XRAY-AARCH64: "-fxray-instrument"
169+
// CHECK-XRAY-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.xray.a"
170+
// CHECK-XRAY-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}lib{{/|\\\\}}libclang_rt.xray-basic.a"
171+
152172
// RUN: %clang %s -### --target=aarch64-fuchsia \
153173
// RUN: -O3 -flto -mcpu=cortex-a53 2>&1 \
154174
// RUN: -fuse-ld=lld \

0 commit comments

Comments
 (0)