Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[CHERRY-PICK] MdePkg/BaseMemoryLib: Prevent potential VS2022 linker f…
…ailure After updating between various VS2022 versions such as 17.4 to 17.5, , linker failures began to appear in several modules because `memset` is an unresolved symbol. The following functions in BaseMemoryLib/MemLibGeneric.c have their loop pattern replaced with the `memset` intrinsic function: - `InternalMemSetMem16()` - `InternalMemSetMem32()` - `InternalMemSetMem64()` An example of an error related to `InternalMemSetMem64()` in VariableSmmRuntimeDxe is shown below: ``` INFO - BaseMemoryLib.lib(MemLibGeneric.obj) : error LNK2001: unresolved external symbol memset INFO - <...>\VariableSmmRuntimeDxe.dll : fatal error LNK1120: 1 unresolved externals ``` This was reproduced in several environments including: - Public VM image: https://github.com/actions/runner-images/blob/win22/20230226.1/images/win/Windows2022-Readme.md - Locally when updating from 17.4.4 to 17.5.1 > Note: This image (with 17.4) does not have this issue https://github.com/actions/runner-images/blob/win22/20230219.1/images/win/Windows2022-Readme.md This change updates the type cast for the destination buffer to be a pointer to `volatile` data to prevent this optimization with a relatively minimum delta to prior implementation. Signed-off-by: Michael Kubacki <[email protected]> (cherry picked from commit c46bc0ea98b4a8483c970e2282ea46891ea94f57)
- Loading branch information