From patchwork Wed Nov 29 10:55:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergio Lopez X-Patchwork-Id: 24591 Received: (qmail 122784 invoked by alias); 29 Nov 2017 10:55:56 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 122688 invoked by uid 89); 29 Nov 2017 10:55:56 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.7 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LAZY_DOMAIN_SECURITY, KB_WAM_FROM_NAME_SINGLEWORD, SPF_HELO_PASS, T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy= X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 29 Nov 2017 10:55:54 +0000 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B7D7813A42 for ; Wed, 29 Nov 2017 10:55:53 +0000 (UTC) Received: from dritchie.redhat.com (ovpn-117-26.ams2.redhat.com [10.36.117.26]) by smtp.corp.redhat.com (Postfix) with ESMTP id D91955D6A3; Wed, 29 Nov 2017 10:55:52 +0000 (UTC) From: Sergio Lopez To: gdb-patches@sourceware.org Cc: Sergio Lopez Subject: [PATCH v2 1/4] Implement 'set dump-excluded-mappings' command Date: Wed, 29 Nov 2017 11:55:40 +0100 Message-Id: <20171129105543.19236-2-slp@redhat.com> In-Reply-To: <20171129105543.19236-1-slp@redhat.com> References: <20171129105543.19236-1-slp@redhat.com> Commit df8411da087dc05481926f4c4a82deabc5bc3859 implemented support for checking /proc/PID/coredump_filter, and also changed gcore behavior to unconditionally honor the VM_DONTDUMP flag, preventing sections marked as such for being dumped into the core file. This patch implements the 'set dump-excluded-mappings' command for instructing gdb to ignore the VM_DONTDUMP flag. Combined with 'set use-coredump-filter', this allows the user to restore the old behavior, dumping all sections (except the ones marked as IO) unconditionally. gdb/Changelog: 2017-11-29 Sergio Lopez * linux-tdep.c (dump_excluded_mappings): New variable. (dump_mapping_p): Use dump_excluded_mappings variable. (_initialize_linux_tdep): New command 'set dump_excluded_mappings'. --- gdb/linux-tdep.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c index 24237b8d39..e458398137 100644 --- a/gdb/linux-tdep.c +++ b/gdb/linux-tdep.c @@ -93,6 +93,12 @@ struct smaps_vmflags static int use_coredump_filter = 1; +/* Whether the value of smaps_vmflags->exclude_coredump should be + ignored, including mappings marked with the VM_DONTDUMP flag in + the dump. */ + +static int dump_excluded_mappings = 0; + /* This enum represents the signals' numbers on a generic architecture running the Linux kernel. The definition of "generic" comes from the file , from the Linux kernel @@ -655,7 +661,7 @@ dump_mapping_p (filter_flags filterflags, const struct smaps_vmflags *v, return 0; /* Check if we should exclude this mapping. */ - if (v->exclude_coredump) + if (!dump_excluded_mappings && v->exclude_coredump) return 0; /* Update our notion of whether this mapping is shared or @@ -2469,6 +2475,17 @@ show_use_coredump_filter (struct ui_file *file, int from_tty, " corefiles is %s.\n"), value); } +/* Display whether the gcore command is dumping mappings marked with + the VM_DONTDUMP flag. */ + +static void +show_dump_excluded_mappings (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, _("Dumping of mappings marked with the VM_DONTDUMP" + " flag is %s.\n"), value); +} + /* To be called from the various GDB_OSABI_LINUX handlers for the various GNU/Linux architectures and machine types. */ @@ -2517,4 +2534,16 @@ of /proc/PID/coredump_filter when generating the corefile. For more information about this file, refer to the manpage of core(5)."), NULL, show_use_coredump_filter, &setlist, &showlist); + + add_setshow_boolean_cmd ("dump-excluded-mappings", class_files, + &dump_excluded_mappings, _("\ +Set whether gcore should dump mappings marked with the VM_DONTDUMP flag."), + _("\ +Show whether gcore should dump mappings marked with the VM_DONTDUMP flag."), + _("\ +Use this command to set whether gcore should dump mappings marked with the\n\ +VM_DONTDUMP flag (\"dd\" in /proc/PID/smaps) when generating the corefile. For\n\ +more information about this file, refer to the manpage of proc(5) and core(5)."), + NULL, show_dump_excluded_mappings, + &setlist, &showlist); }