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]

Re: [committed, PATCH] Extract get_uncompressed_size


On Sun, Apr 5, 2015 at 9:26 PM, Hans-Peter Nilsson <hp@bitrange.com> wrote:
> On Sat, 4 Apr 2015, H.J. Lu wrote:
>>
>>       * compress.c (get_uncompressed_size): New.  Extracted from ...
>>       (bfd_init_section_decompress_status): This.  Use it.
>
>> +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[7];
>> +  return uncompressed_size;;
>> +}
>
> I know you're just copying code, but for the next copy, please
> consider also change to use bfd functions, in this case bfd_getb64?
>

Thanks for the suggestion.  I checked in this patch:

bfd/

* compress.c (get_uncompressed_size): Removed.
(bfd_compress_section_contents): Use bfd_putb64 to write
uncompressed section size.
(bfd_init_section_decompress_status): Replace
get_uncompressed_size with bfd_getb64.

gas/

* write.c (compress_debug): Use bfd_putb64 to write uncompressed
section size.

-- 
H.J.
From 014e1e99593dd7ea516835831e02175473b3fba7 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Mon, 6 Apr 2015 09:01:43 -0700
Subject: [PATCH 2/2] Use bfd_putb64/bfd_getb64

bfd/

	* compress.c (get_uncompressed_size): Removed.
	(bfd_compress_section_contents): Use bfd_putb64 to write
	uncompressed section size.
	(bfd_init_section_decompress_status): Replace
	get_uncompressed_size with bfd_getb64.

gas/

	* write.c (compress_debug): Use bfd_putb64 to write uncompressed
	section size.
---
 bfd/ChangeLog  |  8 ++++++++
 bfd/compress.c | 33 ++-------------------------------
 gas/ChangeLog  |  5 +++++
 gas/write.c    |  9 +--------
 4 files changed, 16 insertions(+), 39 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 4400a36..4291fc7 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,11 @@
+2015-04-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* compress.c (get_uncompressed_size): Removed.
+	(bfd_compress_section_contents): Use bfd_putb64 to write
+	uncompressed section size.
+	(bfd_init_section_decompress_status): Replace
+	get_uncompressed_size with bfd_getb64.
+
 2015-04-04  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* elf.c (_bfd_elf_init_private_section_data): Also preserve the
diff --git a/bfd/compress.c b/bfd/compress.c
index 56d49fe..b57650f 100644
--- a/bfd/compress.c
+++ b/bfd/compress.c
@@ -59,27 +59,6 @@ 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
@@ -122,15 +101,7 @@ bfd_compress_section_contents (bfd *abfd ATTRIBUTE_UNUSED, sec_ptr sec,
       /* Write the zlib header.  In this case, it should be "ZLIB" followed
 	 by the uncompressed section size, 8 bytes in big-endian order.  */
       memcpy (compressed_buffer, "ZLIB", 4);
-      compressed_buffer[11] = uncompressed_size; uncompressed_size >>= 8;
-      compressed_buffer[10] = uncompressed_size; uncompressed_size >>= 8;
-      compressed_buffer[9] = uncompressed_size; uncompressed_size >>= 8;
-      compressed_buffer[8] = uncompressed_size; uncompressed_size >>= 8;
-      compressed_buffer[7] = uncompressed_size; uncompressed_size >>= 8;
-      compressed_buffer[6] = uncompressed_size; uncompressed_size >>= 8;
-      compressed_buffer[5] = uncompressed_size; uncompressed_size >>= 8;
-      compressed_buffer[4] = uncompressed_size;
-
+      bfd_putb64 (uncompressed_size, compressed_buffer + 4);
       free (uncompressed_buffer);
       sec->contents = compressed_buffer;
       sec->size = compressed_size;
@@ -368,7 +339,7 @@ bfd_init_section_decompress_status (bfd *abfd, sec_ptr sec)
       return FALSE;
     }
 
-  uncompressed_size = get_uncompressed_size (compressed_buffer + 4);
+  uncompressed_size = bfd_getb64 (compressed_buffer + 4);
   sec->compressed_size = sec->size;
   sec->size = uncompressed_size;
   sec->compress_status = DECOMPRESS_SECTION_SIZED;
diff --git a/gas/ChangeLog b/gas/ChangeLog
index f2a1bf2..c896dea 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2015-04-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* write.c (compress_debug): Use bfd_putb64 to write uncompressed
+	section size.
+
 2015-04-05  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* write.c (compress_debug): Don't write the zlib header if
diff --git a/gas/write.c b/gas/write.c
index 248255b..1ae47a9 100644
--- a/gas/write.c
+++ b/gas/write.c
@@ -1523,14 +1523,7 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
     return;
 
   memcpy (header, "ZLIB", 4);
-  header[11] = uncompressed_size; uncompressed_size >>= 8;
-  header[10] = uncompressed_size; uncompressed_size >>= 8;
-  header[9] = uncompressed_size; uncompressed_size >>= 8;
-  header[8] = uncompressed_size; uncompressed_size >>= 8;
-  header[7] = uncompressed_size; uncompressed_size >>= 8;
-  header[6] = uncompressed_size; uncompressed_size >>= 8;
-  header[5] = uncompressed_size; uncompressed_size >>= 8;
-  header[4] = uncompressed_size;
+  bfd_putb64 (uncompressed_size, header + 4);
 
   /* Replace the uncompressed frag list with the compressed frag list.  */
   seginfo->frchainP->frch_root = first_newf;
-- 
1.9.3


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