From: Gary Benson <gbenson@redhat.com>
To: gdb-patches@sourceware.org
Cc: "Eli Zaretskii" <eliz@gnu.org>, "Pedro Alves" <palves@redhat.com>,
"Doug Evans" <dje@google.com>,
"Iago López Galeiras" <iago@endocode.com>
Subject: [PATCH 0/9 v2] GNU/Linux mount namespace support
Date: Thu, 30 Apr 2015 12:06:00 -0000 [thread overview]
Message-ID: <1430395542-16017-1-git-send-email-gbenson@redhat.com> (raw)
In-Reply-To: <1429186791-6867-1-git-send-email-gbenson@redhat.com>
Hi all,
This series allows GDB and gdbserver on GNU/Linux systems to access
executable and shared library files from mount namespaces other than
the debugger's own without requiring "set sysroot" commands. This
makes attaching to processes in containers as simple as "gdb -p PID"
or "gdbserver --attach PID".
This requires the "move vgdb special case" patch I posted the other
day to fail correctly when built on a system without kernel support
for mount namespaces and then run on a system with support. It's
kind of an edge case, but it's there :) A tree with that patch and
this series is here:
https://github.com/gbenson/binutils-gdb/tree/namespaces
The major change from the first version of this series is that setns
calls are made from a single-threaded helper process that is forked
the first time a setns is required. This should fix the issue that
Iago with multithreaded GDB. (I'd thought I was building with Guile,
but it turns out my system Guile is too old). I used the same code
for both GDB and gdbserver, so Doug your multithreaded gdbserver
should work fine with this code.
Other changes: I removed target_fileio_set_fs and added inferior
arguments to all target fileio functions with filename arguments.
All of the closure-style programming is gone. I used pid_t and
mode_t everywhere I could. I've rewritten and expanded the NEWS
and docs (I'm still not sure they're great, but...)
The patches in this series are as follows:
- Patch 1 (Move make_cleanup_close to common code) is a minor
refactoring required for patch 2. Unchanged from version 1.
- Patch 2 (Introduce nat/linux-namespaces.[ch]) is the actual
namespace entering code, and has been almost completely
rewritten from its equivalent in version 1 of this series.
- Patch 3 (Remove linux_proc_pid_get_ns) replaces the little
bit of namespace-aware code already in GDB with calls to
the new code. Pretty much the same as patch 4 from version
1 of this series.
- Patch 4 (Comment and whitespace changes) is a new patch.
Comments on the various implementations of target fileio
functions duplicated information documented in target.h.
The next patch changes a ton of signatures, so rather than
update comments everywhere this patch replaces all the
duplicated comments with pointers back to the canonical
version.
- Patch 5 (Add "inferior" argument to some target fileio
functions) is a new patch that does exactly what it says.
- Patch 6 (Implement mount namespace support for native Linux
targets) also does exactly what it says. This patch is
almost completely rewritten from its equivalent in version
1 of this series.
- Patch 7 (Implement multiple-filesystem support for remote
targets) implements the vFile:setfs packet in GDB. This
patch is somewhat rewritten from its equivalent in version
1 of this series: the actual remote protocol is the same,
but the implementation is different, passing the inferior
as an argument rather than using target_fileio_set_fs to
set global context. I also added code to handle error
responses from vFile:setfs packets, the lack of which in
version 1 of this series was an oversight on my part; the
GNU/Linux gdbserver implementation never fails, but of
course some other implementation might!
- Patch 8 (Implement vFile:setfs in gdbserver) is also somewhat
rewritten from its equivalent in version 1 of this series: the
remote protocol is the same, but the new linux-namespaces.[ch]
has very a different interface so all that is rewritten.
- Patch 9 (Announce new container-awareness features for GNU/Linux
systems) is a new patch with the main NEWS file entry pulled out
of whatever patch it was in before.
Built and regtested on RHEL 6.6 x86_64.
Ok to commit?
Thanks,
Gary
--
http://gbenson.net/
next prev parent reply other threads:[~2015-04-30 12:05 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-16 12:19 [PATCH 0/7] " Gary Benson
2015-04-16 12:19 ` [PATCH 4/7] Remove linux_proc_pid_get_ns Gary Benson
2015-04-17 4:36 ` Doug Evans
2015-04-17 13:44 ` Gary Benson
2015-04-16 12:20 ` [PATCH 2/7] Introduce target_fileio_set_fs Gary Benson
2015-04-17 3:04 ` Doug Evans
2015-04-17 13:36 ` Gary Benson
2015-04-17 14:21 ` Pedro Alves
2015-04-17 17:28 ` Doug Evans
2015-04-17 17:46 ` Pedro Alves
2015-04-20 11:11 ` Gary Benson
2015-04-16 12:20 ` [PATCH 1/7] Move make_cleanup_close to common code Gary Benson
2015-04-17 2:47 ` Doug Evans
2015-04-16 12:27 ` [PATCH 6/7] Implement multiple-filesystem support for remote targets Gary Benson
2015-04-16 15:12 ` Eli Zaretskii
2015-04-17 15:06 ` Pedro Alves
2015-04-17 16:00 ` Gary Benson
2015-04-17 16:07 ` Pedro Alves
2015-04-17 16:20 ` Gary Benson
2015-04-17 15:31 ` Pedro Alves
2015-04-17 16:01 ` Gary Benson
2015-04-16 12:34 ` [PATCH 3/7] Introduce nat/linux-namespaces.[ch] Gary Benson
2015-04-17 4:26 ` Doug Evans
2015-04-17 13:41 ` Gary Benson
2015-04-17 14:52 ` Pedro Alves
2015-04-17 17:32 ` Doug Evans
2015-04-20 11:12 ` Gary Benson
2015-04-16 12:54 ` [PATCH 7/7] Implement vFile:setfs in gdbserver Gary Benson
2015-04-17 15:30 ` Pedro Alves
2015-04-17 16:47 ` Gary Benson
2015-04-17 16:29 ` Gary Benson
2015-04-17 17:09 ` Pedro Alves
2015-04-16 13:06 ` [PATCH 5/7] Implement multiple-filesystem support for Linux targets Gary Benson
2015-04-17 15:35 ` [PATCH 0/7] GNU/Linux mount namespace support Pedro Alves
2015-04-20 16:49 ` Iago López Galeiras
2015-04-21 7:56 ` Gary Benson
2015-04-30 12:06 ` [PATCH 6/9 v2] Implement mount namespace support for native Linux targets Gary Benson
2015-04-30 16:24 ` Eli Zaretskii
2015-04-30 18:05 ` Gary Benson
2015-05-21 14:59 ` Pedro Alves
2015-05-27 10:16 ` Gary Benson
2015-04-30 12:06 ` [PATCH 5/9 v2] Add "inferior" argument to some target_fileio functions Gary Benson
2015-05-21 14:57 ` Pedro Alves
2015-04-30 12:06 ` Gary Benson [this message]
2015-06-10 14:23 ` [pushed][PATCH 0/9 v2] GNU/Linux mount namespace support Gary Benson
2015-04-30 12:06 ` [PATCH 3/9 v2] Remove linux_proc_pid_get_ns Gary Benson
2015-05-21 14:56 ` Pedro Alves
2015-04-30 12:15 ` [PATCH 4/9 v2] Comment and whitespace changes Gary Benson
2015-05-21 14:57 ` Pedro Alves
2015-04-30 12:41 ` [PATCH 8/9 v2] Implement vFile:setfs in gdbserver Gary Benson
2015-05-21 15:00 ` Pedro Alves
2015-06-09 14:11 ` Gary Benson
2015-06-09 14:23 ` Pedro Alves
2015-06-10 9:01 ` Gary Benson
2015-06-10 9:41 ` Gary Benson
2015-06-10 14:53 ` Pedro Alves
2015-04-30 12:45 ` [PATCH 2/9 v2] Introduce nat/linux-namespaces.[ch] Gary Benson
[not found] ` <20150501000739.740.47967@domU-12-31-39-0A-A0-4F>
2015-05-01 9:28 ` Gary Benson
2015-05-01 13:18 ` Alban Crequy
2015-05-01 20:29 ` Gary Benson
2015-05-06 18:55 ` Alban Crequy
2015-05-07 8:42 ` Gary Benson
2015-05-07 10:39 ` Gary Benson
2015-05-21 14:56 ` Pedro Alves
2015-05-27 10:14 ` Gary Benson
2015-06-11 8:40 ` James Greenhalgh
2015-06-11 11:04 ` Pedro Alves
2015-06-11 12:42 ` [OB PATCH] Use pulongest for printing ssize_t Gary Benson
2015-06-15 15:02 ` [PATCH 2/9 v2] Introduce nat/linux-namespaces.[ch] Michael Eager
2015-06-15 22:12 ` Michael Eager
2015-06-16 8:40 ` Gary Benson
2015-06-16 14:19 ` Michael Eager
2015-06-17 9:51 ` Gary Benson
2016-01-08 10:49 ` Yao Qi
2016-01-11 16:40 ` Gary Benson
2016-01-18 11:44 ` [OB PATCH] Fix gdbserver build failure on targets without fork Gary Benson
2015-04-30 14:12 ` [PATCH 1/9 v2] Move make_cleanup_close to common code Gary Benson
2015-05-21 14:56 ` Pedro Alves
2015-05-27 9:52 ` Gary Benson
2015-04-30 14:12 ` [PATCH 7/9 v2] Implement multiple-filesystem support for remote targets Gary Benson
2015-04-30 17:10 ` Eli Zaretskii
2015-05-21 15:04 ` Pedro Alves
2015-04-30 14:14 ` [PATCH 9/9 v2] Announce new container-awareness features for GNU/Linux systems Gary Benson
2015-04-30 16:20 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1430395542-16017-1-git-send-email-gbenson@redhat.com \
--to=gbenson@redhat.com \
--cc=dje@google.com \
--cc=eliz@gnu.org \
--cc=gdb-patches@sourceware.org \
--cc=iago@endocode.com \
--cc=palves@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox