Index: lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD_x86_64.cpp =================================================================== --- lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD_x86_64.cpp +++ lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD_x86_64.cpp @@ -894,33 +894,43 @@ #endif case lldb_fctrl_x86_64: m_xstate.xs_fxsave.fx_cw = reg_value.GetAsUInt16(); + m_xstate.xs_xstate_bv |= XCR0_X87; break; case lldb_fstat_x86_64: m_xstate.xs_fxsave.fx_sw = reg_value.GetAsUInt16(); + m_xstate.xs_xstate_bv |= XCR0_X87; break; case lldb_ftag_x86_64: m_xstate.xs_fxsave.fx_tw = reg_value.GetAsUInt16(); + m_xstate.xs_xstate_bv |= XCR0_X87; break; case lldb_fop_x86_64: m_xstate.xs_fxsave.fx_opcode = reg_value.GetAsUInt16(); + m_xstate.xs_xstate_bv |= XCR0_X87; break; case lldb_fiseg_x86_64: m_xstate.xs_fxsave.fx_ip.fa_32.fa_seg = reg_value.GetAsUInt32(); + m_xstate.xs_xstate_bv |= XCR0_X87; break; case lldb_fioff_x86_64: m_xstate.xs_fxsave.fx_ip.fa_32.fa_off = reg_value.GetAsUInt32(); + m_xstate.xs_xstate_bv |= XCR0_X87; break; case lldb_foseg_x86_64: m_xstate.xs_fxsave.fx_dp.fa_32.fa_seg = reg_value.GetAsUInt32(); + m_xstate.xs_xstate_bv |= XCR0_X87; break; case lldb_fooff_x86_64: m_xstate.xs_fxsave.fx_dp.fa_32.fa_off = reg_value.GetAsUInt32(); + m_xstate.xs_xstate_bv |= XCR0_X87; break; case lldb_mxcsr_x86_64: m_xstate.xs_fxsave.fx_mxcsr = reg_value.GetAsUInt32(); + m_xstate.xs_xstate_bv |= XCR0_SSE; break; case lldb_mxcsrmask_x86_64: m_xstate.xs_fxsave.fx_mxcsr_mask = reg_value.GetAsUInt32(); + m_xstate.xs_xstate_bv |= XCR0_SSE; break; case lldb_st0_x86_64: case lldb_st1_x86_64: @@ -932,6 +942,7 @@ case lldb_st7_x86_64: ::memcpy(&m_xstate.xs_fxsave.fx_87_ac[reg - lldb_st0_x86_64], reg_value.GetBytes(), reg_value.GetByteSize()); + m_xstate.xs_xstate_bv |= XCR0_X87; break; case lldb_mm0_x86_64: case lldb_mm1_x86_64: @@ -943,6 +954,7 @@ case lldb_mm7_x86_64: ::memcpy(&m_xstate.xs_fxsave.fx_87_ac[reg - lldb_mm0_x86_64], reg_value.GetBytes(), reg_value.GetByteSize()); + m_xstate.xs_xstate_bv |= XCR0_X87; break; case lldb_xmm0_x86_64: case lldb_xmm1_x86_64: @@ -966,6 +978,7 @@ } else { ::memcpy(&m_xstate.xs_fxsave.fx_xmm[reg - lldb_xmm0_x86_64], reg_value.GetBytes(), reg_value.GetByteSize()); + m_xstate.xs_xstate_bv |= XCR0_SSE; } break; case lldb_ymm0_x86_64: @@ -994,6 +1007,7 @@ ::memcpy(ymm.bytes, reg_value.GetBytes(), reg_value.GetByteSize()); YMMToXState(ymm, m_xstate.xs_fxsave.fx_xmm[reg_index].xmm_bytes, m_xstate.xs_ymm_hi128.xs_ymm[reg_index].ymm_bytes); + m_xstate.xs_xstate_bv |= XCR0_SSE | XCR0_YMM_Hi128; } break; case lldb_dr0_x86_64: