aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2012-10-21 09:06:07 +0000
committerAlan Modra <amodra@gmail.com>2012-10-21 09:06:07 +0000
commit8a72cc6e7e9e329b50b18cdc62b281ee1a5473f1 (patch)
tree69a86b195310afc299537c9f0f8ec5b576705893 /bfd
parent1e9d6fc2630d2b72281d58c3fb0807799513f3ff (diff)
downloadgdb-8a72cc6e7e9e329b50b18cdc62b281ee1a5473f1.zip
gdb-8a72cc6e7e9e329b50b18cdc62b281ee1a5473f1.tar.gz
gdb-8a72cc6e7e9e329b50b18cdc62b281ee1a5473f1.tar.bz2
bfd/
* compress.c (bfd_cache_section_contents): New function. * bfd-in2.h: Regenerate. binutils/ * objdump.c (load_specific_debug_section): Use bfd_cache_section_contents.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/bfd-in2.h3
-rw-r--r--bfd/compress.c23
3 files changed, 31 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 78115e2..5c6f6da 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2012-10-21 Alan Modra <amodra@gmail.com>
+
+ * compress.c (bfd_cache_section_contents): New function.
+ * bfd-in2.h: Regenerate.
+
2012-10-21 Hans-Peter Nilsson <hp@bitrange.com>
* linker.c (_bfd_generic_link_output_symbols): Handle a
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index c37c005..919f51a 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -6709,6 +6709,9 @@ bfd_boolean bfd_compress_section_contents
bfd_boolean bfd_get_full_section_contents
(bfd *abfd, asection *section, bfd_byte **ptr);
+void bfd_cache_section_contents
+ (asection *sec, void *contents);
+
bfd_boolean bfd_is_section_compressed
(bfd *abfd, asection *section);
diff --git a/bfd/compress.c b/bfd/compress.c
index 294bfd3..7f94781 100644
--- a/bfd/compress.c
+++ b/bfd/compress.c
@@ -255,6 +255,29 @@ bfd_get_full_section_contents (bfd *abfd, sec_ptr sec, bfd_byte **ptr)
/*
FUNCTION
+ bfd_cache_section_contents
+
+SYNOPSIS
+ void bfd_cache_section_contents
+ (asection *sec, void *contents);
+
+DESCRIPTION
+ Stash @var(contents) so any following reads of @var(sec) do
+ not need to decompress again.
+*/
+
+void
+bfd_cache_section_contents (asection *sec, void *contents)
+{
+ if (sec->compress_status == DECOMPRESS_SECTION_SIZED)
+ sec->compress_status = COMPRESS_SECTION_DONE;
+ sec->contents = contents;
+ sec->flags |= SEC_IN_MEMORY;
+}
+
+
+/*
+FUNCTION
bfd_is_section_compressed
SYNOPSIS