| ## @file | |
| # Provides the required functionality for checking the stack cookie. | |
| # | |
| # Copyright (c) Microsoft Corporation. | |
| # SPDX-License-Identifier: BSD-2-Clause-Patent | |
| ## | |
| [Defines] | |
| INF_VERSION = 1.29 | |
| BASE_NAME = StackCheckLib | |
| FILE_GUID = 1C4CA056-8FEA-413C-89D2-59A7E22847B3 | |
| MODULE_TYPE = BASE | |
| VERSION_STRING = 1.0 | |
| LIBRARY_CLASS = StackCheckLib | |
| [Sources] | |
| StackCheckLibCommonMsvc.c | MSFT | |
| StackCheckLibCommonGcc.c | GCC | |
| [Sources.IA32] | |
| IA32/CheckCookieMsvc.nasm | MSFT | |
| [Sources.X64] | |
| X64/CheckCookieMsvc.nasm | MSFT | |
| [Sources.IA32, Sources.X64] | |
| IA32/StackCookieInterrupt.nasm | |
| [Sources.AARCH64] | |
| AArch64/StackCookieInterrupt.S |GCC | |
| AArch64/StackCookieInterrupt.asm |MSFT | |
| [Packages] | |
| MdePkg/MdePkg.dec | |
| [LibraryClasses] | |
| StackCheckFailureHookLib | |
| [FixedPcd] | |
| gEfiMdePkgTokenSpaceGuid.PcdStackCookieExceptionVector | |
| [BuildOptions] | |
| # We cannot build the MSVC version with /GL (whole program optimization) because we run into linker error | |
| # LNK1237, which is a failure to link against a symbol from a library compiled with /GL. The whole program | |
| # optimization tries to do away with references to this symbol. The solution is to not compile the stack | |
| # check libs with /GL | |
| MSFT:*_*_*_CC_FLAGS = /GL- | |
| # We cannot build the GCC version with LTO (link time optimization) because we run into linker errors where | |
| # the stack cookie variable has been optimized away, as it looks to GCC like the variable is not used, because | |
| # the compiler inserts the usage. | |
| GCC:*_*_*_CC_FLAGS = -fno-lto |