aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2025-12-10Automatic date update in version.inHEADmasterGDB Administrator1-1/+1
2025-12-10[gdb] Fix whitespace in NEWSTom de Vries2-2/+2
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 Vries7-12/+23
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 Vries10-160/+163
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 Vries23-27/+15
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 Vries5-6/+6
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-10x86: Add _bfd_elf_x86_copy_special_section_fieldsH.J. Lu4-96/+18
When Linux/x86 objcopy is used on Solaris binary, it sets EI_OSABI to ELFOSABI_SOLARIS, but it doesn't set the sh_info and sh_link fields of Solaris specific sections. Add _bfd_elf_x86_copy_special_section_fields to return false for Solaris binary to properly set the sh_info and sh_link fields of Solaris specific sections. PR binutils/33705 * elf32-i386.c (elf32_i386_copy_solaris_special_section_fields): Removed. (elf_backend_copy_special_section_fields): Likewise. * elf64-x86-64.c (elf64_x86_64_copy_solaris_special_section_fields): Likewise. (elf_backend_copy_special_section_fields): Likewise. * elfxx-x86.c (_bfd_elf_x86_copy_special_section_fields): New. * elfxx-x86.h (_bfd_elf_x86_copy_special_section_fields): Likewise. (elf_backend_copy_special_section_fields): Likewise. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
2025-12-09Partly rewrite dwarf2_get_symbol_read_needsTom Tromey1-23/+29
This patch partly rewries dwarf2_get_symbol_read_needs. The goal is to simplify it and perhaps make it a little more efficient. With this patch, if an operation simply continues to the next operation in the expression, then no manipulation of ops_to_visit is needed. This avoids excess pushes and pops. Also, visited_ops is changed to be a std::vector<bool> rather than a map. Regression tested on x86-64 Fedora 41.
2025-12-09Implement local-environment commandsTom Tromey4-0/+208
A user noted that "set environment" does not affect things like "shell" or "pipe". This makes some sense, because the environment is per-inferior, and also in the general case it may be affecting a remote machine -- i.e., the settings may not be locally appropriate. This patch adds a new set of "local-environment" commands (set, show, and unset) that affect gdb's own environment. Approved-By: Andrew Burgess <aburgess@redhat.com> Reviewed-By: Eli Zaretskii <eliz@gnu.org> Reviewed-by: Kévin Le Gouguec <legouguec@adacore.com>
2025-12-09Allow NULL to be passed to environment-related functionsTom Tromey1-8/+30
This changse the various environment-related helper functions to accept a NULL environment pointer. This special case means that the function should affect gdb's global environment. Approved-By: Andrew Burgess <aburgess@redhat.com> Reviewed-by: Kévin Le Gouguec <legouguec@adacore.com>
2025-12-09Switch environment-related functions to accept a pointerTom Tromey1-12/+12
This changes the environment-related helper functions to accept a pointer argument rather than a reference. Reviewed-by: Kévin Le Gouguec <legouguec@adacore.com>
2025-12-09Refactor environment-related commandsTom Tromey1-9/+39
This patch refactors the various environment-related commands into functions that accept gdb_environ parameter. Reviewed-by: Kévin Le Gouguec <legouguec@adacore.com>
2025-12-09Rewrite the "show environment" testTom Tromey1-6/+19
In a review early in the year: https://inbox.sourceware.org/gdb-patches/874iz3f4ek.fsf@redhat.com/ Andrew pointed out that a new test I proposed failed with read1. This test was essentially a copy of gdb.base/environ.exp. I couldn't reproduce the read1 problem, but this patch rewrites the one test there that seems like it could possibly fail in this mode. Now it uses line-by-line mode and checks for a certain environment variable appearing in the output. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2025-12-09gdb: remove unused includes from c-lang.{c,h}Simon Marchi3-3/+1
These includes are reported as unused by clangd. Change-Id: Ib5c655d9c96e7a612e223bd87d124f90112acc5a
2025-12-09gdb: remove unused arch-utils.h include from solib-rocm.cSimon Marchi1-1/+0
This include is reported as unused by clangd. Change-Id: I4fe6048d072d445a2133ac17887fe37ccc5e2d90
2025-12-09gdb: adjust guile 2.0 NEWS entrySimon Marchi1-1/+2
I forgot to update the previous patch based on a review comment before pushing. Change-Id: Ib357d105ba67725bfa4772f95d0b658456173be6
2025-12-09gdb: more guile 2.0 support removalSimon Marchi9-125/+9
Commit f14bbacae00d ("gdb/guile: remove support for Guile < 2.2") removed some code supporting Guile 2.0. This patch removes more bits related to Guile 2.0, and adds a NEWS entry. * Remove Guile 2.0 mention from the doc. * Remove HAVE_GUILE_MANUAL_FINALIZATION, assume it is always true. * Remove guile-2.0 from the versions automatically tried by configure. * Remove check for scm_new_smob (HAVE_SCM_NEW_SMOB), assume it is always true. * Remove hack to fill ac_cv_guild_program_name when the .pc file wouldn't specify it. Tested by rebuilding against guile-3.0 and guile-2.2. Change-Id: I2e89bcd4a4429262f4c3a1c74b275768e60f0cb0 Reviewed-by: Thiago Jung Bauermann <thiago.bauermann@linaro.org> Reviewed-By: Eli Zaretskii <eliz@gnu.org>
2025-12-09BFD: Unify relocation error reportingMaciej W. Rozycki5-174/+103
A couple of targets use virtually the same code for error reporting in relocation processing. Merge the copies, removing small discrepancies such as a fallback call to `abort' for NDS32 targets as per PR 17512, and factor out for backends to use.
2025-12-09gdb: fix build error after forward_scope_exit changesAndrew Burgess1-4/+3
After commit: commit 43db8f70d86b2492b79f59342187b919fd58b3dd Date: Thu Oct 23 16:34:20 2025 +0100 gdbsupport: remove undefined behaviour from (forward_)scope_exit A build failure was reported[1] when using clang++. The failure looks like this: CXX aarch64-fbsd-tdep.o In file included from /tmp/src/binutils-gdb/gdb/aarch64-fbsd-tdep.c:22: In file included from /tmp/src/binutils-gdb/gdb/gdbarch.h:28: In file included from /tmp/src/binutils-gdb/gdb/infrun.h:21: In file included from /tmp/src/binutils-gdb/gdb/gdbthread.h:35: /tmp/src/binutils-gdb/gdb/../gdbsupport/forward-scope-exit.h:112:20: error: too many template arguments for class template 'forward_scope_exit_policy' 112 | = scope_exit_base<forward_scope_exit_policy<Function, | ^ 113 | function, Res, Args...>>; | ~~~~~~~~ /tmp/src/binutils-gdb/gdb/../gdbsupport/forward-scope-exit.h:82:8: note: template is declared here 81 | template<typename Function, Function *function, typename Signature> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 82 | struct forward_scope_exit_policy; | ^ The problem is that the forward_scope_exit_policy class expects 3 template arguments, but in forward-scope-exit.h we say: template<typename Function, Function *function, typename Res, typename... Args> using forward_scope_exit = scope_exit_base<forward_scope_exit_policy<Function, function, Res, Args...>>; Which passes 4 template arguments. Fix this by changing the above 'using' like too: template<typename Function, Function *function, typename Signature> using forward_scope_exit = scope_exit_base<forward_scope_exit_policy<Function, function, Signature>>; This now compiles with clang++.
2025-12-09tail recursion in _bfd_elf_link_hide_symbolAlan Modra1-5/+3
We can clear the flags first if no backend hide_symbol function tests or sets them, which is true. * elflink.c (_bfd_elf_link_hide_symbol): Clear flags before calling elf_backend_hide_symbol, to enable tail recursion.
2025-12-09gold testsuite volatile fixesAlan Modra2-3/+4
Avoid these mainline gcc complaints (C23 WG14 n2743). copy_test_relro.cc:42:5: error: ‘++’ expression of ‘volatile’-qualified type is deprecated [-Werror=volatile] icf_test_pr21066.cc:50:55: error: ‘volatile’-qualified parameter is deprecated [-Werror=volatile] * testsuite/copy_test_relro.cc (segv): Avoid gcc warning. * testsuite/icf_test_pr21066.cc (capture_exception_of_type): Likewise.
2025-12-09bitwise operation between different enumeration typesAlan Modra1-8/+2
mips.cc:9478:50: error: bitwise operation between different enumeration types ‘elfcpp::<unnamed enum>’ and ‘elfcpp::<unnamed enum>’ is deprecated [-Werror=deprecated-enum-enum-conversion] 9478 | merged_flags &= ~(elfcpp::EF_MIPS_ARCH | elfcpp::EF_MIPS_MACH); | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ * mips.h: Define all the EF_MIPS values in one enum.
2025-12-09LoongArch: Add support for the ud macro instructionLulu Cai7-10/+85
In the "ud ui5" macro, the value of ui5 must be in the range 0–31. It expands to "amswap.w $rd, $r1, $rj", where ui5 specifies the register number for $rd in the amswap.w instruction, and $rd == $rj. The test case have been adjusted to no longer report errors for illegal operands of the amswap.w instruction. gas/ * config/tc-loongarch.c (check_this_insn_before_appending): No longer check amswap.w. * testsuite/gas/loongarch/illegal-operand.l: Update. * testsuite/gas/loongarch/illegal-operand.s: Update. * testsuite/gas/loongarch/macro_ud.d: New test. * testsuite/gas/loongarch/macro_ud.s: New test. include/ * opcode/loongarch.h: Add new macro for amswap.w. opcodes/ * loongarch-opc.c: Add macro for ud.
2025-12-09lto-wrapper warning noteAlan Modra1-0/+1
Current gcc adds a note to the LTO "using serial compilation" warning. * lib/binutils-common.exp (prune_warnings_extra): Remove lto-wrapper note.
2025-12-09Automatic date update in version.inGDB Administrator1-1/+1
2025-12-09i386: Add GLIBC_ABI_GNU_TLS dependency only if usedH.J. Lu3-1/+17
Add GLIBC_ABI_GNU_TLS version dependency only if ___tls_get_addr is referenced by regular object. bfd/ PR ld/33287 PR ld/33702 * elfxx-x86.c (_bfd_x86_elf_link_check_relocs): Set has_tls_get_addr_call only if referenced by regular object. ld/ PR ld/33287 PR ld/33702 * testsuite/ld-i386/i386.exp: Run PR ld/33702 test. * testsuite/ld-i386/no-tls.c: New file. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
2025-12-09Revert "Re: Add warning message to readelf for local symbols"Alan Modra1-1/+0
This reverts commit f70242a98f91b7f5ec5b375346d8bfa7f9a61c4a. Nick already applied this..
2025-12-09Re: Add warning message to readelf for local symbolsAlan Modra1-0/+1
Limit the warning to ET_REL.
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-08[gdb/testsuite] Simplify gdb.multi/remote-with-running-inferior.expTom de Vries1-9/+10
Simplify regexps in test-case gdb.multi/remote-with-running-inferior.exp using string_to_regexp and {}. While we're at it, also break an overly long line. Tested on x86_64-linux.
2025-12-08[gdb/testsuite] Fix two typos in gdb.multi/remote-with-running-inferior.expTom de Vries1-2/+2
Fix two typos in test-case gdb.multi/remote-with-running-inferior.exp.
2025-12-08[gdb/testsuite] Fix FAIL in gdb.multi/remote-with-running-inferior.expTom de Vries1-1/+2
Occasionally, with test-case gdb.multi/remote-with-running-inferior.exp I run into: ... (gdb) continue^M Continuing.^M ^M Thread 1.1 "remote-with-run" hit Breakpoint 1.1, main () at \ remote-with-running-inferior.c:31^M 31 for (int i = 0; i < 30; ++i)^M (gdb) PASS: $exp: target_non_stop=auto: non_stop=off: \ continue to breakpoint: continue to breakpoint in breakpt bt 1^M (gdb) FAIL: $exp: target_non_stop=auto: non_stop=off: \ check inferior 1 is in breakpt ... The problem is a race between: - inferior 1 reaching main, and - gdb setting a breakpoint on main. If the breakpoint on main is set before inferior 1 reaches main, the breakpoint triggers for inferior 1, which the test-case doesn't expect. Fix this by setting the breakpoint on main only for inferior 2. Tested on x86_64-linux. PR testsuite/33621 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=33621
2025-12-08readelf: Only check for out of bounds local symbols in object filesAlan Modra1-5/+5
2025-12-08Fix typo in aarch64-opc.cNick Clifton1-1/+1
2025-12-08gdbsupport: remove undefined behaviour from (forward_)scope_exitAndrew Burgess2-60/+49
Our implementation of scope_exit and forward_scope_exit make use of the Curiously Recurring Template Pattern (CRTP) to provide the "release" functionality, this is done in the scope_exit_base class in scope-exit.h. The interesting (for this commit) parts of scope_exit_base look like this: template <typename CRTP> class scope_exit_base { public: scope_exit_base () = default; ~scope_exit_base () { if (!m_released) { auto *self = static_cast<CRTP *> (this); self->on_exit (); } } ... snip ... }; By the time ~scope_exit_base is called the destructor for the derived class (called CRTP here) has already been run, which means any data members in the derived class will have also have had their destructors run. As a result of this I believe that casting 'this' to the derived type, and then calling the on_exit method is undefined behaviour, as 'this' can no longer be considered a valid instance of CRTP (the CRTP part has been destructed). In reality, the memory for the derived type is not reclaimed until after ~scope_exit_base has finished, so as long as the data members of the derived type are Plain Old Data (POD), then the current code should be just fine; any data members of the derived class will remain in place, and untouched, until ~scope_exit_base has completed. But still, I don't think we should rely on undefined behaviour. I actually ran into this when, in another series, I tried to reuse scope_exit_base with a class where a data member was not POD, and in this case GDB would crash because my new on_exit function was making use of the non-POD data member after it had been destructed, and resources released. I propose that we move away from the CRTP, and instead flip the class hierarchy. Instead of derived classes like scope_exit inheriting from scope_exit_base, scope_exit_base should inherit from scope_exit. What this means, is that when ~scope_exit_base is called, ~scope_exit will not yet have been run, and the data members of scope_exit will still be valid. To allow the existing names to be used, the plan is that the existing scope_exit and forward_scope_exit classes are renamed to scope_exit_policy and forward_scope_exit_policy. These policy classes will then be injected via a template argument as the base class for scope_exit_base. Finally, we can: template<typename EF> using scope_exit = scope_exit_base<scope_exit_policy<EF>>; which defines the scope_exit type. This type is a drop in replacement with all of GDB's existing code, but avoids the undefined behaviour. We can do something similar with forward_scope_exit. There should be no user visible changes after this commit.
2025-12-08readelf: Do not warn about mapping symbols that extend beyond the end of ↵Nick Clifton1-5/+18
mergeable sections
2025-12-08Revert "gdb/record_full: add ptid entry for history."Guinevere Larsen2-114/+8
This reverts commit b8524f61e398072f83938fb805f377f22198f9a9. It was pushed by mistake with an unrelated patch.
2025-12-08bfd: fix build with C23Guinevere Larsen3-21/+24
Starting in C23, strchr and strrchr will return const char *, if fed a const char *. This means that several files in the BFD directory will fail to build as they are assigning the return of those functions to a char *. Fix this by const-ifying several variables. The only place where that wasn't just that was in targets.c, where a variable was being used in subsequent strrchr invocations to change the underlying string, so a new variable had to be introduced. No user-visible change should happen after this commit.
2025-12-08gdb/record_full: add ptid entry for history.Guinevere Larsen2-8/+114
For record full to work on multi-threaded inferiors, we must know to which thread any given recorded instruction belongs to. This commit adds this as a new entry for each instruction when an inferior is multi-threaded. This way, when replaying the instruction, the subsystem is able to change inferior thread as needed, and avoid SIGILLs when changing stuff Ideally, we would only add the PTID entry when we actually need to switch threads, but that is left as a future improvement. WIP: replaying doesn't automatically change threads yet, but there was an attempt
2025-12-08PR 33676 ld segfaults when using binary input inside NOLOADMagnus Wållberg1-0/+1
The code at ldlang.c:2840-2841 checks if the output BFD is ELF format, then unconditionally uses elf_section_type() on the input section without verifying the input section is also ELF format. This was introduced in commit d87be451e (PR ld/32787) which added special handling for NOLOAD note sections. PR 33676 PR 32787 * ldlang.c (lang_add_section): Check section owner's BFD flavour before using elf_section_type.
2025-12-08PR 33701, abort in byte_get_little_endianAlan Modra1-3/+5
PR 33701 * dwarf.c (process_debug_info): Set debug_info_p NULL when DEBUG_INFO_UNAVAILABLE.
2025-12-08PR 33698 and PR 33700Alan Modra1-3/+3
It is possible for dump_relocations to return on an error from slurp_rela_relocs or slurp_rel_relocs without writing to "all_relocations". In that case an uninitialised r_symbol is passed to free at the end of process_got_section_contents. PR 33698 PR 33700 * readelf.c (update_all_relocations): Zero array. Remove unnecessary casts.
2025-12-08PR 33697, fuzzer segfaultAlan Modra1-5/+3
PR 33697 * readelf.c (process_relocs): Don't segfault on no sections.
2025-12-08GAS: Change S parameter of find_no_app to CHAR* in order to avoid problems ↵Nick Clifton1-3/+11
with STRSTR returning a CONST CHAR* PR 33696
2025-12-08[gdb/build] Add gdb subdirs in gdb.potTom de Vries1-1/+2
I found that gettext strings from gdb/cli are not added to gdb.pot. Fix this by explicitly listing the gdb subdirs in the po/$(PACKAGE).pot rule in gdb/Makefile.in. Tested by doing: ... $ cd build/gdb $ make po/gdb.pot ... $ grep -c cli/ po/gdb.pot 345 ...
2025-12-08[gdb/build] Re-add *.[ch] in gdb.potTom de Vries1-1/+2
In commit 4a40fe05bf0 ("[gdb/build] Handle gdbsupport and gdbserver in gdb.pot"), in order to handle '*.cc' files I did: ... - -name '*.[hc]' -print + -name '*.[hc]' -o -name '*.cc' -print ... but failed to understand that this no longer printed the '*.[hc]' names. Fix this by adding a '-print' for '*.[hc]'. Tested by doing: ... $ cd build/gdb $ make po/gdb.pot ... $ grep -c symtab.c po/gdb.pot 102 ...
2025-12-08elf: Add SHT_SUNW_ctf and SHT_SUNW_symnsortH.J. Lu2-6/+9
On Solaris 11.4, there is SHT_SUNW_symnsort and no SHT_SUNW_symtabnsort. SHT_SUNW_symnsort is defined to 0x6fffffec, which is the same as SHT_SUNW_symtabnsort. There is also SHT_SUNW_ctf. Add SHT_SUNW_ctf and rename SHT_SUNW_symtabnsort to SHT_SUNW_symnsort. Move SHT_SUNW_phname after SHT_SUNW_symnsort. binutils/ * readelf.c (get_solaris_section_type): Add SHT_SUNW_ctf and SHT_SUNW_symnsort. Move SHT_SUNW_phname after SHT_SUNW_symnsort. Remove SHT_SUNW_symtabnsort. include/ * elf/common.h (SHT_SUNW_ctf): New. (SHT_SUNW_symtabnsort): Renamed to ... (SHT_SUNW_symnsort): This. (SHT_SUNW_phname): Moved after SHT_SUNW_symnsort. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
2025-12-08Automatic date update in version.inGDB Administrator1-1/+1
2025-12-07Unconditionally pass is_a_field_of_this in c-exp.yTom Tromey1-6/+2
In a review to a different patch of mine, Simon asked for this change. The idea here is that there's no need to pass null as the "field of this" parameter, as lookup_language_this checks the language anyway. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2025-12-07[gdb/contrib] Check clean files in check-whitespace-pre-commit.shTom de Vries3-20/+53
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