Blame SOURCES/0005-Add-EFI_DRIVER_ENTRY_POINT-support-for-MSVC-ARM64.patch

d30f3b
From 787b53a66cbbec6b10d47264b9eea9b24bc4e34c Mon Sep 17 00:00:00 2001
d30f3b
From: Nigel Croxon <ncroxon@redhat.com>
d30f3b
Date: Mon, 6 Nov 2017 09:34:14 -0500
d30f3b
Subject: [PATCH 05/25] Add EFI_DRIVER_ENTRY_POINT support for MSVC/ARM64
d30f3b
d30f3b
Similar to what we do for other MSVC architectures.
d30f3b
d30f3b
Signed-off-by: Pete Batard <pete@akeo.ie>
d30f3b
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
d30f3b
---
d30f3b
 inc/aarch64/efibind.h | 9 +++++++--
d30f3b
 1 file changed, 7 insertions(+), 2 deletions(-)
d30f3b
d30f3b
diff --git a/inc/aarch64/efibind.h b/inc/aarch64/efibind.h
d30f3b
index 182a2109062..bdaa5238e84 100644
d30f3b
--- a/inc/aarch64/efibind.h
d30f3b
+++ b/inc/aarch64/efibind.h
d30f3b
@@ -115,9 +115,13 @@ typedef uint64_t   UINTN;
d30f3b
 
d30f3b
 //
d30f3b
 // When build similiar to FW, then link everything together as
d30f3b
-// one big module.
d30f3b
+// one big module. For the MSVC toolchain, we simply tell the
d30f3b
+// linker what our driver init function is using /ENTRY.
d30f3b
 //
d30f3b
-
d30f3b
+#if defined(_MSC_EXTENSIONS)
d30f3b
+#define EFI_DRIVER_ENTRY_POINT(InitFunction) \
d30f3b
+    __pragma(comment(linker, "/ENTRY:" # InitFunction))
d30f3b
+#else
d30f3b
 #define EFI_DRIVER_ENTRY_POINT(InitFunction)    \
d30f3b
     UINTN                                       \
d30f3b
     InitializeDriver (                          \
d30f3b
@@ -134,6 +138,7 @@ typedef uint64_t   UINTN;
d30f3b
         EFI_SYSTEM_TABLE *systab                \
d30f3b
         ) __attribute__((weak,                  \
d30f3b
                 alias ("InitializeDriver")));
d30f3b
+#endif
d30f3b
 
d30f3b
 #define LOAD_INTERNAL_DRIVER(_if, type, name, entry)    \
d30f3b
         (_if)->LoadInternal(type, name, entry)
d30f3b
-- 
d30f3b
2.15.0
d30f3b