diff options
author | chunseok lee <chunseok.lee@samsung.com> | 2017-10-11 22:06:58 -0400 |
---|---|---|
committer | chunseok lee <chunseok.lee@samsung.com> | 2017-10-11 22:07:39 -0400 |
commit | abec0a29ea5d57a608b3b1e06057456716bdc85f (patch) | |
tree | 6bdb1c0dc563cf98883b2a9ea44a0999ea93fd44 | |
parent | 7a8814009a8a48c4e4cbc1c775aba8893fa841c3 (diff) | |
download | coreclr-abec0a29ea5d57a608b3b1e06057456716bdc85f.tar.gz coreclr-abec0a29ea5d57a608b3b1e06057456716bdc85f.tar.bz2 coreclr-abec0a29ea5d57a608b3b1e06057456716bdc85f.zip |
Fix SOS plugin on x86tizen_4.0.m2_releasetizen_4.0.IoT.p1_releasesubmit/tizen_4.0/20171012.043109accepted/tizen/4.0/unified/20171012.074848
Change-Id: Idd7e76bd1ff63c93fcef960f4ae373c2815d615e
Signed-off-by: chunseok lee <chunseok.lee@samsung.com>
5 files changed, 473 insertions, 1 deletions
diff --git a/packaging/0001-Fix-assert-in-HelperMethodFrame-UpdateRegDisplay-142.patch b/packaging/0001-Fix-assert-in-HelperMethodFrame-UpdateRegDisplay-142.patch new file mode 100644 index 0000000000..a5af80ed8d --- /dev/null +++ b/packaging/0001-Fix-assert-in-HelperMethodFrame-UpdateRegDisplay-142.patch @@ -0,0 +1,51 @@ +From 1c963b8694365c7e31605fda0939fe7564c38716 Mon Sep 17 00:00:00 2001 +From: Konstantin Baladurin <k.baladurin@partner.samsung.com> +Date: Fri, 29 Sep 2017 11:08:01 +0300 +Subject: [PATCH] Fix assert in HelperMethodFrame::UpdateRegDisplay (#14235) + +In some cases during execution of the SOS command 'clrstack -i' +portability assert in HelperMethodFrame::UpdateRegDisplay occurs. +This patch removes this assert and adds corresponding implementation. +--- + src/vm/i386/cgenx86.cpp | 25 ++++++++++++++++++++++++- + 1 file changed, 24 insertions(+), 1 deletion(-) + +diff --git a/src/vm/i386/cgenx86.cpp b/src/vm/i386/cgenx86.cpp +index ca81bb7..b4277db 100644 +--- a/src/vm/i386/cgenx86.cpp ++++ b/src/vm/i386/cgenx86.cpp +@@ -379,7 +379,30 @@ void HelperMethodFrame::UpdateRegDisplay(const PREGDISPLAY pRD) + pRD->IsCallerSPValid = FALSE; // Don't add usage of this field. This is only temporary. + + #ifdef DACCESS_COMPILE +- PORTABILITY_ASSERT("HelperMethodFrame::UpdateRegDisplay"); ++ // For DAC, we may get here when the HMF is still uninitialized. ++ // So we may need to unwind here. ++ if (!m_MachState.isValid()) ++ { ++ // This allocation throws on OOM. ++ MachState* pUnwoundState = (MachState*)DacAllocHostOnlyInstance(sizeof(*pUnwoundState), true); ++ ++ InsureInit(false, pUnwoundState); ++ ++ pRD->pCurrentContext->Eip = pRD->ControlPC = pUnwoundState->GetRetAddr(); ++ pRD->pCurrentContext->Esp = pRD->SP = pUnwoundState->esp(); ++ ++#define CALLEE_SAVED_REGISTER(regname) pRD->pCurrentContext->regname = *((DWORD*) pUnwoundState->p##regname()); ++ ENUM_CALLEE_SAVED_REGISTERS(); ++#undef CALLEE_SAVED_REGISTER ++ ++#define CALLEE_SAVED_REGISTER(regname) pRD->pCurrentContextPointers->regname = (DWORD*) pUnwoundState->p##regname(); ++ ENUM_CALLEE_SAVED_REGISTERS(); ++#undef CALLEE_SAVED_REGISTER ++ ++ ClearRegDisplayArgumentAndScratchRegisters(pRD); ++ ++ return; ++ } + #endif // DACCESS_COMPILE + + pRD->pCurrentContext->Eip = pRD->ControlPC = m_MachState.GetRetAddr(); +-- +2.7.4 + diff --git a/packaging/0001-Fix-clrstack-command-of-lldb-sosplugin-on-x86-13973.patch b/packaging/0001-Fix-clrstack-command-of-lldb-sosplugin-on-x86-13973.patch new file mode 100644 index 0000000000..3e7810004c --- /dev/null +++ b/packaging/0001-Fix-clrstack-command-of-lldb-sosplugin-on-x86-13973.patch @@ -0,0 +1,287 @@ +From e287cde7c10795853e1c5504ef0bdffd62d696dc Mon Sep 17 00:00:00 2001 +From: Konstantin Baladurin <k.baladurin@partner.samsung.com> +Date: Thu, 5 Oct 2017 11:31:44 +0300 +Subject: [PATCH] Fix clrstack command of lldb sosplugin on x86 (#13973) + +* [x86/Linux][SOS] Add support for x86 in GetContextFromFrame + +It's need for 'clrstack -f' command of SOS plugin on x86. + +* [x86/Linux] Fix RtlpGetFunctionEndAddress function + +We should use PTR_UNWIND_INFO instead of PUNWIND_INFO for pointer to +UNWIND_INFO structure because it's pointer from other process and +we need to use DAC to read data using it. + +* [x86/Linux][SOS] Define DEBUG_STACK_CONTEXT for x86 + +It's needed for 'clrstack -f' command in libsosplugin. + +* [x86/Linux] Fix undefined references in libmscordbi.so on x86 + +Asm block like following: +__asm fnsave currentFPUState + +where currentFPUState is structure works with MSVC but leads to +undefined reference currentFPUState in the binary with other +compilers. So rewrite such asm blocks for them. + +This patch fixes error "Unable to load 'libmscordbi.so'" during +execution of 'clrstack -f' command of SOS plugin on x86. + +* [x86/Linux] Fix calling convention inconsistency + +WINAPI and STDAPI are defined as __cdecl but in some cases functions +with these attributes are called using stdcall calling convention. + +It leads to crashes during execution of 'clrstack -i' command of +SOS plugin on x86. +--- + src/ToolBox/SOS/Strike/strike.cpp | 4 +++- + src/ToolBox/SOS/lldbplugin/services.cpp | 19 +++++++++++++++++ + src/debug/di/rsthread.cpp | 30 ++++++++++++++++++++++++++- + src/debug/di/valuehome.cpp | 36 +++++++++++++++++++++++++++++++++ + src/debug/shim/debugshim.cpp | 4 ++-- + src/dlls/mscordbi/mscordbi.cpp | 2 +- + src/inc/clrnt.h | 2 +- + 7 files changed, 91 insertions(+), 6 deletions(-) + +diff --git a/src/ToolBox/SOS/Strike/strike.cpp b/src/ToolBox/SOS/Strike/strike.cpp +index 2e20b28..6d659f9 100644 +--- a/src/ToolBox/SOS/Strike/strike.cpp ++++ b/src/ToolBox/SOS/Strike/strike.cpp +@@ -324,7 +324,9 @@ DECLARE_API(IP2MD) + #define DEBUG_STACK_CONTEXT AMD64_CONTEXT + #elif defined(_TARGET_ARM_) // _TARGET_WIN64_ + #define DEBUG_STACK_CONTEXT ARM_CONTEXT +-#endif // _TARGET_ARM_ ++#elif defined(_TARGET_X86_) // _TARGET_ARM_ ++#define DEBUG_STACK_CONTEXT X86_CONTEXT ++#endif // _TARGET_X86_ + + #ifdef DEBUG_STACK_CONTEXT + // I use a global set of frames for stack walking on win64 because the debugger's +diff --git a/src/ToolBox/SOS/lldbplugin/services.cpp b/src/ToolBox/SOS/lldbplugin/services.cpp +index e3eee4f..262f814 100644 +--- a/src/ToolBox/SOS/lldbplugin/services.cpp ++++ b/src/ToolBox/SOS/lldbplugin/services.cpp +@@ -1554,6 +1554,25 @@ LLDBServices::GetContextFromFrame( + dtcontext->R10 = GetRegister(frame, "r10"); + dtcontext->R11 = GetRegister(frame, "r11"); + dtcontext->R12 = GetRegister(frame, "r12"); ++#elif DBG_TARGET_X86 ++ dtcontext->Eip = frame.GetPC(); ++ dtcontext->Esp = frame.GetSP(); ++ dtcontext->Ebp = frame.GetFP(); ++ dtcontext->EFlags = GetRegister(frame, "eflags"); ++ ++ dtcontext->Edi = GetRegister(frame, "edi"); ++ dtcontext->Esi = GetRegister(frame, "esi"); ++ dtcontext->Ebx = GetRegister(frame, "ebx"); ++ dtcontext->Edx = GetRegister(frame, "edx"); ++ dtcontext->Ecx = GetRegister(frame, "ecx"); ++ dtcontext->Eax = GetRegister(frame, "eax"); ++ ++ dtcontext->SegCs = GetRegister(frame, "cs"); ++ dtcontext->SegSs = GetRegister(frame, "ss"); ++ dtcontext->SegDs = GetRegister(frame, "ds"); ++ dtcontext->SegEs = GetRegister(frame, "es"); ++ dtcontext->SegFs = GetRegister(frame, "fs"); ++ dtcontext->SegGs = GetRegister(frame, "gs"); + #endif + } + +diff --git a/src/debug/di/rsthread.cpp b/src/debug/di/rsthread.cpp +index 02fae00..aa85de8 100644 +--- a/src/debug/di/rsthread.cpp ++++ b/src/debug/di/rsthread.cpp +@@ -1471,7 +1471,15 @@ void CordbThread::Get32bitFPRegisters(CONTEXT * pContext) + + FLOATING_SAVE_AREA currentFPUState; + ++#ifdef _MSC_VER + __asm fnsave currentFPUState // save the current FPU state. ++#else ++ __asm__ __volatile__ ++ ( ++ " fnsave %0\n" \ ++ : "=m"(currentFPUState) ++ ); ++#endif + + floatarea.StatusWord &= 0xFF00; // remove any error codes. + floatarea.ControlWord |= 0x3F; // mask all exceptions. +@@ -1482,12 +1490,22 @@ void CordbThread::Get32bitFPRegisters(CONTEXT * pContext) + // @dbgtodo Microsoft crossplat: the conversion from a series of bytes to a floating + // point value will need to be done with an explicit conversion routine to unpack + // the IEEE format and compute the real number value represented. +- ++ ++#ifdef _MSC_VER + __asm + { + fninit + frstor floatarea ;; reload the threads FPU state. + } ++#else ++ __asm__ ++ ( ++ " fninit\n" \ ++ " frstor %0\n" \ ++ : /* no outputs */ ++ : "m"(floatarea) ++ ); ++#endif + + unsigned int i; + +@@ -1498,11 +1516,21 @@ void CordbThread::Get32bitFPRegisters(CONTEXT * pContext) + m_floatValues[i] = td; + } + ++#ifdef _MSC_VER + __asm + { + fninit + frstor currentFPUState ;; restore our saved FPU state. + } ++#else ++ __asm__ ++ ( ++ " fninit\n" \ ++ " frstor %0\n" \ ++ : /* no outputs */ ++ : "m"(currentFPUState) ++ ); ++#endif + + m_fFloatStateValid = true; + m_floatStackTop = floatStackTop; +diff --git a/src/debug/di/valuehome.cpp b/src/debug/di/valuehome.cpp +index 837afd5..6cae8c1 100644 +--- a/src/debug/di/valuehome.cpp ++++ b/src/debug/di/valuehome.cpp +@@ -481,18 +481,36 @@ void FloatRegValueHome::SetEnregisteredValue(MemoryRange newValue, + // restore our original state. + DT_FLOATING_SAVE_AREA currentFPUState; + ++ #ifdef _MSC_VER + __asm fnsave currentFPUState // save the current FPU state. ++ #else ++ __asm__ __volatile__ ++ ( ++ " fnsave %0\n" \ ++ : "=m"(currentFPUState) ++ ); ++ #endif + + // Copy the state out of the context. + DT_FLOATING_SAVE_AREA floatarea = pContext->FloatSave; + floatarea.StatusWord &= 0xFF00; // remove any error codes. + floatarea.ControlWord |= 0x3F; // mask all exceptions. + ++ #ifdef _MSC_VER + __asm + { + fninit + frstor floatarea ;; reload the threads FPU state. + } ++ #else ++ __asm__ ++ ( ++ " fninit\n" \ ++ " frstor %0\n" \ ++ : /* no outputs */ ++ : "m"(floatarea) ++ ); ++ #endif + + double td; // temp double + double popArea[DebuggerIPCE_FloatCount]; +@@ -519,17 +537,35 @@ void FloatRegValueHome::SetEnregisteredValue(MemoryRange newValue, + } + + // Save out the modified float area. ++ #ifdef _MSC_VER + __asm fnsave floatarea ++ #else ++ __asm__ __volatile__ ++ ( ++ " fnsave %0\n" \ ++ : "=m"(floatarea) ++ ); ++ #endif + + // Put it into the context. + pContext->FloatSave= floatarea; + + // Restore our FPU state ++ #ifdef _MSC_VER + __asm + { + fninit + frstor currentFPUState ;; restore our saved FPU state. + } ++ #else ++ __asm__ ++ ( ++ " fninit\n" \ ++ " frstor %0\n" \ ++ : /* no outputs */ ++ : "m"(currentFPUState) ++ ); ++ #endif + #endif // DBG_TARGET_X86 + + // update the thread's floating point stack +diff --git a/src/debug/shim/debugshim.cpp b/src/debug/shim/debugshim.cpp +index 03b9c5f..08f1ec5 100644 +--- a/src/debug/shim/debugshim.cpp ++++ b/src/debug/shim/debugshim.cpp +@@ -38,7 +38,7 @@ + // CLRDebuggingImpl implementation (ICLRDebugging) + //***************************************************************************** + +-typedef HRESULT (__stdcall *OpenVirtualProcessImplFnPtr)(ULONG64 clrInstanceId, ++typedef HRESULT (STDAPICALLTYPE *OpenVirtualProcessImplFnPtr)(ULONG64 clrInstanceId, + IUnknown * pDataTarget, + HMODULE hDacDll, + CLR_DEBUGGING_VERSION * pMaxDebuggerSupportedVersion, +@@ -46,7 +46,7 @@ typedef HRESULT (__stdcall *OpenVirtualProcessImplFnPtr)(ULONG64 clrInstanceId, + IUnknown ** ppInstance, + CLR_DEBUGGING_PROCESS_FLAGS * pdwFlags); + +-typedef HRESULT (__stdcall *OpenVirtualProcess2FnPtr)(ULONG64 clrInstanceId, ++typedef HRESULT (STDAPICALLTYPE *OpenVirtualProcess2FnPtr)(ULONG64 clrInstanceId, + IUnknown * pDataTarget, + HMODULE hDacDll, + REFIID riid, +diff --git a/src/dlls/mscordbi/mscordbi.cpp b/src/dlls/mscordbi/mscordbi.cpp +index 4ef92c7..0197d13 100644 +--- a/src/dlls/mscordbi/mscordbi.cpp ++++ b/src/dlls/mscordbi/mscordbi.cpp +@@ -11,7 +11,7 @@ + //***************************************************************************** + #include "stdafx.h" + +-extern BOOL STDMETHODCALLTYPE DbgDllMain(HINSTANCE hInstance, DWORD dwReason, ++extern BOOL WINAPI DbgDllMain(HINSTANCE hInstance, DWORD dwReason, + LPVOID lpReserved); + + //***************************************************************************** +diff --git a/src/inc/clrnt.h b/src/inc/clrnt.h +index ebea066..487a370 100644 +--- a/src/inc/clrnt.h ++++ b/src/inc/clrnt.h +@@ -862,7 +862,7 @@ RtlpGetFunctionEndAddress ( + __in TADDR ImageBase + ) + { +- PUNWIND_INFO pUnwindInfo = (PUNWIND_INFO)(ImageBase + FunctionEntry->UnwindData); ++ PTR_UNWIND_INFO pUnwindInfo = (PTR_UNWIND_INFO)(ImageBase + FunctionEntry->UnwindData); + + return FunctionEntry->BeginAddress + pUnwindInfo->FunctionLength; + } +-- +2.7.4 + diff --git a/packaging/0001-Fix-typo-in-SetDebuggerREGDISPLAYFromREGDISPLAY-1422.patch b/packaging/0001-Fix-typo-in-SetDebuggerREGDISPLAYFromREGDISPLAY-1422.patch new file mode 100644 index 0000000000..e5924929c6 --- /dev/null +++ b/packaging/0001-Fix-typo-in-SetDebuggerREGDISPLAYFromREGDISPLAY-1422.patch @@ -0,0 +1,26 @@ +From 3d68d13de3e2bb0a2a8f4a97d2874b0bd0ffc210 Mon Sep 17 00:00:00 2001 +From: Konstantin Baladurin <k.baladurin@partner.samsung.com> +Date: Thu, 28 Sep 2017 19:26:39 +0300 +Subject: [PATCH] Fix typo in SetDebuggerREGDISPLAYFromREGDISPLAY (#14221) + +Fix typo in SetDebuggerREGDISPLAYFromREGDISPLAY: Esi -> Eax. +--- + src/debug/shared/i386/primitives.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/debug/shared/i386/primitives.cpp b/src/debug/shared/i386/primitives.cpp +index ab22a5d..6152aa2 100644 +--- a/src/debug/shared/i386/primitives.cpp ++++ b/src/debug/shared/i386/primitives.cpp +@@ -93,7 +93,7 @@ void SetDebuggerREGDISPLAYFromREGDISPLAY(DebuggerREGDISPLAY* pDRD, REGDISPLAY* p + pDRD->Ebx = (pRD->GetEbxLocation() == NULL ? 0 : *pRD->GetEbxLocation()); + pDRD->Edx = (pRD->GetEdxLocation() == NULL ? 0 : *pRD->GetEdxLocation()); + pDRD->Ecx = (pRD->GetEcxLocation() == NULL ? 0 : *pRD->GetEcxLocation()); +- pDRD->Eax = (pRD->GetEsiLocation() == NULL ? 0 : *pRD->GetEaxLocation()); ++ pDRD->Eax = (pRD->GetEaxLocation() == NULL ? 0 : *pRD->GetEaxLocation()); + + #if defined(USE_REMOTE_REGISTER_ADDRESS) + pDRD->pFP = PushedRegAddr(pRD, FPAddress); +-- +2.7.4 + diff --git a/packaging/0001-Use-addresses-without-sign-extension-in-lldb-plugin-.patch b/packaging/0001-Use-addresses-without-sign-extension-in-lldb-plugin-.patch new file mode 100644 index 0000000000..e6dbc5d3e7 --- /dev/null +++ b/packaging/0001-Use-addresses-without-sign-extension-in-lldb-plugin-.patch @@ -0,0 +1,100 @@ +From 388e7b4e98367cbdf03858817da7d756ea4247a3 Mon Sep 17 00:00:00 2001 +From: Konstantin Baladurin <k.baladurin@partner.samsung.com> +Date: Tue, 3 Oct 2017 21:28:06 +0300 +Subject: [PATCH] Use addresses without sign extension in lldb plugin (#14009) + +lldb doesn't expect sign-extended addresses so we need to convert +them before using with lldb API. + +This patch allows to use SOS plugin for core files in lldb on 32-bit +platforms and also fixes output of the 'clrstack -f' command. +--- + src/ToolBox/SOS/lldbplugin/services.cpp | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +diff --git a/src/ToolBox/SOS/lldbplugin/services.cpp b/src/ToolBox/SOS/lldbplugin/services.cpp +index 262f814..3186920 100644 +--- a/src/ToolBox/SOS/lldbplugin/services.cpp ++++ b/src/ToolBox/SOS/lldbplugin/services.cpp +@@ -8,6 +8,8 @@ + #include <string.h> + #include <string> + ++#define CONVERT_FROM_SIGN_EXTENDED(offset) ((ULONG_PTR)(offset)) ++ + ULONG g_currentThreadIndex = -1; + ULONG g_currentThreadSystemId = -1; + char *g_coreclrDirectory; +@@ -545,6 +547,9 @@ LLDBServices::Disassemble( + uint8_t byte; + int cch; + ++ // lldb doesn't expect sign-extended address ++ offset = CONVERT_FROM_SIGN_EXTENDED(offset); ++ + if (buffer == NULL) + { + hr = E_INVALIDARG; +@@ -750,6 +755,9 @@ LLDBServices::ReadVirtual( + lldb::SBError error; + size_t read = 0; + ++ // lldb doesn't expect sign-extended address ++ offset = CONVERT_FROM_SIGN_EXTENDED(offset); ++ + lldb::SBProcess process = GetCurrentProcess(); + if (!process.IsValid()) + { +@@ -776,6 +784,9 @@ LLDBServices::WriteVirtual( + lldb::SBError error; + size_t written = 0; + ++ // lldb doesn't expect sign-extended address ++ offset = CONVERT_FROM_SIGN_EXTENDED(offset); ++ + lldb::SBProcess process = GetCurrentProcess(); + if (!process.IsValid()) + { +@@ -822,6 +833,9 @@ LLDBServices::GetNameByOffset( + lldb::SBSymbol symbol; + std::string str; + ++ // lldb doesn't expect sign-extended address ++ offset = CONVERT_FROM_SIGN_EXTENDED(offset); ++ + target = m_debugger.GetSelectedTarget(); + if (!target.IsValid()) + { +@@ -1012,6 +1026,9 @@ LLDBServices::GetModuleByOffset( + lldb::SBTarget target; + int numModules; + ++ // lldb doesn't expect sign-extended address ++ offset = CONVERT_FROM_SIGN_EXTENDED(offset); ++ + target = m_debugger.GetSelectedTarget(); + if (!target.IsValid()) + { +@@ -1076,6 +1093,9 @@ LLDBServices::GetModuleNames( + lldb::SBFileSpec fileSpec; + HRESULT hr = S_OK; + ++ // lldb doesn't expect sign-extended address ++ base = CONVERT_FROM_SIGN_EXTENDED(base); ++ + target = m_debugger.GetSelectedTarget(); + if (!target.IsValid()) + { +@@ -1167,6 +1187,9 @@ LLDBServices::GetLineByOffset( + lldb::SBLineEntry lineEntry; + std::string str; + ++ // lldb doesn't expect sign-extended address ++ offset = CONVERT_FROM_SIGN_EXTENDED(offset); ++ + target = m_debugger.GetSelectedTarget(); + if (!target.IsValid()) + { +-- +2.7.4 + diff --git a/packaging/coreclr.spec b/packaging/coreclr.spec index 18de9a8542..acebdf86e8 100644 --- a/packaging/coreclr.spec +++ b/packaging/coreclr.spec @@ -23,7 +23,7 @@ Source1000: downloaded_files.tar.gz Source1001: %{name}.manifest Source1002: libicu.tar.gz Source1003: dep_libs.tar.gz -# Gbp-Ignore-Patches: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 +# Gbp-Ignore-Patches: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 Patch0: 0001-Add-project.assets.json-files.patch Patch1: 0001-ARM-Linux-Support-unaligned-struct-read-write-11290.patch Patch2: 0002-x86-Linux-Thread-safe-UMThunkMarshInfo-RunTimeInit-1.patch @@ -58,6 +58,10 @@ Patch30: 0029-Fix-calculation-of-debuginfo-s-size.-13899.patch Patch31: 0030-Force-O3-build-with-clang3.8.patch Patch32: 0031-Port-to-2.0.0-Fix-ARM32-secure-delegate-bug.patch Patch33: 0032-Disable-VSD-Stub-Kind-Prediction-on-H-W-Exception-14.patch +Patch34: 0001-Fix-assert-in-HelperMethodFrame-UpdateRegDisplay-142.patch +Patch35: 0001-Fix-clrstack-command-of-lldb-sosplugin-on-x86-13973.patch +Patch36: 0001-Fix-typo-in-SetDebuggerREGDISPLAYFromREGDISPLAY-1422.patch +Patch37: 0001-Use-addresses-without-sign-extension-in-lldb-plugin-.patch ExcludeArch: aarch64 @@ -191,6 +195,10 @@ cp %{SOURCE1001} . %patch31 -p1 %patch32 -p1 %patch33 -p1 +%patch34 -p1 +%patch35 -p1 +%patch36 -p1 +%patch37 -p1 %if 0%{skipmscorlib} %else |