This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[committed, PATCH] Extract get_uncompressed_size


	* compress.c (get_uncompressed_size): New.  Extracted from ...
	(bfd_init_section_decompress_status): This.  Use it.
---
 bfd/ChangeLog  |  5 +++++
 bfd/compress.c | 31 ++++++++++++++++++++++---------
 2 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 810705f..654408e 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2015-04-04  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* compress.c (get_uncompressed_size): New.  Extracted from ...
+	(bfd_init_section_decompress_status): This.  Use it.
+
 2015-04-02  Andrew Turner  <andrew@freebsd.org>
 
 	* config.bfd: Add aarch64-*-freebsd* target triple.
diff --git a/bfd/compress.c b/bfd/compress.c
index 7e498fa..6621dff 100644
--- a/bfd/compress.c
+++ b/bfd/compress.c
@@ -59,6 +59,27 @@ decompress_contents (bfd_byte *compressed_buffer,
   return rc == Z_OK && strm.avail_out == 0;
 }
 
+static bfd_size_type
+get_uncompressed_size (bfd_byte *compressed_size_buffer)
+{
+  bfd_size_type uncompressed_size = compressed_size_buffer[0];
+  uncompressed_size <<= 8;
+  uncompressed_size += compressed_size_buffer[1];
+  uncompressed_size <<= 8;
+  uncompressed_size += compressed_size_buffer[2];
+  uncompressed_size <<= 8;
+  uncompressed_size += compressed_size_buffer[3];
+  uncompressed_size <<= 8;
+  uncompressed_size += compressed_size_buffer[4];
+  uncompressed_size <<= 8;
+  uncompressed_size += compressed_size_buffer[5];
+  uncompressed_size <<= 8;
+  uncompressed_size += compressed_size_buffer[6];
+  uncompressed_size <<= 8;
+  uncompressed_size += compressed_size_buffer[7];
+  return uncompressed_size;;
+}
+
 /* Compress data of the size specified in @var{uncompressed_size}
    and pointed to by @var{uncompressed_buffer} using zlib and store
    as the contents field.  This function assumes the contents
@@ -347,15 +368,7 @@ bfd_init_section_decompress_status (bfd *abfd, sec_ptr sec)
       return FALSE;
     }
 
-  uncompressed_size = compressed_buffer[4]; uncompressed_size <<= 8;
-  uncompressed_size += compressed_buffer[5]; uncompressed_size <<= 8;
-  uncompressed_size += compressed_buffer[6]; uncompressed_size <<= 8;
-  uncompressed_size += compressed_buffer[7]; uncompressed_size <<= 8;
-  uncompressed_size += compressed_buffer[8]; uncompressed_size <<= 8;
-  uncompressed_size += compressed_buffer[9]; uncompressed_size <<= 8;
-  uncompressed_size += compressed_buffer[10]; uncompressed_size <<= 8;
-  uncompressed_size += compressed_buffer[11];
-
+  uncompressed_size = get_uncompressed_size (compressed_buffer + 4);
   sec->compressed_size = sec->size;
   sec->size = uncompressed_size;
   sec->compress_status = DECOMPRESS_SECTION_SIZED;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]