From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27012 invoked by alias); 18 Dec 2011 10:11:13 -0000 Received: (qmail 26984 invoked by uid 22791); 18 Dec 2011 10:11:11 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,TW_FX,TW_UU X-Spam-Check-By: sourceware.org Received: from mail-vx0-f169.google.com (HELO mail-vx0-f169.google.com) (209.85.220.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 18 Dec 2011 10:10:56 +0000 Received: by vcge1 with SMTP id e1so2926837vcg.0 for ; Sun, 18 Dec 2011 02:10:55 -0800 (PST) MIME-Version: 1.0 Received: by 10.220.149.68 with SMTP id s4mr7342782vcv.43.1324203055632; Sun, 18 Dec 2011 02:10:55 -0800 (PST) Received: by 10.52.34.35 with HTTP; Sun, 18 Dec 2011 02:10:55 -0800 (PST) In-Reply-To: <20111212210328.GA29248@host2.jankratochvil.net> References: <20111212210328.GA29248@host2.jankratochvil.net> Date: Sun, 18 Dec 2011 10:47:00 -0000 Message-ID: Subject: Re: [PATCH 1/1] x86: Add process memory layout to coredump file From: t cheney To: Jan Kratochvil Cc: gdb , linux-kernel@vger.kernel.org, viro@zeniv.linux.org.uk, linux-fsdevel@vger.kernel.org, gdb-patches@sourceware.org, binutils@sourceware.org Content-Type: text/plain; charset=ISO-8859-1 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-12/txt/msg00594.txt.bz2 Thank your suggestion. changed files: ./binutils-2.21.1/binutils/readelf.c ./binutils-2.21.1/include/elf/common.h diff -u ./binutils-2.21.1/binutils/readelf.c ./binutils-2.21.1/binutils/readelf.c.orig --- ./binutils-2.21.1/binutils/readelf.c 2011-12-07 14:54:45.000000000 -0500 +++ ./binutils-2.21.1/binutils/readelf.c.orig 2011-12-07 14:53:43.000000000 -0500 @@ -196,7 +196,6 @@ static int do_notes; static int do_archive_index; static int is_32bit_elf; -static int do_maps; struct group_list { @@ -3072,7 +3071,6 @@ {"dyn-syms", no_argument, 0, OPTION_DYN_SYMS}, {"relocs", no_argument, 0, 'r'}, {"notes", no_argument, 0, 'n'}, - {"maps", no_argument, 0, 'm'}, {"dynamic", no_argument, 0, 'd'}, {"arch-specific", no_argument, 0, 'A'}, {"version-info", no_argument, 0, 'V'}, @@ -3112,7 +3110,6 @@ --symbols An alias for --syms\n\ --dyn-syms Display the dynamic symbol table\n\ -n --notes Display the core notes (if present)\n\ - -m --maps Display the core maps (if present)\n\ -r --relocs Display the relocations (if present)\n\ -u --unwind Display the unwind info (if present)\n\ -d --dynamic Display the dynamic section (if present)\n\ @@ -3231,7 +3228,7 @@ usage (stderr); while ((c = getopt_long - (argc, argv, "ADHINR:SVWacdeghi:lnp:rstuvw::x:m", options, NULL)) != EOF) + (argc, argv, "ADHINR:SVWacdeghi:lnp:rstuvw::x:", options, NULL)) != EOF) { switch (c) { @@ -3354,9 +3351,6 @@ case 'W': do_wide++; break; - case 'm': - do_maps++; - break; default: /* xgettext:c-format */ error (_("Invalid option '-%c'\n"), c); @@ -3370,7 +3364,7 @@ && !do_segments && !do_header && !do_dump && !do_version && !do_histogram && !do_debugging && !do_arch && !do_notes && !do_section_groups && !do_archive_index - && !do_dyn_syms && !do_maps) + && !do_dyn_syms) usage (stderr); else if (argc < 3) { @@ -11855,8 +11849,6 @@ return _("NT_LWPSINFO (lwpsinfo_t structure)"); case NT_WIN32PSTATUS: return _("NT_WIN32PSTATUS (win32_pstatus structure)"); - case NT_MAPS: - return _("NT_MAPS (maps info)"); default: break; } @@ -11970,9 +11962,6 @@ { const char * name = pnote->namesz ? pnote->namedata : "(NONE)"; const char * nt; - - if (do_maps && pnote->type != NT_MAPS) - return 0; if (pnote->namesz == 0) /* If there is no note name, then use the default set of @@ -12000,13 +11989,6 @@ nt = get_note_type (pnote->type); printf (" %s\t\t0x%08lx\t%s\n", name, pnote->descsz, nt); - if (do_maps && pnote->type == NT_MAPS) - { - pnote->descdata[pnote->descsz] = 0; - printf("Maps is following:\n"); - printf("%s\n",pnote->descdata); - } - return 1; } @@ -12093,6 +12075,7 @@ } res &= process_note (& inote); + if (temp != NULL) { free (temp); @@ -12150,7 +12133,7 @@ process_notes (FILE * file) { /* If we have not been asked to display the notes then do nothing. */ - if (! do_notes && !do_maps) + if (! do_notes) return 1; if (elf_header.e_type != ET_CORE) diff -u ./binutils-2.21.1/include/elf/common.h ./binutils-2.21.1/include/elf/common.h.orig --- ./binutils-2.21.1/include/elf/common.h 2011-12-07 14:56:02.000000000 -0500 +++ ./binutils-2.21.1/include/elf/common.h.orig 2011-12-07 14:55:45.000000000 -0500 @@ -518,7 +518,6 @@ #define NT_PRPSINFO 3 /* Contains copy of prpsinfo struct */ #define NT_TASKSTRUCT 4 /* Contains copy of task struct */ #define NT_AUXV 6 /* Contains copy of Elfxx_auxv_t */ -#define NT_MAPS 7 /* Contains copy of maps*/ #define NT_PRXFPREG 0x46e62b7f /* Contains a user_xfpregs_struct; */ /* note name must be "LINUX". */ #define NT_PPC_VMX 0x100 /* PowerPC Altivec/VMX registers */ On 12/13/11, Jan Kratochvil wrote: > On Sun, 11 Dec 2011 15:10:00 +0100, t cheney wrote: >> This patch just add memory layout(same as /proc/pid/maps) to >> coredump file. The layout is appended to corenote segment with >> flag NT_MAPS=7. > > FYI this has been solved by ABRT - Automated Bug-Reporting Tool > https://fedorahosted.org/abrt/ > (it is distro-neutral despite its homepage) > > Core file is there a subdirectory where the core file is just one of the > many > associated files: > /var/spool/abrt/ccpp-*: > abrt_version analyzer architecture cmdline component coredump count > dso_list environ executable hostname kernel maps os_release package > pid pwd reason time uid username uuid var_log_messages > > More info files are being continually added, such as /proc/PID/fd{,info}/ > mapping at the crash dump time etc. You would need to add many more core > file > notes to make the core files useful for later analysis. > > > Regards, > Jan >