[Qemu-devel] [PATCH] .gdbinit: load QEMU sub-commands when gdb starts

Stefan Hajnoczi posted 1 patch 6 years, 11 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20170515134753.28412-1-stefanha@redhat.com
Test checkpatch passed
Test docker passed
Test s390x passed
There is a newer version of this series
.gdbinit | 8 ++++++++
1 file changed, 8 insertions(+)
create mode 100644 .gdbinit
[Qemu-devel] [PATCH] .gdbinit: load QEMU sub-commands when gdb starts
Posted by Stefan Hajnoczi 6 years, 11 months ago
The scripts/qemu-gdb.py file is not easily discoverable.  Add a .gdbinit
file so GDB either loads qemu-gdb.py automatically or prints a message
informing the user how to enable them (some systems disable ./.gdbinit
loading for security reasons).

Suggested-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 .gdbinit | 8 ++++++++
 1 file changed, 8 insertions(+)
 create mode 100644 .gdbinit

diff --git a/.gdbinit b/.gdbinit
new file mode 100644
index 0000000..9d322fc
--- /dev/null
+++ b/.gdbinit
@@ -0,0 +1,8 @@
+# GDB may have ./.gdbinit loading disabled by default.  In that case you can
+# follow the instructions it prints.  They boil down to adding the following to
+# your home directory's ~/.gdbinit file:
+#
+#   add-auto-load-safe-path /path/to/qemu/.gdbinit
+
+# Load QEMU-specific sub-commands and settings
+source scripts/qemu-gdb.py
-- 
2.9.3


Re: [Qemu-devel] [PATCH] .gdbinit: load QEMU sub-commands when gdb starts
Posted by Philippe Mathieu-Daudé 6 years, 11 months ago
On 05/15/2017 10:47 AM, Stefan Hajnoczi wrote:
> The scripts/qemu-gdb.py file is not easily discoverable.  Add a .gdbinit
> file so GDB either loads qemu-gdb.py automatically or prints a message
> informing the user how to enable them (some systems disable ./.gdbinit
> loading for security reasons).
>
> Suggested-by: Eric Blake <eblake@redhat.com>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  .gdbinit | 8 ++++++++
>  1 file changed, 8 insertions(+)
>  create mode 100644 .gdbinit
>
> diff --git a/.gdbinit b/.gdbinit
> new file mode 100644
> index 0000000..9d322fc
> --- /dev/null
> +++ b/.gdbinit
> @@ -0,0 +1,8 @@
> +# GDB may have ./.gdbinit loading disabled by default.  In that case you can
> +# follow the instructions it prints.  They boil down to adding the following to
> +# your home directory's ~/.gdbinit file:
> +#
> +#   add-auto-load-safe-path /path/to/qemu/.gdbinit
> +
> +# Load QEMU-specific sub-commands and settings
> +source scripts/qemu-gdb.py
>

Re: [Qemu-devel] [PATCH] .gdbinit: load QEMU sub-commands when gdb starts
Posted by Alex Bennée 6 years, 11 months ago
Stefan Hajnoczi <stefanha@redhat.com> writes:

> The scripts/qemu-gdb.py file is not easily discoverable.  Add a .gdbinit
> file so GDB either loads qemu-gdb.py automatically or prints a message
> informing the user how to enable them (some systems disable ./.gdbinit
> loading for security reasons).
>
> Suggested-by: Eric Blake <eblake@redhat.com>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
>  .gdbinit | 8 ++++++++
>  1 file changed, 8 insertions(+)
>  create mode 100644 .gdbinit
>
> diff --git a/.gdbinit b/.gdbinit
> new file mode 100644
> index 0000000..9d322fc
> --- /dev/null
> +++ b/.gdbinit
> @@ -0,0 +1,8 @@
> +# GDB may have ./.gdbinit loading disabled by default.  In that case you can
> +# follow the instructions it prints.  They boil down to adding the following to
> +# your home directory's ~/.gdbinit file:
> +#
> +#   add-auto-load-safe-path /path/to/qemu/.gdbinit
> +
> +# Load QEMU-specific sub-commands and settings
> +source scripts/qemu-gdb.py

While this works well enough you might as well just comment the helper
script itself. Would this script take precedence over a users
~/.gdbinit? How would it work for out-of-tree builds?

GDB does have a mechanism for autoloading extensions by way of adding
ELF sections:

  https://sourceware.org/gdb/current/onlinedocs/gdb/dotdebug_005fgdb_005fscripts-section.html#dotdebug_005fgdb_005fscripts-section

--
Alex Bennée

Re: [Qemu-devel] [PATCH] .gdbinit: load QEMU sub-commands when gdb starts
Posted by Stefan Hajnoczi 6 years, 11 months ago
On Mon, May 15, 2017 at 03:17:28PM +0100, Alex Bennée wrote:
> 
> Stefan Hajnoczi <stefanha@redhat.com> writes:
> 
> > The scripts/qemu-gdb.py file is not easily discoverable.  Add a .gdbinit
> > file so GDB either loads qemu-gdb.py automatically or prints a message
> > informing the user how to enable them (some systems disable ./.gdbinit
> > loading for security reasons).
> >
> > Suggested-by: Eric Blake <eblake@redhat.com>
> > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> > ---
> >  .gdbinit | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> >  create mode 100644 .gdbinit
> >
> > diff --git a/.gdbinit b/.gdbinit
> > new file mode 100644
> > index 0000000..9d322fc
> > --- /dev/null
> > +++ b/.gdbinit
> > @@ -0,0 +1,8 @@
> > +# GDB may have ./.gdbinit loading disabled by default.  In that case you can
> > +# follow the instructions it prints.  They boil down to adding the following to
> > +# your home directory's ~/.gdbinit file:
> > +#
> > +#   add-auto-load-safe-path /path/to/qemu/.gdbinit
> > +
> > +# Load QEMU-specific sub-commands and settings
> > +source scripts/qemu-gdb.py
> 
> While this works well enough you might as well just comment the helper
> script itself.

People don't know scripts/qemu-gdb.py exists so adding a comment there
doesn't help.

> Would this script take precedence over a users ~/.gdbinit?

All gdbinit files are loaded.  The order in which they are loaded is:

1. System-wide
2. Home directory
3. Current directory

https://sourceware.org/gdb/onlinedocs/gdb/Startup.html#Startup

> How would it work for out-of-tree builds?

./.gdbinit assumes your current working directory is the root of the
QEMU source tree.  If gdb is launched outside this directory then
nothing will happen (e.g. from arm-softmmu/ or from an out-of-tree
build).

I'm not sure if there is a simple way of making ./.gdbinit work from
out-of-tree build directories.

> GDB does have a mechanism for autoloading extensions by way of adding
> ELF sections:
> 
>   https://sourceware.org/gdb/current/onlinedocs/gdb/dotdebug_005fgdb_005fscripts-section.html#dotdebug_005fgdb_005fscripts-section

Hmm...this still requires the user to configure auto-load safe paths and
it hardcodes a path into the QEMU binary (execute in-place vs make
install generally wouldn't work with the same binary).
Re: [Qemu-devel] [PATCH] .gdbinit: load QEMU sub-commands when gdb starts
Posted by Daniel P. Berrange 6 years, 11 months ago
On Tue, May 16, 2017 at 11:45:56AM +0100, Stefan Hajnoczi wrote:
> On Mon, May 15, 2017 at 03:17:28PM +0100, Alex Bennée wrote:
> 
> > How would it work for out-of-tree builds?
> 
> ./.gdbinit assumes your current working directory is the root of the
> QEMU source tree.  If gdb is launched outside this directory then
> nothing will happen (e.g. from arm-softmmu/ or from an out-of-tree
> build).
> 
> I'm not sure if there is a simple way of making ./.gdbinit work from
> out-of-tree build directories.

Just add a Makefile rule, as a pre-requisite of qemu system arch
build, that symlinks $srcdir/.gdbinit into $builddir, or something
like that.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|