mirror of
				https://gitlab.com/qemu-project/edk2.git
				synced 2025-10-30 07:56:39 +08:00 
			
		
		
		
	 c46bc0ea98
			
		
	
	c46bc0ea98
	
	
	
		
			
			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 <michael.kubacki@microsoft.com>