aboutsummaryrefslogtreecommitdiff
path: root/gdb/contrib
AgeCommit message (Collapse)AuthorFilesLines
2025-12-10[gdb] Fix whitespace in NEWSTom de Vries1-1/+1
Fix this: ... $ empty=$(git hash-object -t tree /dev/null) $ git diff-index --check $empty gdb/NEWS gdb/NEWS:1874: space before tab in indent. + [--basename | --dirname] ... and add the file to the clean list in gdb/contrib/check-whitespace-pre-commit.py. [ I'm not sure if NEWS has an official style. There are no settings for NEWS in .gitattributes, so the whitespace attribute defaults to trailing-space (shorthand for blank-at-eol, blank-at-eof) and space-before-tab. We could require either spaces only (tab-in-indent) in gdb/.gitattributes: ... NEWS whitespace=space-before-tab,tab-in-indent,trailing-space ... or tab style (indent-with-non-tab): ... NEWS whitespace=space-before-tab,indent-with-non-tab,trailing-space ... For tab-in-indent, we get: ... $ git diff-index --check $empty gdb/NEWS | wc -l 228 ... and for indent-with-non-tab instead: ... $ git diff-index --check $empty gdb/NEWS | wc -l 40 ... so the more common style seems to be tab style. But I'm leaving this as is for now. ]
2025-12-10[gdb] Fix whitespace in *.defTom de Vries1-1/+3
Add indent-with-non-tab for *.def in gdb*/.gitattributes. Fix whitespace in the *.def files in gdb*, and add these files to the clean list in gdb/contrib/check-whitespace-pre-commit.py. Tested on x86_64-linux. Approved-By: Tom Tromey <tom@tromey.com>
2025-12-10[gdb] Fix whitespace in *.[ly]Tom de Vries1-1/+1
Add indent-with-non-tab for *.[ly] in gdb/.gitattributes. Fix whitespace in the *.[ly] files in gdb, and add these files to the clean list in gdb/contrib/check-whitespace-pre-commit.py. Tested on x86_64-linux. Approved-By: Tom Tromey <tom@tromey.com>
2025-12-10[gdb] Fix whitespace in *.cTom de Vries1-1/+4
Fix whitespace in the *.c files in gdb, and add these files to the clean list in gdb/contrib/check-whitespace-pre-commit.py. Tested on x86_64-linux. Approved-By: Tom Tromey <tom@tromey.com>
2025-12-10[gdb] Fix whitespace in *.hTom de Vries1-1/+1
Fix whitespace in the *.h files in gdb, and add these files to the clean list in gdb/contrib/check-whitespace-pre-commit.py. Tested on x86_64-linux. Approved-By: Tom Tromey <tom@tromey.com>
2025-12-08[gdb/contrib] Add more clean files in check-whitespace-pre-commit.pyTom de Vries1-6/+1
Add gdbsupport and gdbserver as whitespace-clean in gdb/contrib/check-whitespace-pre-commit.py. Likewise for *.ac and *.m4. Also drop the ignore of configure, that's already taken care of in .gitattributes. Approved-By: Tom Tromey <tom@tromey.com>
2025-12-07[gdb/contrib] Check clean files in check-whitespace-pre-commit.shTom de Vries2-19/+52
The pre-commit check check-whitespace checks diffs. Consequently, we detect something like this: ... $ echo >> gdb/testsuite/lib/gdb.exp $ git commit -a -m trailing-empty-line ... check-whitespace.........................................................Failed - hook id: check-whitespace - duration: 0.01s - exit code: 2 gdb/testsuite/lib/gdb.exp:11717: new blank line at EOF. ... But say we work around the failing check using --no-verify, then we no longer detect it after the commit has succeeded: ... $ git commit -a -m trailing-empty-line --no-verify [detached HEAD e6302105522] trailing-empty-line 1 file changed, 1 insertion(+) $ pre-commit run --all-files check-whitespace check-whitespace.........................................................Passed - hook id: check-whitespace - duration: 0.3s ... Fix this in check-whitespace-pre-commit.sh by distinguishing between clean and other files. Doing so is easier to do in a more advanced scripting language, so rewrite into python. Since a recent commit, gdb/testsuite is clean, so I'm using that as simple classifier for now. For the other files we do what we did before, and check just the staging area: ... $ git --no-pager diff --staged --check "${other[@]}" ... But for clean files, we check the entire file, including staged changes: ... $ empty=$(git hash-object -t tree /dev/null) $ git diff-index --cached --check $empty "${clean[@]}" ... Consequently, we do see: ... $ git commit -a -m trailing-empty-line --no-verify [detached HEAD e6302105522] trailing-empty-line 1 file changed, 1 insertion(+) $ pre-commit run --all-files check-whitespace check-whitespace.........................................................Failed - hook id: check-whitespace - duration: 0.64s - exit code: 2 gdb/testsuite/lib/gdb.exp:11717: new blank line at EOF. ... PR build/33616 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=33616
2025-12-02[gdb] Fix typos in gdb/dwarf2Tom de Vries1-0/+1
Fix the following typos: ... gdb/dwarf2/cooked-index-shard.c:296: re-use ==> reuse gdb/dwarf2/read-gdb-index.c:629: re-use ==> reuse gdb/dwarf2/read.c:2399: re-using ==> reusing gdb/dwarf2/read.c:11692: endianity ==> endianness gdb/dwarf2/read.c:11694: endianity ==> endianness gdb/dwarf2/read.c:11696: endianity ==> endianness gdb/dwarf2/read.c:11709: endianity ==> endianness ... Add aranges to the ignore list. Also replace readin by "read_in". Approved-By: Simon Marchi <simon.marchi@efficios.com>
2025-11-07pre-commit: check for whitespace errors in on all files under gdbJan Vrany1-0/+19
I got a review comment [1] because I forgot to run git diff --staged --check to check commits before submitting. This commit adds a pre-commit hook to do this automatically. Approved-By: Simon Marchi <simon.marchi@efficios.com> [1]: https://inbox.sourceware.org/gdb-patches/c231d267-f541-4774-8005-6d433a9d6e96@simark.ca/
2025-10-30gdb/contrib/dwarf-to-dwarf-assembler.py: remove unused importsSimon Marchi1-2/+0
Remove imports reported as unused by flake8. Change-Id: I1a1e5edab6ecd6ee774cb4bd20bf22b8952898aa Approved-By: Tom Tromey <tom@tromey.com>
2025-10-28Emit language and encoding names from dwarf-to-dwarf-assemblerTom Tromey1-4/+15
This changes dwarf-to-dwarf-assembler to emit DW_LANG_* and DW_ATE_* names when decoding the appropriate attributes. This makes the output a little more readable and a little closer to something we'd check in. Approved-By: Andrew Burgess <aburgess@redhat.com>
2025-10-28Update "usage" line in dwarf-to-dwarf-assemblerTom Tromey1-1/+1
This changes the "usage" text in dwarf-to-dwarf-assembler to be a bit more GNU-like. It also fixes the name used in the message. Approved-By: Andrew Burgess <aburgess@redhat.com>
2025-10-28Fix formatting of attributes in dwarf-to-dwarf-assembler outputTom Tromey1-3/+2
This updates dwarf-to-dwarf-assembler.py to reflect the changes made to how attributes are parsed; see commit c44edec047d (Make location expressions be code in DWARF assembler). Approved-By: Andrew Burgess <aburgess@redhat.com>
2025-10-22[gdb/contrib] Handle unknown attribute in dwarf-to-dwarf-assembler.pyTom de Vries1-1/+5
I ran gdb/contrib/dwarf-to-dwarf-assembler.py on a hello world compiled with gcc 15, and ran into: ... Traceback (most recent call last): File "/data/vries/gdb/./src/gdb/contrib/dwarf-to-dwarf-assembler.py", line 642, in <module> main(sys.argv) ~~~~^^^^^^^^^^ File "/data/vries/gdb/./src/gdb/contrib/dwarf-to-dwarf-assembler.py", line 638, in main generator.generate() ~~~~~~~~~~~~~~~~~~^^ File "/data/vries/gdb/./src/gdb/contrib/dwarf-to-dwarf-assembler.py", line 610, in generate self.generate_die(die, indent_count) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^ File "/data/vries/gdb/./src/gdb/contrib/dwarf-to-dwarf-assembler.py", line 589, in generate_die die_lines = die.format(self.dwarf_parser.offset_to_die, indent_count) File "/data/vries/gdb/./src/gdb/contrib/dwarf-to-dwarf-assembler.py", line 279, in format return "\n".join(self.format_lines(offset_die_lookup, indent_count)) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/data/vries/gdb/./src/gdb/contrib/dwarf-to-dwarf-assembler.py", line 376, in format_lines inner_lines = super().format_lines(offset_die_lookup, indent_count + 1) File "/data/vries/gdb/./src/gdb/contrib/dwarf-to-dwarf-assembler.py", line 251, in format_lines attr_line = attr.format( offset_die_lookup, indent_count=indent_count + 1 ) File "/data/vries/gdb/./src/gdb/contrib/dwarf-to-dwarf-assembler.py", line 199, in format s += self.name + " " ~~~~~~~~~~^~~~~ TypeError: unsupported operand type(s) for +: 'int' and 'str' ... because of trying to print DWARF v6 attributes DW_AT_language_name (0x90) and DW_AT_language_version (0x91). Fix this by printing the number if the name is not known: ... {DW_AT_0x90 3 DW_FORM_data1} {DW_AT_0x91 202311 DW_FORM_data4} ...
2025-10-22[gdb/contrib] Fix errno.EOPNOTSUP in dwarf-to-dwarf-assembler.pyTom de Vries1-1/+1
When running dwarf-to-dwarf-assembler.py without arguments, I run into: ... $ ./gdb/contrib/dwarf-to-dwarf-assembler.py Usage: python ./asm_to_dwarf_assembler.py <path/to/elf/file> Traceback (most recent call last): File "/data/vries/gdb/binutils-gdb.git/./gdb/contrib/dwarf-to-dwarf-assembler.py", line 621, in main filename = argv[1] ~~~~^^^ IndexError: list index out of range During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/data/vries/gdb/binutils-gdb.git/./gdb/contrib/dwarf-to-dwarf-assembler.py", line 642, in <module> main(sys.argv) ~~~~^^^^^^^^^^ File "/data/vries/gdb/binutils-gdb.git/./gdb/contrib/dwarf-to-dwarf-assembler.py", line 625, in main sys.exit(errno.EOPNOTSUP) ^^^^^^^^^^^^^^^ AttributeError: module 'errno' has no attribute 'EOPNOTSUP'. Did you mean: 'EOPNOTSUPP'? ... Fix this by using errno.EOPNOTSUPP.
2025-10-21Create script to convert old tests into Dwarf::assemble calls.William Ferreira1-0/+642
PR testsuite/32261 requests a script that could convert old .S-based tests (that were made before dwarf.exp existed) into the new Dwarf::assemble calls in Tcl. This commit is an initial implementation of such a script. Python was chosen for convenience, and only relies on a single external library. Usage: the script operates not on .S files, but on ELF files with DWARF information. To convert an old test, one must run said test via `make check-gdb TESTS=testname` in their build directory. This will produce, as a side effect, an ELF file the test used as an inferior, at gdb/testsuite/outputs/testname/testname. This ELF file is this script's input. Reliability: not counting the limitations listed below, the script seems functional enough to be worthy of discussion in the mailing list. I have been testing it with different tests that already use Dwarf::assemble, to see if the script can produce a similar call to it. Indeed, in most cases that I've tested (including some more complex ones, marked with an asterisk below) it is able to produce comparable output to the original exp file. Of course, it can't reproduce the complex code *before* the Dwarf::assemble call. Values calculated then are simply inlined. The following .exp files have been tried in this way and their outputs highly resemble the original: - gdb.dwarf2/dynarr-ptr - gdb.dwarf2/void-type - gdb.dwarf2/ada-thick-pointer - gdb.dwarf2/atomic-type - gdb.dwarf2/dw2-entry-points (*) - gdb.dwarf2/main-subprogram The following .exp files work, with caveats addressed in the limitations section below. - gdb.dwarf2/cpp-linkage-name - Works correctly except for one attribute of the form SPECIAL_expr. - gdb.dwarf2/dw2-unusual-field-names - Same as above, with two instances of SPECIAL_expr. - gdb.dwarf2/implptr-optimized-out - Same as above, with two instances of SPECIAL_expr. - gdb.dwarf2/negative-data-member-location - Same as above, with one instance of SPECIAL_expr. The following .exp files FAIL, but that is expected: - gdb.dwarf2/staticvirtual.exp - high_pc and low_pc of subprogram "~S" are hardcoded in the original .exp file, but they get replaced with a get_func_info call. Since the function S::~S is not present in the original, get_func_info will fail. The following .exp files DO NOT WORK with this script: - gdb.dwarf2/cu-no-addrs - `aranges` not supported. - Compile unit high_pc and low_pc hardcoded, prone to user error due to forgetting to replace with variables. - gdb.dwarf2/dw2-inline-stepping - Same as above. - gdb.dwarf2/fission-relative-dwo - `fission` not supported. - gdb.dwarf2/dw2-prologue-end and gdb.dwarf2/dw2-prologue-end-2 - Line tables not supported. Currently the script has the following known limitations: - It does not support line tables. - It does not use $srcfile and other variables in the call to Dwarf::assemble (since it can't know where it is safe to substitute). - It does not support "fission" type DWARFs (in fact I still have no clue what those are). - It does not support cu {label LABEL} {} CUs, mostly because I couldn't find the information using pyelftools. - It sometimes outputs empty CUs at the start and end of the call. This might be a problem with my machine, but I've checked with DWARF dumps and they are indeed in the input ELF files generated by `make check-gdb`. - It does not support attributes with the forms DW_FORM_block* and DW_FORM_exprloc. This is mostly not a concern of the difficulty of the implementation, but of it being an incomplete feature and, thus, more susceptible to users forgetting to correct its mistakes or unfinished values (please see discussion started by Guinevere at comment 23 https://sourceware.org/bugzilla/show_bug.cgi?id=32261#c23). The incompleteness of this feature is easy to demonstrate: any call to gdb_target_symbol, a common tool used in these attributes, needs a symbol name that is erased after compilation. There is no way to guess where that address being referenced in a DW_OP_addr comes from, and it can't be hard coded since it can change depending on the machine compiling it. Please bring up any further shortcomings this script may have with your expectations. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32261 Approved-By: Tom Tromey <tom@tromey.com>
2025-10-20gdb, gdbserver, gdbsupport: trim trailing whitespacesSimon Marchi1-1/+1
I noticed my IDE (VSCode) starting to automatically trim trailing whitespaces on save, despite the setting for it being disabled. I realized that this is because the .editorconfig file now has trim_trailing_whitespace = true for many file types. If we have this EditorConfig setting forcing editors to trim trailing whitespaces, I think it would make sense to clean up trailing whitespaces from our files. Otherwise, people will always get spurious whitespace changes when editing these files. I did a mass cleanup using this command: $ find gdb gdbserver gdbsupport -type f \( \ -name "*.c" -o \ -name "*.h" -o \ -name "*.cc" -o \ -name "*.texi" -o \ -name "*.exp" -o \ -name "*.tcl" -o \ -name "*.py" -o \ -name "*.s" -o \ -name "*.S" -o \ -name "*.asm" -o \ -name "*.awk" -o \ -name "*.ac" -o \ -name "Makefile*" -o \ -name "*.sh" -o \ -name "*.adb" -o \ -name "*.ads" -o \ -name "*.d" -o \ -name "*.go" -o \ -name "*.F90" -o \ -name "*.f90" \ \) -exec sed -ri 's/[ \t]+$//' {} + I then did an autotools regen, because we don't actually want to change the Makefile and Makefile.in files that are generated. Change-Id: I6f91b83e3b8c4dc7d5d51a2ebf60706120efe691
2025-10-16[pre-commit] Add check-gnu-styleTom de Vries1-0/+42
I got a review comment [1] because I forgot to do "space before paren". I realized I forgot to run check_GNU_style.py, a script from the GCC repo, which warns about things like this. [ The python script has been around since 2017 (and an earlier version written in shell script since 2010). ] So for this change in gdb/gdb.c: ... - return gdb_main (&args); + return gdb_main(&args); ... we get: ... $ ./contrib/check_GNU_style.py <(git diff) === ERROR type #1: there should be exactly one space between function name \ and parenthesis (1 error(s)) === gdb/gdb.c:38:17: return gdb_main(&args); ... Add a pre-commit hook to do this automatically. This copies two files from the GCC repo to root-level contrib, and adds a wrapper script gdb/contrib/check-gnu-style-pre-commit.sh (checked with shellcheck). The wrapper script is setup to not fail on violations, so the messages are informational at this point. I'm not sure all checks are 100% applicable to our coding style. The python script check_GNU_style.py has two dependencies: unidiff and termcolor, which users need to install themselves. The check is added at the pre-commit stage. I also considered post-commit, and I'm still not sure what is the better choice. As with all pre-commit checks, if the check is not to your liking, you can use SKIP=check-gnu-style to skip it. In summary, with the new pre-commit check we get: ... $ git commit -a -m "style error" black...............................................(no files to check)Skipped flake8..............................................(no files to check)Skipped isort...............................................(no files to check)Skipped codespell...........................................(no files to check)Skipped check-include-guards................................(no files to check)Skipped check-gnu-style.........................................................Passed - hook id: check-gnu-style - duration: 0.04s === ERROR type #1: there should be exactly one space between function name \ and parenthesis (1 error(s)) === gdb/gdb.c:38:17: return gdb_main(&args); tclint..............................................(no files to check)Skipped black...............................................(no files to check)Skipped flake8..............................................(no files to check)Skipped codespell...........................................(no files to check)Skipped check-include-guards................................(no files to check)Skipped codespell-log...........................................................Passed - hook id: codespell-log - duration: 0.19s tclint...............................................(no files to check)Skipped [master $hex] style error ... Approved-By: Simon Marchi <simon.marchi@efficios.com> [1] https://sourceware.org/pipermail/gdb-patches/2025-September/220983.html
2025-05-21Minor spelling fixes in gdb directoryTom Tromey4-6/+7
I ran codespell on the gdb directory and fixed a number of minor problems. In a couple cases I replaced a "gdb spelling" (e.g., "readin") with an English one ("reading") where it seemed harmless. I also added "Synopsis" as an accepted spelling. gdb is nowhere near codespell-clean. Approved-By: Tom de Vries <tdevries@suse.de>
2025-05-20[gdb/testsuite] Fix gdbsever typoTom de Vries2-0/+2
I noticed a typo in the testsuite, twice: gdbsever. Fix these. Codespell doesn't detect it, so add a new file gdb/contrib/codespell-dictionary.txt that contains a gdbsever->gdbserver entry, and update gdb/contrib/setup.cfg to use it. Approved-By: Tom Tromey <tom@tromey.com>
2025-04-29[gdb/contrib] Add script to license check new filesKeith Seitz1-0/+149
While reading through gdb-patches backlog after a return from PTO, I noticed that a newly added file was licensed with "MIT", and that license was not listed in Fedora's gdb.spec file. [Fedora no longer supports "effective" licenses.] That lead me to this simple script which generates a list of all the newly added files between two given commits and scans these files for licenses. Example usage: bash$ cd /path/to/binutils-gdb/gdb bash$ ./contrib/license-check-new-files.sh -s gdb-15-branchpoint gdb-16-branchpoint Scanning directories gdb*/... gdb/contrib/common-misspellings.txt: no longer in repo? gdb/contrib/spellcheck.sh: no longer in repo? gdbsupport/unordered_dense.h: MIT I don't think anything in here is Fedora- or RPM-specific, so I'd like to submit this for consideration for inclusion in contrib/. I believe other distros may find it useful. Approved-By: Tom Tromey <tom@tromey.com>
2025-04-26[gdb/contrib] Add codespell:ignore-begin/ignore-end (disabled)Tom de Vries1-0/+9
It would be useful to tell codespell to ignore blocks of code. A feature ignore-multiline-regex exists, which can be used to implement this: ... $ codespell --ignore-multiline-regex \ 'codespell:ignore-begin.*codespell:ignore-end' ... Unfortunately there's a bug in codespell where using -w in combination with --ignore-multiline-regex drops all newlines in the updated file. In absence of a fix, commit this solution disabled, to locally document the current state of this feature.
2025-04-25[pre-commit] Add codespell-log commit-msg hookTom de Vries1-0/+95
Now that we're using codespell to check spelling in gdb files, can we use codespell to bring this spelling warning: ... $ echo usuable | codespell - 1: usuable usuable ==> usable ... to: ... $ git commit -a -m "Usuable stuff" ... ? First, let's look at a straightforward commit-msg hook implementation: ... - id: codespell name: codespell-commit-msg verbose: true always_run: true stages: [commit-msg] ... installed using: ... $ pre-commit install -t commit-msg ... When trying the commit, we get: ... $ echo "/* bla */" >> gdb/gdb.c $ git commit -a -m "Usuable stuff" black................................................(no files to check)Skipped flake8...............................................(no files to check)Skipped isort................................................(no files to check)Skipped codespell............................................(no files to check)Skipped check-include-guards.................................(no files to check)Skipped black................................................(no files to check)Skipped flake8...............................................(no files to check)Skipped codespell............................................(no files to check)Skipped codespell-commit-msg.....................................................Failed - hook id: codespell - duration: 0.06s - exit code: 65 .git/COMMIT_EDITMSG:1: Usuable ==> Usable check-include-guards.................................(no files to check)Skipped $ ... The commit was aborted, but the commit message is still there: ... $ cat .git/COMMIT_EDITMSG Usuable stuff ... We can retry and edit the commit message to clean up the typo: ... $ git commit -e -F .git/COMMIT_EDITMSG -a ... but it's a bit cumbersome. Furthermore, say we fix a typo and want to document this in the commit log, and do: ... $ git commit -m "Fixed typo: useable -> usable" -a ... This commit cannot succeed, unless we add a codespell ignore tag, which feels like taking it too far. Both these problems can be addressed by setting things up in such a way that the commit always succeeds, and codespell output is shown as a hint. Ideally, we'd tell to pre-commit to implement this using some setting, but there doesn't seem to be one. So we use some indirection. Instead of using native codespell, use a local hook that calls a script gdb/contrib/codespell-log.sh, which calls pre-commit, which calls codespell. Using this approach, we get: ... $ echo "/* bla */" >> gdb/gdb.c $ git commit -a -m "Usuable stuff" black................................................(no files to check)Skipped flake8...............................................(no files to check)Skipped isort................................................(no files to check)Skipped codespell............................................(no files to check)Skipped check-include-guards.................................(no files to check)Skipped black................................................(no files to check)Skipped flake8...............................................(no files to check)Skipped codespell............................................(no files to check)Skipped check-include-guards.................................(no files to check)Skipped codespell-log............................................................Passed - hook id: codespell-log - duration: 0.18s codespell-log-internal...................................................Failed - hook id: codespell - exit code: 65 .git/COMMIT_EDITMSG:1: Usuable ==> Usable [codespell/codespell-log-2 d081bd25a40] Usuable stuff 1 file changed, 1 insertion(+) $ ... This is obviously convoluted, but it works. Perhaps we can propose a pre-commit improvement (always_pass) and simplify this eventually. Checked new script codespell-log.sh with shell-check. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2025-04-22Add "-5" flag to cc-with-tweaksTom Tromey1-1/+4
This adds a "-5" flag to cc-with-tweaks, mirroring dwz's "-5" flag, and also adds a new cc-with-dwz-5 target board. The "-5" flag tells dwz to use the DWARF 5 .debug_sup section in multi-file mode. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32808
2025-04-08Update copyright dates to include 2025Tom Tromey10-10/+10
This updates the copyright headers to include 2025. I did this by running gdb/copyright.py and then manually modifying a few files as noted by the script. Approved-By: Eli Zaretskii <eliz@gnu.org>
2025-04-03Make gdb/guile codespell-cleanTom Tromey1-0/+3
This cleans up the last codespell reports in the Guile directory and adds gdb/guile to pre-commit. It also tells codespell to ignore URLs. I think this is warranted because many URLs don't really contain words per se; and furthermore if any URL-checking is needed at all, it would be for liveness and not spelling. Also I was wondering why the codespell config is in contrib and not gdb/setup.cfg. Approved-By: Tom de Vries <tdevries@suse.de>
2025-04-01[gdb/contrib] Support gdb in codespell section of setup.cfgTom de Vries1-1/+1
Add support for the gdb dir in the codespell section of gdb/contrib/setup.cfg, specifically adding files in the skip line. This allows us to run codespell from the command line on the gdb dir: ... $ codespell --config gdb/contrib/setup.cfg gdb 2>/dev/null | wc -l 1665 ... without running into warnings in generated files. Approved-By: Tom Tromey <tom@tromey.com>
2025-03-31[gdb/contrib] Remove spellcheck.shTom de Vries2-566/+0
Now that we've started using codespell, remove gdb/contrib/spellcheck.sh and associated file gdb/contrib/common-misspellings.txt. Approved-By: Tom Tromey <tom@tromey.com>
2025-03-31[pre-commit] Add codespell hookTom de Vries1-0/+6
Add a pre-commit codespell hook for directories gdbsupport and gdbserver, which are codespell-clean: ... $ pre-commit run codespell --all-files codespell................................................................Passed ... A non-trivial question is where the codespell configuration goes. Currently we have codespell sections in gdbsupport/setup.cfg and gdbserver/setup.cfg, but codespell doesn't automatically use those because the pre-commit hook runs codespell at the root of the repository. A solution would be to replace those 2 setup.cfg files with a setup.cfg in the root of the repository. Not ideal because generally we try to avoid adding files related to subdirectories at the root. Another solution would be to add two codespell hooks, one using --config gdbsupport/setup.cfg and one using --config gdbserver/setup.cfg, and add a third one once we start supporting gdb. Not ideal because it creates duplication, but certainly possible. I went with the following solution: a setup.cfg file in gdb/contrib (alongside codespell-ignore-words.txt) which is used for both gdbserver and gdbsupport. So, what can this new setup do for us? Let's demonstrate by simulating a typo: ... $ echo "/* aways */" >> gdbsupport/agent.cc ... We can check unstaged changes before committing: ... $ pre-commit run codespell --all-files codespell................................................................Failed - hook id: codespell - exit code: 65 gdbsupport/agent.cc:282: aways ==> always, away ... Likewise, staged changes (no need for the --all-files): ... $ git add gdbsupport/agent.cc $ pre-commit run codespell codespell................................................................Failed - hook id: codespell - exit code: 65 gdbsupport/agent.cc:282: aways ==> always, away ... Or we can try to commit, and run into the codespell failure: ... $ git commit -a black................................................(no files to check)Skipped flake8...............................................(no files to check)Skipped isort................................................(no files to check)Skipped codespell................................................................Failed - hook id: codespell - exit code: 65 gdbsupport/agent.cc:282: aways ==> always, away check-include-guards.................................(no files to check)Skipped ... which makes the commit fail. Approved-By: Tom Tromey <tom@tromey.com>
2025-03-27[gdb/contrib] Drop two words from codespell-ignore-words.txtTom de Vries1-2/+0
Tom Tromey mentioned [1] that the words "invokable" and "useable" present in codespell-ignore-words.txt should be dropped. Do so and fix the following typos: ... $ codespell --config gdbsupport/setup.cfg gdbsupport gdbsupport/common-debug.h:218: invokable ==> invocable gdbsupport/event-loop.cc:84: useable ==> usable ... Approved-By: Tom Tromey <tom@tromey.com> [1] https://sourceware.org/pipermail/gdb-patches/2025-March/216584.html
2025-03-27[gdb/contrib] Add SME to codespell-ignore-words.txtTom de Vries1-0/+1
Ignore the following codespell detection: ... $ codespell --config gdbserver/setup.cfg gdbserver gdbserver/linux-aarch64-low.cc:827: SME ==> SAME, SEME, SOME, SMS ... by adding SME to codespell-ignore-words.txt.
2025-03-19gdb-add-index: quote PKGVERSIONSam James1-2/+2
In Gentoo, we configure our gdb with `--with-pkgversion=` with "Gentoo VERSION XXXX" where XXX depends on patching (not that we patch gdb really these days) or vanilla. Since 71f193a5c1cb02dcde6ac160cdab88e9725862bb, this goes wrong, yielding ``` /usr/bin/gdb-add-index: 25: Syntax error: "(" unexpected ``` with lines 25-26 being: ``` PKGVERSION=(Gentoo 9999 vanilla) VERSION=17.0.50.20250319-git ``` Quote both assignments (PKGVERSION by necessity, VERSION for consistency or symmetry). Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32325
2025-03-17gdb-add-index: add --help and --version optionsAndrew Burgess1-4/+61
Update the gdb-add-index script to offer --help and --version options. The script currently accepts the argument '-dwarf-5' with a single leading '-'. As two '--' is more common for long options, the preferred argument form is now '--dwarf-5', the docs have been updated, and the new help text uses this form. For backward compatibility, the old '-dwarf-5' form is still accepted. The new arguments are '--help' or '-h', but I also accept '-help' for consistency with '-dwarf-5'. And likewise for the version argument. Handling of the gdb-add-index script is done basically the same as for gcore and gstack; we use config.status to create a .in file within the build directory, which is then processed by the Makefile to create the final script. The difference with gdb-add-index is that I left the original script as gdb/contrib/gdb-add-index.sh rather than renaming it to something like gdb/contrib/gdb-add-index-1.in, which is how gcore and gstack are handled (though they are not in the contrib directory). The reason for this is that the contrib/cc-with-tweaks.sh script looks for gdb-add-index.sh within the gdb/contrib/ source directory. As the only reason we process gdb-add-index.sh into the build directory is to support the PKGVERSION and VERSION variables, allowing cc-with-tweaks to continue using the unprocessed version seems harmless, and avoids having to change cc-with-tweaks.sh at all. I tested that I can still run tests using the cc-with-gdb-index target board, and that the installed gdb-add-index script correctly shows a version number when asked. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32325 Reviewed-By: Eli Zaretskii <eliz@gnu.org> Approved-By: Tom Tromey <tom@tromey.com>
2025-03-06[gdbsupport] Add codespell section in setup.cfgTom de Vries1-0/+3
When running codespell on gdbsupport, we get: ... $ codespell gdbsupport gdbsupport/common-debug.h:218: invokable ==> invocable gdbsupport/osabi.h:51: configury ==> configurable gdbsupport/ChangeLog-2020-2021:344: ro ==> to, row, rob, rod, roe, rot gdbsupport/ChangeLog-2020-2021:356: contaning ==> containing gdbsupport/common.m4:19: configury ==> configurable gdbsupport/Makefile.am:97: configury ==> configurable gdbsupport/Makefile.in:811: configury ==> configurable gdbsupport/event-loop.cc:84: useable ==> usable gdbsupport/configure:15904: assigment ==> assignment ... Some of these files we want to skip in a spell check, because they're generated. We also want to skip ChangeLogs, we don't actively maintain those. Add a file gdbsupport/setup.cfg with a codespell section, that skips those files. The choice for setup.cfg (rather than say .codespellrc) comes from the presence of gdb/setup.cfg. That leaves invokable, configury and useable. I think configury is a common expression in our context, and for invokable and useable I don't manage to find out whether they really need rewriting, so I'd rather leave them alone for now. Add these to a file gdb/contrib/codespell-ignore-words.txt, and use the file in gdbsupport/setup.cfg. This makes the directory codespell clean: ... $ codespell --config gdbsupport/setup.cfg gdbsupport $ ... Because codespell seems to interpret filenames relative to the working directory rather than relative to the config file, and the filename used in gdbsupport/setup.cfg is gdb/contrib/codespell-ignore-words.txt, this simple invocation doesn't work: ... $ cd gdbsupport $ codespell ... because codespell can't find gdbsupport/gdb/contrib/codespell-ignore-words.txt. We could fix this by using ../gdb/contrib/codespell-ignore-words.txt instead, but likewise that breaks this invocation: ... $ codespell --config gdbsupport/setup.cfg gdbsupport ... I can't decide which one is worse, so I'm sticking with gdb/contrib/codespell-ignore-words.txt for now. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2024-11-23[gdb/contrib] Add two words to common-misspellings.txtTom de Vries1-0/+2
While reviewing changes generated by spellcheck.sh for directory sim, I noticed two more misspellings: ... arrithemetic->arithmetic electricaly->electrically ... Add them to common-misspellings.txt, and fix them in directory sim. Tested by rebuilding on x86_64-linux. Approved-By: Tom Tromey <tom@tromey.com>
2024-11-23[gdb/contrib] Add two rules in common-misspellings.txtTom de Vries2-1/+3
Eli mentioned [1] that given that we use US English spelling in our documentation, we should use "behavior" instead of "behaviour". In wikipedia-common-misspellings.txt there's a rule: ... behavour->behavior, behaviour ... which leaves this as a choice. Add an overriding rule to hardcode the choice to common-misspellings.txt: ... behavour->behavior ... and add a rule to rewrite behaviour into behavior: ... behaviour->behavior ... and re-run spellcheck.sh on gdb*. Tested on x86_64-linux. [1] https://sourceware.org/pipermail/gdb-patches/2024-November/213371.html
2024-11-19[gdb/contrib] Fix shellcheck warnings in spellcheck.shTom de Vries1-7/+7
Fix shellcheck warnings in spellcheck.sh, found using shellcheck v0.10.0. Ran shellcheck v0.10.0 (on a system with shellcheck version 0.8.0) using this command from an RFC patch [1]: ... $ ./gdb/contrib/pre-commit-shellcheck.sh ./gdb/contrib/spellcheck.sh ... Tested on x86_64-linux [1] https://sourceware.org/pipermail/gdb-patches/2024-November/213400.html
2024-11-18[gdb/contrib] Fix spellcheck.sh for bash < 5.1Tom de Vries1-2/+44
Since commit 5cb0406bb64 ("[gdb/contrib] Handle capitalized words in spellcheck.sh"), spellcheck.sh uses '${pat@u}' which is available starting bash 5.1, and consequently the script breaks with bash 4.4. Fix this by checking for the bash version, and using an alternative implementation for bash < 5.1. Tested on x86_64-linux.
2024-11-18[gdb/contrib] Add spellcheck.sh --print-dictionaryTom de Vries1-0/+28
Add an option --print-dictionary to spellcheck.sh that allows us to inspect the effective dictionary. Verified with shellcheck.
2024-11-18[gdb/contrib] Allow thru in spellcheck.shTom de Vries2-5/+37
Eli mentioned that "thru" is a widely-accepted shorthand [1]. Skip the "thru->through" rule by adding an overriding identity rule "thru->thru". Verified with shellcheck. [1] https://sourceware.org/pipermail/gdb-patches/2024-November/213380.html
2024-11-13[gdb/contrib] Handle capitalized words in spellcheck.shTom de Vries1-6/+19
The dictionary contains a few entries with capital letters: ... $ grep -E '[A-Z]' .git/wikipedia-common-misspellings.txt | wc -l 143 ... but they don't look too interesting in the gdb context (for instance, Habsbourg->Habsburg), so filter them out. That leaves us with entries looking only like "foobat->foobar", so add handling of capitalized words, such that we also rewrite "Foobat" to "Foobar". Tested on aarch64-linux. Verified with shellcheck. Approved-by: Kevin Buettner <kevinb@redhat.com>
2024-11-13[gdb/contrib] Add "doens't->doesn't" to common-misspellings.txtTom de Vries1-0/+1
Add "doens't->doesn't" to gdb/contrib/common-misspellings.txt, and run gdb/contrib/spellcheck.sh to fix this in a few files. Tested on x86_64-linux. Approved-by: Kevin Buettner <kevinb@redhat.com>
2024-11-13[gdb/contrib] Handle double quotes in spellcheck.shTom de Vries1-0/+2
Add handling of double quotes in gdb/contrib/spellcheck.sh, and fix the following typos: ... inheritence -> inheritance psuedo -> pseudo succeded -> succeeded ... Tested on x86_64-linux. Approved-by: Kevin Buettner <kevinb@redhat.com>
2024-11-13[gdb/contrib] Handle parentheses in spellcheck.shTom de Vries1-9/+32
Currently, text adjacent to parentheses is not spell-checked: ... $ cat tmp.txt (upto) $ ./gdb/contrib/spellcheck.sh tmp.txt $ ... Add handling of parentheses, such that we get: ... $ ./gdb/contrib/spellcheck.sh tmp.txt upto -> up to $ ... Rerun spellcheck.sh, resulting in a few "thru->through" replacements. Tested on x86_64-linux. Approved-by: Kevin Buettner <kevinb@redhat.com>
2024-10-21[gdb/contrib] Handle dot in spellcheck.shTom de Vries1-31/+45
Add handling of '.' in gdb/contrib/spellcheck.sh. While we're at, simplify the sed invocation by using a single s command instead of 3 s commands. Also introduce sed_join and grep_join. Fix the following common misspellings: ... bandwith -> bandwidth emmitted -> emitted immediatly -> immediately suprize -> surprise thru -> through transfered -> transferred ... Verified with shellcheck.
2024-10-21[gdb/contrib] Speed up spellcheck.sh --checkTom de Vries1-15/+34
Speed up gdb/contrib/shellcheck.sh by caching the grep pattern. Without cached grep pattern: ... $ time ./gdb/contrib/spellcheck.sh --check gdb/gdb.c real 0m2,750s user 0m0,013s sys 0m0,032s ... and with cached grep pattern: ... $ time ./gdb/contrib/spellcheck.sh --check gdb/gdb.c real 0m0,192s user 0m0,022s sys 0m0,024s ... Tested on aarch64-linux.
2024-10-21[gdb/contrib] Add spellcheck.sh --checkTom de Vries1-1/+18
Add a new option --check to gdb/contrib/spellcheck.sh, to do the spell check and bail out ASAP with an exit code of 1 if misspelled words were found, or 0 otherwise. Verified with shellcheck.
2024-10-08[gdb/contrib] Fix "sofar->so far" misspellingTom de Vries1-0/+1
I forgot to follow up on a review comment and fix the "sofar->so far" misspelling [1]. Fix this by adding it to gdb/contrib/common-misspellings.txt. Tested on x86_64-linux. [1] https://sourceware.org/pipermail/gdb-patches/2024-September/211894.html
2024-10-08[gdb/contrib] Add more separators in spellcheck.shTom de Vries2-3/+47
Add two more separators in spellcheck.sh: colon and comma. Doing so triggers the "inbetween->between" rule, which gives an incorrect result. Override this with "inbetween->between, in between, in-between" [1], in a new file gdb/contrib/common-misspellings.txt. Fix the following common misspellings: ... everytime -> every time sucess -> success thru -> through transfered -> transferred inbetween -> between, in between, in-between ... Verified with spellcheck.sh. Tested on x86_64-linux. [1] https://www.grammarly.com/blog/commonly-confused-words/in-between-or-inbetween/
2024-10-08[gdb/contrib] Factor out grep_or and sed_or in spellcheck.shTom de Vries1-2/+41
While trying to add more separators here: ... # Separators: space, slash, tab. grep_separator=" |/| " sed_separator=" \|/\|\t" ... I mistakingly used "|" instead of "\|" in sed_separator. Factor out new variables grep_or and sed_or, and construct the grep_separator and sed_separator variables by joining the elements of a list using grep_or and sed_or. Verified with shellcheck, and tested by rerunning on x86_64-linux. Reviewed-By: Alexandra Petlanova Hajkova <ahajkova@redhat.com>