Re: warning: Target-supplied registers are not supported by the current architecture
William Tambe via Gdb <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <CAF8i9mPdEvRHXjzTY5huV5F547t5GV3a+7w6x+NOnS0N_J8xvQ@mail.gmail.com> |
On Mon, Oct 9, 2023 at 6:23 AM Luis Machado <[email protected]> wrote: > > On 10/9/23 11:46, William Tambe via Gdb wrote: > > On Mon, Oct 9, 2023 at 1:45 AM Aktemur, Tankut Baris > > <[email protected]> wrote: > >> > >> On Monday, October 9, 2023 1:14 AM, William Tambe wrote: > >>> I am working on gdbserver support. > >>> > >>> I am able to remotely execute the executable and set breakpoints, > >>> however right after issuing the `target remote` command, I am getting > >>> following warning: > >>> > >>> (gdb) target remote 192.168.1.164:2000 > >>> Remote debugging using 192.168.1.164:2000 > >>> warning: Target-supplied registers are not supported by the current architecture > >>> > >>> Error message is coming from gdb/target-descriptions.c at line 576, > >>> due to data->arch_regs.empty () return true. > >>> > >>> Any idea what I might have missed causing data->arch_regs.empty () to > >>> return true ? > >> > >> When gdbserver is started with the --remote-debug flag, it prints the > >> received and sent RSP packages. There, the target description XML would > >> be seen. I'd suggest starting with inspecting if the contents of that XML > >> look right. > > > > Below snippet of the prints when using --remote-debug shows the target > > description XML. > > I see a star in front of <reg name ... /> blocks; any idea whether > > that could be the issue ? > > In the source code, I am not using an actual XML file, instead, I am > > manually building the target description XML through calls to > > tdesc_create_reg: > > https://github.com/fontamsoc/binutils-gdb/blob/main/gdbserver/linux-pu32-low.cc#L63 > > > > [remote] getpkt: getpkt ("qXfer:features:read:target.xml:0,1000"); > > [no ack sent] > > [remote] putpkt_binary_1: putpkt ("$l<?xml version="1.0"?> > > <!DOCTYPE target SYSTEM "gdb-target.dtd"> > > <target> > > <architecture>pu32</architecture> > > <osabi>GNU/Linux</osabi> > > <feature name="org.gnu.gdb.pu32.core"> > > * <reg name="r0" bitsize="32" type="uint32" regnum="0"/> > > * <reg name="r1" bitsize="32" type="uint32" regnum="1"/> > > * <reg name="r2" bitsize="32" type="uint32" regnum="2"/> > > * <reg name="r3" bitsize="32" type="uint32" regnum="3"/> > > * <reg name="r4" bitsize="32" type="uint32" regnum="4"/> > > * <reg name="r5" bitsize="32" type="uint32" regnum="5"/> > > * <reg name="r6" bitsize="32" type="uint32" regnum="6"/> > > * <reg name="r7" bitsize="32" type="uint32" regnum="7"/> > > * <reg name="r8" bitsize="32" type="uint32" regnum="8"/> > > * <reg name="r9" bitsize="32" type="uint32" regnum="9"/> > > * <reg name="r10" bitsize="32" type="uint32" regnum="10"/> > > * <reg name="r11" bitsize="32" type="uint32" regnum="11"/> > > * <reg name="r12" bitsize="32" type="uint32" regnum="12"/> > > * <reg name="r13" bitsize="32" type="uint32" regnum="13"/> > > * <reg name="r14" bitsize="32" type="uint32" regnum="14"/> > > * <reg name="r15" bitsize="32" type="uint32" regnum="15"/> > > * <reg name="pc" bitsize="32" type="uint32" regnum="16"/> > > </feature> > > </target> > > #ae"); [noack mode] > > [remote] getpkt: getpkt ("qXfer:auxv:read::0,1000"); [no ack sent] > > > > > > Any ideas on what I am doing wrong ? > > What architecture is this out of curiosity? Are you enabling a new architecture called pu32? Correct, I am enabling a new architecture called pu32; more detail at https://github.com/fontamsoc . >