A simple way to reproduce this bug is to: $ gdb /bin/ls (gdb) target remote | gdbserver - /bin/ls (gdb) cont If you examine the output, you'll see something like: Reading target:/usr/lib/debug/lib64//libcap.so.2.48-2.48-4.fc36.x86_64.debug from remote target... That "target:" is leaking through to the remote, which is nonsensical. It comes from this code in find_separate_debug_file: debugfile = target_prefix ? "target:" : ""; debugfile += gdb_sysroot; debugfile += debugdir; (top-gdb) p gdb_sysroot $18 = "target:"
https://sourceware.org/pipermail/gdb-patches/2022-December/194995.html
The master branch has been updated by Tom Tromey <tromey@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=dacf80765d51be840d2efc20bc058643d88ec49f commit dacf80765d51be840d2efc20bc058643d88ec49f Author: Tom Tromey <tromey@adacore.com> Date: Wed Dec 21 13:57:45 2022 -0700 Remove target: prefix from gdb_sysroot in find_separate_debug_file I noticed that, when using gdbserver, gdb might print: Reading /usr/lib/debug/lib64//libcap.so.2.48-2.48-4.fc36.x86_64.debug from remote target... Reading target:/usr/lib/debug/lib64//libcap.so.2.48-2.48-4.fc36.x86_64.debug from remote target... The second line has the "target:" prefix, but from the code it's clear that this string is being passed verbatim to gdbserver -- which seems wrong. I filed PR remote/29929 for this. The problem here is that find_separate_debug_file uses gdb_sysroot without checking to see if it starts with the "target:" prefix. This patch changes this code to be a little more careful. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29929
Fixed.