https://github.com/Prabhuk updated https://github.com/llvm/llvm-project/pull/111719
>From 05eab970b59c61b22e8afa1ed9381906ae925c03 Mon Sep 17 00:00:00 2001 From: prabhukr <prabh...@google.com> Date: Wed, 9 Oct 2024 10:16:58 -0700 Subject: [PATCH 1/6] [clang] Introduce a new UEFI target predefine. --- clang/lib/Basic/Targets/OSTargets.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h index a83d6464e789d6..92c76b303def65 100644 --- a/clang/lib/Basic/Targets/OSTargets.h +++ b/clang/lib/Basic/Targets/OSTargets.h @@ -783,7 +783,10 @@ template <typename Target> class LLVM_LIBRARY_VISIBILITY UEFITargetInfo : public OSTargetInfo<Target> { protected: void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, - MacroBuilder &Builder) const override {} + MacroBuilder &Builder) const override { + Builder.defineMacro("__UEFI__"); + Builder.defineMacro("__PECOFF__"); + } public: UEFITargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) >From 4ef8bcd3a9019299145b59d4f26cd4307171bed5 Mon Sep 17 00:00:00 2001 From: Prabhuk <prabhukrl...@gmail.com> Date: Wed, 13 Nov 2024 10:30:50 -0800 Subject: [PATCH 2/6] Update OSTargets.h Remove PE_COFF --- clang/lib/Basic/Targets/OSTargets.h | 1 - 1 file changed, 1 deletion(-) diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h index 92c76b303def65..5a23eef0117294 100644 --- a/clang/lib/Basic/Targets/OSTargets.h +++ b/clang/lib/Basic/Targets/OSTargets.h @@ -785,7 +785,6 @@ class LLVM_LIBRARY_VISIBILITY UEFITargetInfo : public OSTargetInfo<Target> { void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override { Builder.defineMacro("__UEFI__"); - Builder.defineMacro("__PECOFF__"); } public: >From bcccf1f86609a828130c1a9474d10b78c8f212c9 Mon Sep 17 00:00:00 2001 From: Prabhuk <prabhukrl...@gmail.com> Date: Wed, 13 Nov 2024 10:36:15 -0800 Subject: [PATCH 3/6] add __UEFI__ to windows predefines Updating the PE COFF generating windows code path to predefine the new __UEFI__ macro. --- clang/lib/Basic/Targets/OSTargets.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/clang/lib/Basic/Targets/OSTargets.cpp b/clang/lib/Basic/Targets/OSTargets.cpp index b56e2c7ca9c494..b9edeefa60148e 100644 --- a/clang/lib/Basic/Targets/OSTargets.cpp +++ b/clang/lib/Basic/Targets/OSTargets.cpp @@ -259,6 +259,7 @@ static void addVisualCDefines(const LangOptions &Opts, MacroBuilder &Builder) { void addWindowsDefines(const llvm::Triple &Triple, const LangOptions &Opts, MacroBuilder &Builder) { + Builder.defineMacro("__UEFI__"); Builder.defineMacro("_WIN32"); if (Triple.isArch64Bit()) Builder.defineMacro("_WIN64"); >From 2f6af5664bbd6f3cc01dfb7b46f67190dc4efba4 Mon Sep 17 00:00:00 2001 From: prabhukr <prabh...@google.com> Date: Fri, 20 Dec 2024 10:18:18 -0800 Subject: [PATCH 4/6] Removing the predefine from Windows targets. Keeping it only on UEFI. --- clang/lib/Basic/Targets/OSTargets.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/clang/lib/Basic/Targets/OSTargets.cpp b/clang/lib/Basic/Targets/OSTargets.cpp index b9edeefa60148e..b56e2c7ca9c494 100644 --- a/clang/lib/Basic/Targets/OSTargets.cpp +++ b/clang/lib/Basic/Targets/OSTargets.cpp @@ -259,7 +259,6 @@ static void addVisualCDefines(const LangOptions &Opts, MacroBuilder &Builder) { void addWindowsDefines(const llvm::Triple &Triple, const LangOptions &Opts, MacroBuilder &Builder) { - Builder.defineMacro("__UEFI__"); Builder.defineMacro("_WIN32"); if (Triple.isArch64Bit()) Builder.defineMacro("_WIN64"); >From 4c96e0d1bbae207301aacaee9044f3da7dc8bd3f Mon Sep 17 00:00:00 2001 From: prabhukr <prabh...@google.com> Date: Sat, 21 Dec 2024 13:16:38 -0800 Subject: [PATCH 5/6] Add a test to check if __UEFI__ is defined for UEFI targets. --- clang/test/Driver/uefi-defines.c | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 clang/test/Driver/uefi-defines.c diff --git a/clang/test/Driver/uefi-defines.c b/clang/test/Driver/uefi-defines.c new file mode 100644 index 00000000000000..45f27bfdb9fa98 --- /dev/null +++ b/clang/test/Driver/uefi-defines.c @@ -0,0 +1,6 @@ +// RUN: %clang -target x86_64-unknown-uefi %s -emit-llvm -S -c -o - | FileCheck %s + +// CHECK: __UEFI__defined +#ifdef __UEFI__ +void __UEFI__defined() {} +#endif >From 2bdba34c073852622a5adef9147c4c3fbc6e3562 Mon Sep 17 00:00:00 2001 From: prabhukr <prabh...@google.com> Date: Sat, 21 Dec 2024 14:09:00 -0800 Subject: [PATCH 6/6] Add a second test for __UEFI__ predefine. --- clang/test/Preprocessor/init.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/clang/test/Preprocessor/init.c b/clang/test/Preprocessor/init.c index 05225c120b13de..3b99204acd7a44 100644 --- a/clang/test/Preprocessor/init.c +++ b/clang/test/Preprocessor/init.c @@ -2742,3 +2742,7 @@ // RISCV64-LINUX: #define __unix__ 1 // RISCV64-LINUX: #define linux 1 // RISCV64-LINUX: #define unix 1 + +// RUN: %clang_cc1 -dM -triple=x86_64-uefi -E /dev/null | FileCheck -match-full-lines -check-prefix UEFI %s + +// UEFI: #define __UEFI__ 1 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits