summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MdePkg/Include/X64/ProcessorBind.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/MdePkg/Include/X64/ProcessorBind.h b/MdePkg/Include/X64/ProcessorBind.h
index 705104af06..a4aad3e524 100644
--- a/MdePkg/Include/X64/ProcessorBind.h
+++ b/MdePkg/Include/X64/ProcessorBind.h
@@ -27,6 +27,15 @@
#pragma pack()
#endif
+#if defined(__GNUC__) && defined(__pic__)
+//
+// Mark all symbol declarations and references as protected, meaning they will
+// not be subject to symbol preemption. This allows the compiler to refer to
+// symbols directly using relative references rather than via the GOT, which
+// contains absolute symbol addresses that are subject to runtime relocation.
+//
+#pragma GCC visibility push (protected)
+#endif
#if defined(__INTEL_COMPILER)
//