From: Changbin Du <changbin.du@gmail.com> To: "Philippe Mathieu-Daudé" <philmd@redhat.com> Cc: "Peter Maydell" <peter.maydell@linaro.org>, qemu-riscv@nongnu.org, "Bin Meng" <bin.meng@windriver.com>, qemu-devel@nongnu.org, qemu-arm@nongnu.org, "Alistair Francis" <alistair.francis@wdc.com>, "Paolo Bonzini" <pbonzini@redhat.com>, "Alex Bennée" <alex.bennee@linaro.org>, "Palmer Dabbelt" <palmer@dabbelt.com>, "Changbin Du" <changbin.du@gmail.com> Subject: Re: [PATCH 0/3] gdbstub: add support for switchable endianness Date: Tue, 24 Aug 2021 06:47:56 +0800 [thread overview] Message-ID: <20210823224756.p7qtttv675gumtri@mail.google.com> (raw) In-Reply-To: <7523c6ad-52cd-0b20-b09d-01bd537edbb3@redhat.com> On Mon, Aug 23, 2021 at 05:21:07PM +0200, Philippe Mathieu-Daudé wrote: > On 8/23/21 4:20 PM, Changbin Du wrote: > > To resolve the issue to debug switchable targets, this serias introduces > > basic infrastructure for gdbstub and enable support for ARM and RISC-V > > targets. > > > > For example, now there is no problem to debug an big-enadian aarch64 target > > on x86 host. > > > > $ qemu-system-aarch64 -gdb tcp::1234,endianness=big ... > > I don't understand why you need all that. > Maybe you aren't using gdb-multiarch? > Nope, my gdb support all architectures. > You can install it or start it via QEMU Debian Docker image: > > $ docker run -it --rm -v /tmp:/tmp -u $UID --network=host \ > registry.gitlab.com/qemu-project/qemu/qemu/debian10 \ > gdb-multiarch -q \ > --ex 'set architecture aarch64' \ > --ex 'set endian big' > The target architecture is assumed to be aarch64 > The target is assumed to be big endian > (gdb) target remote 172.17.0.1:1234 > (gdb) > The gdb has no problem to read endianness and arch info from elf. The problem is how qemu gdbstub handles the byte order it received. Now let's try to debug a big-enadian aarch64 linux kernel. 1) start qemu with '-gdb tcp::1234' $ gdb-multiarch vmlinux (gdb) target remote :1234 Remote debugging using :1234 0x0000004000000000 in ?? () => 0x0000004000000000: Cannot access memory at address 0x4000000000 (gdb) ni Cannot access memory at address 0x4000000000 (gdb) show architecture The target architecture is set to "auto" (currently "aarch64"). (gdb) show endian The target endianness is set automatically (currently big endian). You see it an't work, not to mention adding breakpoints. 2) start qemu with '-gdb tcp::1234,endianness=big' $ gdb-multiarch vmlinux (gdb) target remote :1234 Remote debugging using :1234 0x0000000040000000 in ?? () => 0x0000000040000000: c0 00 00 58 ldr x0, 0x40000018 (gdb) ni 0x0000000040000004 in ?? () => 0x0000000040000004: e1 03 1f aa mov x1, xzr (gdb) b start_kernel Breakpoint 1 at 0xffff800011130ee8 (2 locations) (gdb) c Continuing. Thread 1 hit Breakpoint 1, 0xffff800011130ee8 in start_kernel () => 0xffff800011130ee8 <start_kernel+0>: 5f 24 03 d5 bti c (gdb) bt #0 0xffff800011130ee8 in start_kernel () #1 0xffff8000111303c8 in __primary_switched () at arch/arm64/kernel/head.S:467 Backtrace stopped: previous frame identical to this frame (corrupt stack?) okay, now it works fine. -- Cheers, Changbin Du
WARNING: multiple messages have this Message-ID (diff)
From: Changbin Du <changbin.du@gmail.com> To: "Philippe Mathieu-Daudé" <philmd@redhat.com> Cc: "Changbin Du" <changbin.du@gmail.com>, "Alex Bennée" <alex.bennee@linaro.org>, "Paolo Bonzini" <pbonzini@redhat.com>, "Peter Maydell" <peter.maydell@linaro.org>, "Palmer Dabbelt" <palmer@dabbelt.com>, "Alistair Francis" <alistair.francis@wdc.com>, "Bin Meng" <bin.meng@windriver.com>, qemu-devel@nongnu.org, qemu-arm@nongnu.org, qemu-riscv@nongnu.org Subject: Re: [PATCH 0/3] gdbstub: add support for switchable endianness Date: Tue, 24 Aug 2021 06:47:56 +0800 [thread overview] Message-ID: <20210823224756.p7qtttv675gumtri@mail.google.com> (raw) In-Reply-To: <7523c6ad-52cd-0b20-b09d-01bd537edbb3@redhat.com> On Mon, Aug 23, 2021 at 05:21:07PM +0200, Philippe Mathieu-Daudé wrote: > On 8/23/21 4:20 PM, Changbin Du wrote: > > To resolve the issue to debug switchable targets, this serias introduces > > basic infrastructure for gdbstub and enable support for ARM and RISC-V > > targets. > > > > For example, now there is no problem to debug an big-enadian aarch64 target > > on x86 host. > > > > $ qemu-system-aarch64 -gdb tcp::1234,endianness=big ... > > I don't understand why you need all that. > Maybe you aren't using gdb-multiarch? > Nope, my gdb support all architectures. > You can install it or start it via QEMU Debian Docker image: > > $ docker run -it --rm -v /tmp:/tmp -u $UID --network=host \ > registry.gitlab.com/qemu-project/qemu/qemu/debian10 \ > gdb-multiarch -q \ > --ex 'set architecture aarch64' \ > --ex 'set endian big' > The target architecture is assumed to be aarch64 > The target is assumed to be big endian > (gdb) target remote 172.17.0.1:1234 > (gdb) > The gdb has no problem to read endianness and arch info from elf. The problem is how qemu gdbstub handles the byte order it received. Now let's try to debug a big-enadian aarch64 linux kernel. 1) start qemu with '-gdb tcp::1234' $ gdb-multiarch vmlinux (gdb) target remote :1234 Remote debugging using :1234 0x0000004000000000 in ?? () => 0x0000004000000000: Cannot access memory at address 0x4000000000 (gdb) ni Cannot access memory at address 0x4000000000 (gdb) show architecture The target architecture is set to "auto" (currently "aarch64"). (gdb) show endian The target endianness is set automatically (currently big endian). You see it an't work, not to mention adding breakpoints. 2) start qemu with '-gdb tcp::1234,endianness=big' $ gdb-multiarch vmlinux (gdb) target remote :1234 Remote debugging using :1234 0x0000000040000000 in ?? () => 0x0000000040000000: c0 00 00 58 ldr x0, 0x40000018 (gdb) ni 0x0000000040000004 in ?? () => 0x0000000040000004: e1 03 1f aa mov x1, xzr (gdb) b start_kernel Breakpoint 1 at 0xffff800011130ee8 (2 locations) (gdb) c Continuing. Thread 1 hit Breakpoint 1, 0xffff800011130ee8 in start_kernel () => 0xffff800011130ee8 <start_kernel+0>: 5f 24 03 d5 bti c (gdb) bt #0 0xffff800011130ee8 in start_kernel () #1 0xffff8000111303c8 in __primary_switched () at arch/arm64/kernel/head.S:467 Backtrace stopped: previous frame identical to this frame (corrupt stack?) okay, now it works fine. -- Cheers, Changbin Du
next prev parent reply other threads:[~2021-08-23 22:49 UTC|newest] Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-23 14:20 [PATCH 0/3] gdbstub: add support for switchable endianness Changbin Du 2021-08-23 14:20 ` Changbin Du 2021-08-23 14:20 ` [PATCH 1/3] gdbstub: add basic infrastructure to support " Changbin Du 2021-08-23 14:20 ` Changbin Du 2021-08-23 14:20 ` [PATCH 2/3] arm: gdbstub: add support for " Changbin Du 2021-08-23 14:20 ` Changbin Du 2021-08-23 14:20 ` [PATCH 3/3] riscv: " Changbin Du 2021-08-23 14:20 ` Changbin Du 2021-08-23 15:21 ` [PATCH 0/3] " Philippe Mathieu-Daudé 2021-08-23 15:21 ` Philippe Mathieu-Daudé 2021-08-23 15:30 ` Peter Maydell 2021-08-23 15:30 ` Peter Maydell 2021-08-23 15:51 ` Philippe Mathieu-Daudé 2021-08-23 15:51 ` Philippe Mathieu-Daudé 2021-08-23 23:05 ` Changbin Du 2021-08-23 23:05 ` Changbin Du 2021-08-24 9:11 ` Peter Maydell 2021-08-24 9:11 ` Peter Maydell 2021-08-27 14:49 ` Changbin Du 2021-08-27 14:49 ` Changbin Du 2021-08-28 10:51 ` Peter Maydell 2021-08-28 10:51 ` Peter Maydell 2021-08-23 22:47 ` Changbin Du [this message] 2021-08-23 22:47 ` Changbin Du 2021-08-23 15:23 ` Peter Maydell 2021-08-23 15:23 ` Peter Maydell
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210823224756.p7qtttv675gumtri@mail.google.com \ --to=changbin.du@gmail.com \ --cc=alex.bennee@linaro.org \ --cc=alistair.francis@wdc.com \ --cc=bin.meng@windriver.com \ --cc=palmer@dabbelt.com \ --cc=pbonzini@redhat.com \ --cc=peter.maydell@linaro.org \ --cc=philmd@redhat.com \ --cc=qemu-arm@nongnu.org \ --cc=qemu-devel@nongnu.org \ --cc=qemu-riscv@nongnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.