]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/X64/ProcessorBind.h
BaseTools GCC: introduce GCC5 toolchain to support GCC v5.x in LTO mode
[mirror_edk2.git] / MdePkg / Include / X64 / ProcessorBind.h
index 666cc8e8bd165c3eb35ad82783fd6a41932ac36d..ffcf2b034414b1a1b925623989eb4b3be1bf35cb 100644 (file)
 #pragma pack()\r
 #endif\r
 \r
-#if defined(__GNUC__) && defined(__pic__)\r
+#if defined(__GNUC__) && defined(__pic__) && !defined(USING_LTO)\r
 //\r
 // Mark all symbol declarations and references as hidden, meaning they will\r
 // not be subject to symbol preemption. This allows the compiler to refer to\r
 // symbols directly using relative references rather than via the GOT, which\r
 // contains absolute symbol addresses that are subject to runtime relocation.\r
 //\r
+// The LTO linker will not emit GOT based relocations when all symbol\r
+// references can be resolved locally, and so there is no need to set the\r
+// pragma in that case (and doing so will cause other issues).\r
+//\r
 #pragma GCC visibility push (hidden)\r
 #endif\r
 \r