Skip to content

Commit cc3b138

Browse files
committed
Move isARMEABIBareMetal to clang/lib/Driver/ToolChains/Arch/ARM.cpp
1 parent 26c854f commit cc3b138

File tree

5 files changed

+24
-31
lines changed

5 files changed

+24
-31
lines changed

clang/lib/Driver/ToolChains/Arch/ARM.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,26 @@ bool arm::isARMAProfile(const llvm::Triple &Triple) {
5252
return llvm::ARM::parseArchProfile(Arch) == llvm::ARM::ProfileKind::A;
5353
}
5454

55+
/// Is the triple {arm,armeb,thumb,thumbeb}-none-none-{eabi,eabihf} ?
56+
bool arm::isARMEABIBareMetal(const llvm::Triple &Triple) {
57+
auto arch = Triple.getArch();
58+
if (arch != llvm::Triple::arm && arch != llvm::Triple::thumb &&
59+
arch != llvm::Triple::armeb && arch != llvm::Triple::thumbeb)
60+
return false;
61+
62+
if (Triple.getVendor() != llvm::Triple::UnknownVendor)
63+
return false;
64+
65+
if (Triple.getOS() != llvm::Triple::UnknownOS)
66+
return false;
67+
68+
if (Triple.getEnvironment() != llvm::Triple::EABI &&
69+
Triple.getEnvironment() != llvm::Triple::EABIHF)
70+
return false;
71+
72+
return true;
73+
}
74+
5575
// Get Arch/CPU from args.
5676
void arm::getARMArchCPUFromArgs(const ArgList &Args, llvm::StringRef &Arch,
5777
llvm::StringRef &CPU, bool FromAs) {

clang/lib/Driver/ToolChains/Arch/ARM.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ int getARMSubArchVersionNumber(const llvm::Triple &Triple);
7575
bool isARMMProfile(const llvm::Triple &Triple);
7676
bool isARMAProfile(const llvm::Triple &Triple);
7777
bool isARMBigEndian(const llvm::Triple &Triple, const llvm::opt::ArgList &Args);
78+
bool isARMEABIBareMetal(const llvm::Triple &Triple);
7879

7980
} // end namespace arm
8081
} // end namespace tools

clang/lib/Driver/ToolChains/BareMetal.cpp

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -128,32 +128,6 @@ BareMetal::BareMetal(const Driver &D, const llvm::Triple &Triple,
128128
}
129129
}
130130

131-
namespace clang {
132-
namespace driver {
133-
namespace toolchains {
134-
/// Is the triple {arm,armeb,thumb,thumbeb}-none-none-{eabi,eabihf} ?
135-
bool isARMEABIBareMetal(const llvm::Triple &Triple) {
136-
auto arch = Triple.getArch();
137-
if (arch != llvm::Triple::arm && arch != llvm::Triple::thumb &&
138-
arch != llvm::Triple::armeb && arch != llvm::Triple::thumbeb)
139-
return false;
140-
141-
if (Triple.getVendor() != llvm::Triple::UnknownVendor)
142-
return false;
143-
144-
if (Triple.getOS() != llvm::Triple::UnknownOS)
145-
return false;
146-
147-
if (Triple.getEnvironment() != llvm::Triple::EABI &&
148-
Triple.getEnvironment() != llvm::Triple::EABIHF)
149-
return false;
150-
151-
return true;
152-
}
153-
} // namespace toolchains
154-
} // namespace driver
155-
} // namespace clang
156-
157131
/// Is the triple {aarch64.aarch64_be}-none-elf?
158132
static bool isAArch64BareMetal(const llvm::Triple &Triple) {
159133
if (Triple.getArch() != llvm::Triple::aarch64 &&
@@ -272,7 +246,7 @@ void BareMetal::findMultilibs(const Driver &D, const llvm::Triple &Triple,
272246
}
273247

274248
bool BareMetal::handlesTarget(const llvm::Triple &Triple) {
275-
return isARMEABIBareMetal(Triple) || isAArch64BareMetal(Triple) ||
249+
return arm::isARMEABIBareMetal(Triple) || isAArch64BareMetal(Triple) ||
276250
isRISCVBareMetal(Triple) || isPPCBareMetal(Triple);
277251
}
278252

@@ -566,7 +540,7 @@ void baremetal::Linker::ConstructJob(Compilation &C, const JobAction &JA,
566540
// The R_ARM_TARGET2 relocation must be treated as R_ARM_REL32 on arm*-*-elf
567541
// and arm*-*-eabi (the default is R_ARM_GOT_PREL, used on arm*-*-linux and
568542
// arm*-*-*bsd).
569-
if (isARMEABIBareMetal(TC.getTriple()))
543+
if (arm::isARMEABIBareMetal(TC.getTriple()))
570544
CmdArgs.push_back("--target2=rel");
571545

572546
CmdArgs.push_back("-o");

clang/lib/Driver/ToolChains/BareMetal.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ namespace driver {
1919

2020
namespace toolchains {
2121

22-
bool isARMEABIBareMetal(const llvm::Triple &Triple);
23-
2422
class LLVM_LIBRARY_VISIBILITY BareMetal : public ToolChain {
2523
public:
2624
BareMetal(const Driver &D, const llvm::Triple &Triple,

clang/lib/Driver/ToolChains/CommonArgs.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ static bool useFramePointerForTargetByDefault(const llvm::opt::ArgList &Args,
152152
}
153153
}
154154

155-
if (toolchains::isARMEABIBareMetal(Triple))
155+
if (arm::isARMEABIBareMetal(Triple))
156156
return false;
157157

158158
return true;

0 commit comments

Comments
 (0)