charles-zablit wrote:

This is what I get (without the patch) when running the following:

```
.\llvm-build\relwdeb\bin\lldb.exe
(lldb) log enable -f C:\Users\charleszablit\lldb-packets.log gdb-remote packets
(lldb) process attach --pid 37568
Process 37568 stopped
* thread #2, stop reason = signal SIGTRAP
       frame #0: 0x00007ffb04b20ac1 ntdll.dll`DbgBreakPoint + 1
ntdll.dll`DbgBreakPoint:
->  0x7ffb04b20ac1 <+1>: retq   
    0x7ffb04b20ac2 <+2>: int3   
    0x7ffb04b20ac3 <+3>: int3   
    0x7ffb04b20ac4 <+4>: int3
Executable binary set to "C:\Users\charleszablit\Developer\testing\main.exe".
Architecture set to: x86_64-pc-windows-msvc.
(lldb) register read eax
error: Invalid register name 'eax'
(lldb) register read rax
     rax = 0x0000008d05f3d000
```

These are the packet logs:

```
 <   1> send packet: +
 history[1] tid=0x8c50 <   1> send packet: +
 <  19> send packet: $QStartNoAckMode#b0
 <   1> read packet: +
 <   6> read packet: $OK#9a
 <   1> send packet: +
 < 104> send packet: 
$qSupported:xmlRegisters=i386,arm,mips,arc;multiprocess+;fork-events+;vfork-events+;swbreak+;hwbreak+#cd
 < 181> read packet: 
$PacketSize=131072;QStartNoAckMode+;qEcho+;native-signals+;QThreadSuffixSupported+;QListThreadsInStopReply+;qXfer:features:read+;QNonStop+;jMultiBreakpoint+;qXfer:libraries:read+#2c
 <  26> send packet: $QThreadSuffixSupported#e4
 <   6> read packet: $OK#9a
 <  27> send packet: $QListThreadsInStopReply#21
 <   6> read packet: $OK#9a
 <  13> send packet: $qHostInfo#9b
 < 243> read packet: 
$triple:7838365f36342d70632d77696e646f77732d6d737663;ptrsize:8;watchpoint_exceptions_received:after;endian:little;os_version:6.2.0;os_build:57696e646f7773204e5420362e322e30;os_kernel:57696e646f7773204e5420362e322e30;hostname:435a2d50432d30;#7f
 <  10> send packet: $vCont?#49
 <  19> read packet: $vCont;c;C;s;S;t#11
 <  27> send packet: $qVAttachOrWaitSupported#38
 <   6> read packet: $OK#9a
 <  23> send packet: $QEnableErrorStrings#8c
 <   6> read packet: $OK#9a
 <  23> send packet: $QSetDetachOnError:1#f8
 <   6> read packet: $OK#9a
 <  16> send packet: $vAttach;8970#de
 < 518> read packet: 
$T05thread:4e28;threads:9a40,4e28;thread-pcs:00007ffb04b61bc4,00007ffb04b20ac1;00:004095a49f000000;01:0000000000000000;02:0000000000000000;03:a02bb304fb7f0000;04:0000000000000000;05:0000000000000000;06:0000000000000000;07:68faafa49f000000;08:0000000000000000;09:a02bb304fb7f0000;0a:0000000000000000;0b:0000000000000000;0c:0000000000000000;0d:0000000000000000;0e:0000000000000000;0f:0000000000000000;10:c10ab204fb7f0000;11:4602000000000000;12:3300;13:5300;14:2b00;15:2b00;16:2b00;17:2b00;reason:breakpoint;library:1;#9c
 <  16> send packet: $qProcessInfo#dc
 < 192> read packet: 
$pid:8970;parent-pid:6678;real-uid:ffffffff;real-gid:ffffffff;effective-uid:ffffffff;effective-gid:ffffffff;triple:7838365f36342d70632d77696e646f7773;ostype:windows;endian:little;ptrsize:8;#05
 <  43> send packet: $qXfer:features:read:target.xml:0,131071#78
 <6850> read packet: $l<?xml version="1.0"?>
<target version="1.0">
  <architecture>x86_64</architecture>
  <feature>
    <reg name="rax" bitsize="64" regnum="0" offset="0" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="0" 
dwarf_regnum="0" />
    <reg name="rbx" bitsize="64" regnum="1" offset="24" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="3" 
dwarf_regnum="3" />
    <reg name="rcx" bitsize="64" regnum="2" offset="8" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="2" 
dwarf_regnum="2" generic="arg1" />
    <reg name="rdx" bitsize="64" regnum="3" offset="16" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="1" 
dwarf_regnum="1" generic="arg2" />
    <reg name="rdi" bitsize="64" regnum="4" offset="56" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="5" 
dwarf_regnum="5" />
    <reg name="rsi" bitsize="64" regnum="5" offset="48" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="4" 
dwarf_regnum="4" />
    <reg name="rbp" bitsize="64" regnum="6" offset="40" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="6" 
dwarf_regnum="6" generic="fp" />
    <reg name="rsp" bitsize="64" regnum="7" offset="32" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="7" 
dwarf_regnum="7" generic="sp" />
    <reg name="r8" bitsize="64" regnum="8" offset="64" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="8" 
dwarf_regnum="8" generic="arg3" />
    <reg name="r9" bitsize="64" regnum="9" offset="72" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="9" 
dwarf_regnum="9" generic="arg4" />
    <reg name="r10" bitsize="64" regnum="10" offset="80" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="10" 
dwarf_regnum="10" />
    <reg name="r11" bitsize="64" regnum="11" offset="88" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="11" 
dwarf_regnum="11" />
    <reg name="r12" bitsize="64" regnum="12" offset="96" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="12" 
dwarf_regnum="12" />
    <reg name="r13" bitsize="64" regnum="13" offset="104" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="13" 
dwarf_regnum="13" />
    <reg name="r14" bitsize="64" regnum="14" offset="112" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="14" 
dwarf_regnum="14" />
    <reg name="r15" bitsize="64" regnum="15" offset="120" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="15" 
dwarf_regnum="15" />
    <reg name="rip" bitsize="64" regnum="16" offset="128" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="16" 
dwarf_regnum="16" generic="pc" />
    <reg name="rflags" bitsize="64" regnum="17" offset="136" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="49" 
dwarf_regnum="49" generic="flags" />
    <reg name="cs" bitsize="16" regnum="18" offset="144" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="51" 
dwarf_regnum="51" />
    <reg name="fs" bitsize="16" regnum="19" offset="146" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="54" 
dwarf_regnum="54" />
    <reg name="gs" bitsize="16" regnum="20" offset="148" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="55" 
dwarf_regnum="55" />
    <reg name="ss" bitsize="16" regnum="21" offset="150" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="52" 
dwarf_regnum="52" />
    <reg name="ds" bitsize="16" regnum="22" offset="152" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="53" 
dwarf_regnum="53" />
    <reg name="es" bitsize="16" regnum="23" offset="154" encoding="uint" 
format="hex" group="General Purpose Registers" ehframe_regnum="50" 
dwarf_regnum="50" />
    <reg name="xmm0" bitsize="128" regnum="24" offset="160" encoding="uint" 
format="vector-uint64" group="Floating Point Registers" ehframe_regnum="17" 
dwarf_regnum="17" />
    <reg name="xmm1" bitsize="128" regnum="25" offset="176" encoding="uint" 
format="vector-uint64" group="Floating Point Registers" ehframe_regnum="18" 
dwarf_regnum="18" />
    <reg name="xmm2" bitsize="128" regnum="26" offset="192" encoding="uint" 
format="vector-uint64" group="Floating Point Registers" ehframe_regnum="19" 
dwarf_regnum="19" />
    <reg name="xmm3" bitsize="128" regnum="27" offset="208" encoding="uint" 
format="vector-uint64" group="Floating Point Registers" ehframe_regnum="20" 
dwarf_regnum="20" />
    <reg name="xmm4" bitsize="128" regnum="28" offset="224" encoding="uint" 
format="vector-uint64" group="Floating Point Registers" ehframe_regnum="21" 
dwarf_regnum="21" />
    <reg name="xmm5" bitsize="128" regnum="29" offset="240" encoding="uint" 
format="vector-uint64" group="Floating Point Registers" ehframe_regnum="22" 
dwarf_regnum="22" />
    <reg name="xmm6" bitsize="128" regnum="30" offset="256" encoding="uint" 
format="vector-uint64" group="Floating Point Registers" ehframe_regnum="23" 
dwarf_regnum="23" />
    <reg name="xmm7" bitsize="128" regnum="31" offset="272" encoding="uint" 
format="vector-uint64" group="Floating Point Registers" ehframe_regnum="24" 
dwarf_regnum="24" />
    <reg name="xmm8" bitsize="128" regnum="32" offset="288" encoding="uint" 
format="vector-uint64" group="Floating Point Registers" ehframe_regnum="25" 
dwarf_regnum="25" />
    <reg name="xmm9" bitsize="128" regnum="33" offset="304" encoding="uint" 
format="vector-uint64" group="Floating Point Registers" ehframe_regnum="26" 
dwarf_regnum="26" />
    <reg name="xmm10" bitsize="128" regnum="34" offset="320" encoding="uint" 
format="vector-uint64" group="Floating Point Registers" ehframe_regnum="27" 
dwarf_regnum="27" />
    <reg name="xmm11" bitsize="128" regnum="35" offset="336" encoding="uint" 
format="vector-uint64" group="Floating Point Registers" ehframe_regnum="28" 
dwarf_regnum="28" />
    <reg name="xmm12" bitsize="128" regnum="36" offset="352" encoding="uint" 
format="vector-uint64" group="Floating Point Registers" ehframe_regnum="29" 
dwarf_regnum="29" />
    <reg name="xmm13" bitsize="128" regnum="37" offset="368" encoding="uint" 
format="vector-uint64" group="Floating Point Registers" ehframe_regnum="30" 
dwarf_regnum="30" />
    <reg name="xmm14" bitsize="128" regnum="38" offset="384" encoding="uint" 
format="vector-uint64" group="Floating Point Registers" ehframe_regnum="31" 
dwarf_regnum="31" />
    <reg name="xmm15" bitsize="128" regnum="39" offset="400" encoding="uint" 
format="vector-uint64" group="Floating Point Registers" ehframe_regnum="32" 
dwarf_regnum="32" />
  </feature>
</target>
#2a
 <  26> send packet: $qStructuredDataPlugins#02
 <   6> read packet: $[]#b8
 <  34> send packet: $qXfer:libraries:read::0,131071#d0
 < 620> read packet: $l<library-list><library 
name="C:\Users\charleszablit\Developer\testing\main.exe"><section 
address="0x7ff752d00000"/></library><library 
name="C:\windows\System32\CsXumd64_20907.dll"><section 
address="0x1cf218e0000"/></library><library 
name="C:\windows\System32\KERNEL32.DLL"><section 
address="0x7ffb03b00000"/></library><library 
name="C:\windows\System32\KERNELBASE.dll"><section 
address="0x7ffb01410000"/></library><library 
name="C:\windows\SYSTEM32\ntdll.dll"><section 
address="0x7ffb04a00000"/></library><library 
name="C:\windows\System32\umppc20907.dll"><section 
address="0x1cf218a0000"/></library></library-list>#09
 <  13> send packet: $qSymbol::#5b
 <   4> read packet: $#00
 <  19> send packet: $p0;thread:4e28;#cb
 <  20> read packet: $004095a49f000000#86
 <  23> send packet: $qThreadStopInfo9a40#f9
 <   7> read packet: $E2a#d8
 <  16> send packet: $jThreadsInfo#c1
 <   7> read packet: $E34#ac
 < 104> send packet: 
$qSupported:xmlRegisters=i386,arm,mips,arc;multiprocess+;fork-events+;vfork-events+;swbreak+;hwbreak+#cd
 < 181> read packet: 
$PacketSize=131072;QStartNoAckMode+;qEcho+;native-signals+;QThreadSuffixSupported+;QListThreadsInStopReply+;qXfer:features:read+;QNonStop+;jMultiBreakpoint+;qXfer:libraries:read+#2c
 <   8> send packet: $x0,0#04
 <   6> read packet: $OK#9a
 <  21> send packet: $x7ffb04b20a00,200#84
 < 520> read packet: 
$88000000c3cccccccccccccc4883ec28b908000000e80e0000004883c428c3cccccccccccccccccc894c24084883ec28488d0db9ce0a00e8a4010000488b442428488905a0cf0a00488d4424284883c00848890530cf0a00488b0589cf0a00488905facd0a00c705e0cd0a00090400c0c705dacd0a0001000000c705e4cd0a0001000000b808000000486bc000488d0ddccd0a008b54243048891401488d0d5d360500e8c0fdffff4883c428c3cccccccccccccccccc66660f1f840000000000ccc3cccccccccccc0f1f840000000000ccc3cccccccccccc0f1f840000000000ccc3cccccccccccc0f1f840000000000458bc8448bc2668b11488b4908b801000000cd2dccc3cccccccccccc0f1f400066448b4a024c8b4208668b11488b4908b802000000cd2dccc3cccccccccccccccccccccccccc66660f1f840000000000b935000000cd2990cccccccccccccccccccccccccccc66660f1f840000000000489cd9b900010000c78102010000000000000f29b1000200000f29b910020000440f298120020000440f298930020000440f299140020000440f299950020000440f29a160020000440f29a970020000440f29b180020000440f29b9900200000fae9918010000488d1549000000ffe2cccccccccccc66660f1f840000000000489c4889417848898980000000488991880000004c8981b80000004c8989c000#a1
 <  19> send packet: $x9fa4affa00,200#58
 < 516> read packet: 
$0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ee2bb304fb7f000000000000000000000000000000000000000000000000000000000000000000000000000000000000d7e8b203fb7f000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcc3a804fb7f00000000000000000000000000000000000030fbfffff004000030fbffffd00400002100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000#58
 <  24> send packet: $jThreadExtendedInfo:#b9
 <   4> read packet: $#00
```

So `qHostInfo` and `qProcessInfo` both work on Windows.

However, in `ABIX86::AugmentRegisterInfo`, we use 
`process_sp->GetTarget().GetArchitecture()` **before** running 
`GetTarget().SetArchitecture(process_arch)` in `BuildDynamicRegisterInfo`. 
That's why deferring the call to `BuildDynamicRegisterInfo` works, moving past 
`SetArchitecture`.

https://github.com/llvm/llvm-project/blob/4adb32bbca24fbcd247e0725992024d922a94303/lldb/source/Plugins/ABI/X86/ABIX86.cpp#L208-L209

The ABI plugins are called `ABIX86_64` and `ABIX86_i386` so they already know 
their own bits. Asking the Target seems incorrect.

https://github.com/llvm/llvm-project/pull/203498
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to