Commit b077d2f
committed
[CHERRY-PICK] MdePkg/BaseMemoryLib: Prevent potential VS2022 linker failure
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 c46bc0e)1 parent 59f4100 commit b077d2f
1 file changed
+0
-6
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | | - | |
36 | | - | |
37 | 35 | | |
38 | 36 | | |
39 | 37 | | |
| |||
59 | 57 | | |
60 | 58 | | |
61 | 59 | | |
62 | | - | |
63 | | - | |
64 | 60 | | |
65 | 61 | | |
66 | 62 | | |
| |||
86 | 82 | | |
87 | 83 | | |
88 | 84 | | |
89 | | - | |
90 | | - | |
91 | 85 | | |
92 | 86 | | |
93 | 87 | | |
| |||
0 commit comments