This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Support gzip compressed exec and core files in gdb
- From: Michael Eager <eager at eagerm dot com>
- To: Cary Coutant <ccoutant at google dot com>
- Cc: "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>, binutils <binutils at sourceware dot org>
- Date: Wed, 11 Mar 2015 13:12:48 -0700
- Subject: Re: [PATCH] Support gzip compressed exec and core files in gdb
- Authentication-results: sourceware.org; auth=none
- References: <54FF77D6 dot 7010400 at eagerm dot com> <CAHACq4qSueTKEv++yN_AetU2oCTEiLmZLMCuJiJ6nPw8dHsO2g at mail dot gmail dot com>
On 03/11/15 11:24, Cary Coutant wrote:
How will this affect split DWARF?
If you uncompress a foo.gz binary, and the binary has relative paths
to .dwo files, will GDB look for the .dwo files relative to the
original binary, or to the uncompressed binary?
GDB should look for .dwo files relative to the original file. The
uncompressed file is essentially hidden.
If you can send me a test case creating .dwo files, I'll make sure
that it works.
When it looks for a .dwp file, will it look for foo.dwp or foo.gz.dwp,
and will it look in the same directory as the original, or in /tmp?
If foo.dwp is also compressed, will it uncompress that?
The file search for exec and core are unchanged, so gdb will find
whatever file it is asked to look for, using the current search path,
exactly as it does now. No file names are modified.
There's specific code to uncompress exec and core files. I might
need to add code for dwp.
I originally looked at doing decompression in BFD, so that it would
simply be transparent. If a component opened a gzipped file, BFD
would transparently decompress it. This didn't work. GDB does
some file operations, like closing and reopening files, which I think
should be done in BFD.
Would it make sense to support .tar.gz/.tgz files containing both a
binary and its .dwp?
Perhaps, but I don't want to extend this (conceptually) simple extension
to also handling tar files. Maybe as a follow-on.
-cary
On Tue, Mar 10, 2015 at 4:01 PM, Michael Eager <eager@eagerm.com> wrote:
Add support to automatically unzip compressed executable and core files.
Files will be uncompressed into temporary directory (/tmp or $TMPDIR)
and are deleted when GDB exits. This should be transparent to users,
except for disk space requirements. The name of the uncompressed file is
mentioned, but all references to the file in GDB messages is to the file
which the user specified.
This operation cannot be done completely by BFD because BFD allows an opened
file to be passed to it for processing. GDB uses this functionality.
BFD:
* bfd-in2.h: Regenerate.
* bfd.c (struct bfd): Add uncompressed_filename.
* bfdio.c (bfd_get_mtime): Set bfd->mtime_set to true.
* cache.c (bfd_open): Open previously created uncompressed file.
GDB:
* common/filestuff.c (struct compressed_file_cache_search,
eq_compressed_file,
is_gzip, decompress_gzip, do_compressed_cleanup, gdb_uncompress): New.
* common/filestuff.h (gdb_uncompress): Declare.
* corelow.c (core_open): Uncompress core file.
* exec.c (exec_file_attach): Uncompress exe file.
* symfile.c (symfile_bfd_open): Uncompress sym (exe) file.
GDB/DOC:
* gdb.texinfo: Mention gzipped exec and core files.
--
Michael Eager eager@eagercon.com
1960 Park Blvd., Palo Alto, CA 94306 650-325-8077
--
Michael Eager eager@eagercon.com
1960 Park Blvd., Palo Alto, CA 94306 650-325-8077