Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
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/


  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