Fix SOS plugin on x86 22/155022/1 accepted/tizen/4.0/unified/20171012.074848 submit/tizen_4.0/20171012.043109 tizen_4.0.IoT.p1_release tizen_4.0.m2_release
authorchunseok lee <chunseok.lee@samsung.com>
Thu, 12 Oct 2017 02:06:58 +0000 (22:06 -0400)
committerchunseok lee <chunseok.lee@samsung.com>
Thu, 12 Oct 2017 02:07:39 +0000 (22:07 -0400)
Change-Id: Idd7e76bd1ff63c93fcef960f4ae373c2815d615e
Signed-off-by: chunseok lee <chunseok.lee@samsung.com>
packaging/0001-Fix-assert-in-HelperMethodFrame-UpdateRegDisplay-142.patch [new file with mode: 0644]
packaging/0001-Fix-clrstack-command-of-lldb-sosplugin-on-x86-13973.patch [new file with mode: 0644]
packaging/0001-Fix-typo-in-SetDebuggerREGDISPLAYFromREGDISPLAY-1422.patch [new file with mode: 0644]
packaging/0001-Use-addresses-without-sign-extension-in-lldb-plugin-.patch [new file with mode: 0644]
packaging/coreclr.spec

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 (file)
index 0000000..a5af80e
--- /dev/null
@@ -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 (file)
index 0000000..3e78100
--- /dev/null
@@ -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 (file)
index 0000000..e592492
--- /dev/null
@@ -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 (file)
index 0000000..e6dbc5d
--- /dev/null
@@ -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
+
index 18de9a8..acebdf8 100644 (file)
@@ -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