Skip to content

Commit 194c5ac

Browse files
committed
[lldb] [Process/FreeBSDRemote] Correct DS/ES/FS/GS register sizes
Fix DS/ES/FS/GS register sizes in getter/setter for FreeBSD. Apparently only CS and SS registers are specified as 64/32-bit in LLDB, while the others are specified as 16-bit. This fixes the failing StandardStartupTest.TestStopReplyContainsThreadPcs lldb-server unittest. Differential Revision: https://reviews.llvm.org/D91076
1 parent e637602 commit 194c5ac

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

lldb/source/Plugins/Process/FreeBSDRemote/NativeRegisterContextFreeBSD_x86_64.cpp

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -595,19 +595,19 @@ NativeRegisterContextFreeBSD_x86_64::ReadRegister(const RegisterInfo *reg_info,
595595
reg_value = (uint64_t)m_gpr.r_cs;
596596
break;
597597
case lldb_fs_x86_64:
598-
reg_value = (uint64_t)m_gpr.r_fs;
598+
reg_value = (uint16_t)m_gpr.r_fs;
599599
break;
600600
case lldb_gs_x86_64:
601-
reg_value = (uint64_t)m_gpr.r_gs;
601+
reg_value = (uint16_t)m_gpr.r_gs;
602602
break;
603603
case lldb_ss_x86_64:
604604
reg_value = (uint64_t)m_gpr.r_ss;
605605
break;
606606
case lldb_ds_x86_64:
607-
reg_value = (uint64_t)m_gpr.r_ds;
607+
reg_value = (uint16_t)m_gpr.r_ds;
608608
break;
609609
case lldb_es_x86_64:
610-
reg_value = (uint64_t)m_gpr.r_es;
610+
reg_value = (uint16_t)m_gpr.r_es;
611611
break;
612612
#else
613613
case lldb_rax_x86_64:
@@ -644,19 +644,19 @@ NativeRegisterContextFreeBSD_x86_64::ReadRegister(const RegisterInfo *reg_info,
644644
reg_value = (uint32_t)m_gpr.r_cs;
645645
break;
646646
case lldb_fs_x86_64:
647-
reg_value = (uint32_t)m_gpr.r_fs;
647+
reg_value = (uint16_t)m_gpr.r_fs;
648648
break;
649649
case lldb_gs_x86_64:
650-
reg_value = (uint32_t)m_gpr.r_gs;
650+
reg_value = (uint16_t)m_gpr.r_gs;
651651
break;
652652
case lldb_ss_x86_64:
653653
reg_value = (uint32_t)m_gpr.r_ss;
654654
break;
655655
case lldb_ds_x86_64:
656-
reg_value = (uint32_t)m_gpr.r_ds;
656+
reg_value = (uint16_t)m_gpr.r_ds;
657657
break;
658658
case lldb_es_x86_64:
659-
reg_value = (uint32_t)m_gpr.r_es;
659+
reg_value = (uint16_t)m_gpr.r_es;
660660
break;
661661
#endif
662662
#if defined(__x86_64__)
@@ -905,19 +905,19 @@ Status NativeRegisterContextFreeBSD_x86_64::WriteRegister(
905905
m_gpr.r_cs = reg_value.GetAsUInt64();
906906
break;
907907
case lldb_fs_x86_64:
908-
m_gpr.r_fs = reg_value.GetAsUInt64();
908+
m_gpr.r_fs = reg_value.GetAsUInt16();
909909
break;
910910
case lldb_gs_x86_64:
911-
m_gpr.r_gs = reg_value.GetAsUInt64();
911+
m_gpr.r_gs = reg_value.GetAsUInt16();
912912
break;
913913
case lldb_ss_x86_64:
914914
m_gpr.r_ss = reg_value.GetAsUInt64();
915915
break;
916916
case lldb_ds_x86_64:
917-
m_gpr.r_ds = reg_value.GetAsUInt64();
917+
m_gpr.r_ds = reg_value.GetAsUInt16();
918918
break;
919919
case lldb_es_x86_64:
920-
m_gpr.r_es = reg_value.GetAsUInt64();
920+
m_gpr.r_es = reg_value.GetAsUInt16();
921921
break;
922922
#else
923923
case lldb_rax_x86_64:
@@ -954,19 +954,19 @@ Status NativeRegisterContextFreeBSD_x86_64::WriteRegister(
954954
m_gpr.r_cs = reg_value.GetAsUInt32();
955955
break;
956956
case lldb_fs_x86_64:
957-
m_gpr.r_fs = reg_value.GetAsUInt32();
957+
m_gpr.r_fs = reg_value.GetAsUInt16();
958958
break;
959959
case lldb_gs_x86_64:
960-
m_gpr.r_gs = reg_value.GetAsUInt32();
960+
m_gpr.r_gs = reg_value.GetAsUInt16();
961961
break;
962962
case lldb_ss_x86_64:
963963
m_gpr.r_ss = reg_value.GetAsUInt32();
964964
break;
965965
case lldb_ds_x86_64:
966-
m_gpr.r_ds = reg_value.GetAsUInt32();
966+
m_gpr.r_ds = reg_value.GetAsUInt16();
967967
break;
968968
case lldb_es_x86_64:
969-
m_gpr.r_es = reg_value.GetAsUInt32();
969+
m_gpr.r_es = reg_value.GetAsUInt16();
970970
break;
971971
#endif
972972
case lldb_fctrl_x86_64:

0 commit comments

Comments
 (0)