Assignments of structure values cause the emission of memcpy() intrinsics by the CLANG38 toolchain. Substitute the assignments with calls to CopyMem() to mitigate the issue.
Cc: Jian J Wang <jian.j.w...@intel.com> Cc: Hao A Wu <hao.a...@intel.com> Cc: Vitaly Cheptsov <vit9...@protonmail.com> Signed-off-by: Marvin Häuser <mhaeu...@posteo.de> --- MdeModulePkg/Universal/EbcDxe/EbcDebugger/Edb.c | 6 +++++- MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbCmdBreakpoint.c | 6 +++++- MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbHook.c | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/Edb.c b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/Edb.c index 611b2de5d81f..e417f4870f3d 100644 --- a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/Edb.c +++ b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/Edb.c @@ -219,7 +219,11 @@ EdbCheckBreakpoint ( // // If hit, record current breakpoint // - DebuggerPrivate->DebuggerBreakpointContext[EFI_DEBUGGER_BREAKPOINT_MAX] = DebuggerPrivate->DebuggerBreakpointContext[Index]; + CopyMem ( + &DebuggerPrivate->DebuggerBreakpointContext[EFI_DEBUGGER_BREAKPOINT_MAX], + &DebuggerPrivate->DebuggerBreakpointContext[Index], + sizeof (DebuggerPrivate->DebuggerBreakpointContext[EFI_DEBUGGER_BREAKPOINT_MAX]) + ); DebuggerPrivate->DebuggerBreakpointContext[EFI_DEBUGGER_BREAKPOINT_MAX].State = TRUE; // // Do not set Breakpoint flag. We record the address here just let it not patch breakpoint address when de-init. diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbCmdBreakpoint.c b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbCmdBreakpoint.c index e0c797be247f..5d32c684066e 100644 --- a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbCmdBreakpoint.c +++ b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbCmdBreakpoint.c @@ -158,7 +158,11 @@ DebuggerBreakpointDel ( // Delete this breakpoint // for (BpIndex = Index; BpIndex < DebuggerPrivate->DebuggerBreakpointCount - 1; BpIndex++) { - DebuggerPrivate->DebuggerBreakpointContext[BpIndex] = DebuggerPrivate->DebuggerBreakpointContext[BpIndex + 1]; + CopyMem ( + &DebuggerPrivate->DebuggerBreakpointContext[BpIndex], + &DebuggerPrivate->DebuggerBreakpointContext[BpIndex + 1], + sizeof (DebuggerPrivate->DebuggerBreakpointContext[BpIndex]) + ); } ZeroMem ( &DebuggerPrivate->DebuggerBreakpointContext[BpIndex], diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbHook.c b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbHook.c index 83257a2c25fe..1bfe5240c760 100644 --- a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbHook.c +++ b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbHook.c @@ -230,7 +230,11 @@ EbcDebuggerPushTraceDestEntry ( // ASSERT (mDebuggerPrivate.TraceEntry[EFI_DEBUGGER_TRACE_MAX].Type == Type); for (Index = 0; Index < EFI_DEBUGGER_TRACE_MAX; Index++) { - mDebuggerPrivate.TraceEntry[Index] = mDebuggerPrivate.TraceEntry[Index + 1]; + CopyMem ( + &mDebuggerPrivate.TraceEntry[Index], + &mDebuggerPrivate.TraceEntry[Index + 1], + sizeof (mDebuggerPrivate.TraceEntry[Index]) + ); } mDebuggerPrivate.TraceEntry[EFI_DEBUGGER_CALLSTACK_MAX - 1].DestAddress = DestEntry; mDebuggerPrivate.TraceEntryCount = EFI_DEBUGGER_TRACE_MAX; -- 2.31.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#79317): https://edk2.groups.io/g/devel/message/79317 Mute This Topic: https://groups.io/mt/84909447/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-