From b9c05fc03d313d8505df2c1265481faf6594b62a Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Wed, 8 Feb 2023 16:47:34 +0000 Subject: [PATCH] gdb: remove unnecessary 'dir' commands from gdb-gdb.gdb script While debugging GDB I used 'show directories' and spotted lots of entries that didn't make much sense. Here are all the entries that are in my directories list: /tmp/binutils-gdb/build /tmp/binutils-gdb/build/../../src/gdb /tmp/binutils-gdb/build/../../src/gdb/../bfd /tmp/binutils-gdb/build/../../src/gdb/../libiberty $cdir $cwd Notice the second, third, and fourth entries in this list, these should really be: /tmp/binutils-gdb/build/../src/gdb /tmp/binutils-gdb/build/../src/gdb/../bfd /tmp/binutils-gdb/build/../src/gdb/../libiberty The problem is because I generally run everything from the top level build directory, not the gdb/ sub-directory, thus, I start GDB like: ./gdb/gdb --data-directory ./gdb/data-directory If run GDB under GDB, then I end up loading the gdb/gdb-gdb.gdb script, which contains these lines: dir ../../src/gdb/../libiberty dir ../../src/gdb/../bfd dir ../../src/gdb dir . These commands only make sense when running within the gdb/ sub-directory. However, my debugging experience doesn't seem to be degraded at all, I can still see the GDB source code just fine; which is because the directory list still contains $cdir. The build/gdb/gdb-gdb.gdb script is created from the src/gdb/gdb-gdb.gdb.in template, which includes the automake @srcdir@ markers. The 'dir' commands have mostly been around since the sourceware repository was first created, though this commit 67f0714670383a did reorder some of the 'dir' commands, which would seem to indicate these commands were important to some people, at some time. One possible fix would be to replace @srcdir@ with @abs_srcdir@, this would ensure that the entries added were all valid, no matter the user's current directory when debugging GDB. However... I'd like to propose that we instead remove all the extra directories completely. My hope is that, with more recent tools, the debug information should allow us to correctly find all of the source files without having to add any extra 'dir' entries. Obviously, commit 67f0714670383a does make me a little nervous, but the gdb-gdb.gdb script isn't something a non-maintainer will be using, so I think we can afford to be a little more aggressive here. If it turns out the 'dir' entries are needed then we can add them back, but actually document why they are needed. Plus, when we add them back we will use @abs_srcdir@ instead of @srcdir@. Reviewed-By: Tom Tromey --- gdb/gdb-gdb.gdb.in | 5 ----- 1 file changed, 5 deletions(-) diff --git a/gdb/gdb-gdb.gdb.in b/gdb/gdb-gdb.gdb.in index 8d97c95a70e..b9fd457d069 100644 --- a/gdb/gdb-gdb.gdb.in +++ b/gdb/gdb-gdb.gdb.in @@ -16,11 +16,6 @@ if !$gdb_init_done return end - dir @srcdir@/../libiberty - dir @srcdir@/../bfd - dir @srcdir@ - dir . - # Commands below are not fully compatible with wrapping into an 'if' block. end -- 2.30.2