Message ID | 20170515134753.28412-1-stefanha@redhat.com |
---|---|
State | New |
Headers | show |
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 >
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
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).
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
Stefan Hajnoczi <stefanha@redhat.com> writes: > 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. Worth a try: ln -s $(SRC_PATH)/.gdbinit If it works, we could have make create the link automatically. [...]
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
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