From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18261 invoked by alias); 14 Jan 2004 18:39:10 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 18253 invoked from network); 14 Jan 2004 18:39:09 -0000 Received: from unknown (HELO localhost.redhat.com) (66.30.197.194) by sources.redhat.com with SMTP; 14 Jan 2004 18:39:09 -0000 Received: by localhost.redhat.com (Postfix, from userid 469) id A16981A440D; Wed, 14 Jan 2004 13:37:32 -0500 (EST) From: Elena Zannoni MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <16389.35948.575905.347881@localhost.redhat.com> Date: Wed, 14 Jan 2004 18:39:00 -0000 To: Andrew Cagney Cc: Elena Zannoni , gdb-patches@sources.redhat.com Subject: Re: [RFA] gcore: ignore no protection segments In-Reply-To: <40043CEB.1020108@gnu.org> References: <16388.9214.960234.384619@localhost.redhat.com> <40043CEB.1020108@gnu.org> X-SW-Source: 2004-01/txt/msg00381.txt.bz2 Andrew Cagney writes: > + > + if (read == 0 && write == 0 && exec == 0) > + { > + if (info_verbose) > + { > + fprintf_filtered (gdb_stdout, "Ignore segment, %lld bytes at > 0x%s\n",+ (long long) size, paddr_nz (vaddr)); > + } > + > + return 0; > + } > > Makes sense. Suggest adding a few details in a comment, and > paddr_d(size) for the length. > > Andrew > OK, I fixed the rest of the file as well. committed. 2004-01-14 Elena Zannoni * gcore.c (gcore_copy_callback): Use paddr_d to print size variable. (gcore_create_callback): Ditto. Skip any memory segment that has no permissions set. Index: gcore.c =================================================================== RCS file: /cvs/src/src/gdb/gcore.c,v retrieving revision 1.13 diff -u -p -r1.13 gcore.c --- gcore.c 11 Oct 2003 01:56:53 -0000 1.13 +++ gcore.c 14 Jan 2004 18:37:17 -0000 @@ -1,6 +1,6 @@ /* Generate a core file for the inferior process. - Copyright 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -314,6 +314,20 @@ gcore_create_callback (CORE_ADDR vaddr, asection *osec; flagword flags = SEC_ALLOC | SEC_HAS_CONTENTS | SEC_LOAD; + /* If the memory segment has no permissions set, ignore it, otherwise + when we later try to access it for read/write, we'll get an error + or jam the kernel. */ + if (read == 0 && write == 0 && exec == 0) + { + if (info_verbose) + { + fprintf_filtered (gdb_stdout, "Ignore segment, %s bytes at 0x%s\n", + paddr_d (size), paddr_nz (vaddr)); + } + + return 0; + } + if (write == 0) { /* See if this region of memory lies inside a known file on disk. @@ -364,8 +378,8 @@ gcore_create_callback (CORE_ADDR vaddr, if (info_verbose) { - fprintf_filtered (gdb_stdout, "Save segment, %lld bytes at 0x%s\n", - (long long) size, paddr_nz (vaddr)); + fprintf_filtered (gdb_stdout, "Save segment, %s bytes at 0x%s\n", + paddr_d (size), paddr_nz (vaddr)); } bfd_set_section_size (obfd, osec, size); @@ -450,8 +464,8 @@ gcore_copy_callback (bfd *obfd, asection if (target_read_memory (bfd_section_vma (obfd, osec), memhunk, size) != 0) - warning ("Memory read failed for corefile section, %ld bytes at 0x%s\n", - (long) size, paddr (bfd_section_vma (obfd, osec))); + warning ("Memory read failed for corefile section, %s bytes at 0x%s\n", + paddr_d (size), paddr (bfd_section_vma (obfd, osec))); if (!bfd_set_section_contents (obfd, osec, memhunk, 0, size)) warning ("Failed to write corefile contents (%s).", bfd_errmsg (bfd_get_error ()));