Skip to content

Commit c241379

Browse files
committed
[clang][driver] Cleanup UEFI toolchain driver
UEFI toolchain predefines clean up. Introducing new __PECOFF__ predefine for targets that produce PE COFF binaries. Updating UEFI header includes to not include system include directories.
1 parent d1335fb commit c241379

File tree

5 files changed

+17
-6
lines changed

5 files changed

+17
-6
lines changed

clang/lib/Basic/Targets/OSTargets.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,7 @@ static void addVisualCDefines(const LangOptions &Opts, MacroBuilder &Builder) {
260260
void addWindowsDefines(const llvm::Triple &Triple, const LangOptions &Opts,
261261
MacroBuilder &Builder) {
262262
Builder.defineMacro("_WIN32");
263+
Builder.defineMacro("__PECOFF__");
263264
if (Triple.isArch64Bit())
264265
Builder.defineMacro("_WIN64");
265266
if (Triple.isWindowsGNUEnvironment())

clang/lib/Basic/Targets/OSTargets.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -783,7 +783,9 @@ template <typename Target>
783783
class LLVM_LIBRARY_VISIBILITY UEFITargetInfo : public OSTargetInfo<Target> {
784784
protected:
785785
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple,
786-
MacroBuilder &Builder) const override {}
786+
MacroBuilder &Builder) const override {
787+
Builder.defineMacro("__PECOFF__");
788+
}
787789

788790
public:
789791
UEFITargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)

clang/lib/Basic/Targets/X86.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -826,11 +826,6 @@ class LLVM_LIBRARY_VISIBILITY UEFIX86_64TargetInfo
826826
"i64:64-i128:128-f80:128-n8:16:32:64-S128");
827827
}
828828

829-
void getTargetDefines(const LangOptions &Opts,
830-
MacroBuilder &Builder) const override {
831-
getOSDefines(Opts, X86TargetInfo::getTriple(), Builder);
832-
}
833-
834829
BuiltinVaListKind getBuiltinVaListKind() const override {
835830
return TargetInfo::CharPtrBuiltinVaList;
836831
}

clang/lib/Driver/ToolChains/UEFI.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@ UEFI::UEFI(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
3535

3636
Tool *UEFI::buildLinker() const { return new tools::uefi::Linker(*this); }
3737

38+
void UEFI::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
39+
ArgStringList &CC1Args) const {
40+
if (DriverArgs.hasArg(options::OPT_nostdinc, options::OPT_nostdlibinc,
41+
options::OPT_nostdincxx))
42+
return;
43+
}
44+
45+
3846
void tools::uefi::Linker::ConstructJob(Compilation &C, const JobAction &JA,
3947
const InputInfo &Output,
4048
const InputInfoList &Inputs,

clang/lib/Driver/ToolChains/UEFI.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ class LLVM_LIBRARY_VISIBILITY UEFI : public ToolChain {
5151
return false;
5252
}
5353
bool isPICDefaultForced() const override { return true; }
54+
55+
void AddClangCXXStdlibIncludeArgs(
56+
const llvm::opt::ArgList &DriverArgs,
57+
llvm::opt::ArgStringList &CC1Args) const override;
58+
5459
};
5560

5661
} // namespace toolchains

0 commit comments

Comments
 (0)