summaryrefslogtreecommitdiffstats
path: root/binutils-2.25/bfd/compress.c
diff options
context:
space:
mode:
authorAndrew Hsieh <andrewhsieh@google.com>2014-12-09 17:57:18 +0800
committerAndrew Hsieh <andrewhsieh@google.com>2014-12-09 19:50:14 +0800
commit5e8c1cf25beccac1d22d10dc866912394f42771b (patch)
treeee16b70f804484dc8e434e647e699ab50da2620f /binutils-2.25/bfd/compress.c
parent8eebd7953384e6662ca926b003f2cdda8ccd3ee5 (diff)
downloadtoolchain_binutils-5e8c1cf25beccac1d22d10dc866912394f42771b.zip
toolchain_binutils-5e8c1cf25beccac1d22d10dc866912394f42771b.tar.gz
toolchain_binutils-5e8c1cf25beccac1d22d10dc866912394f42771b.tar.bz2
[2.25] sync to a30720e3e633f275250e26f85ccae5dbdddfb6c6
local patches will be re-applied later commit a30720e3e633f275250e26f85ccae5dbdddfb6c6 Author: Alan Modra <amodra@gmail.com> Date: Wed Nov 19 10:30:16 2014 +1030 daily update Change-Id: Ieb2a3f4dd2ecb289ac5305ff08d428b2847494ab
Diffstat (limited to 'binutils-2.25/bfd/compress.c')
-rw-r--r--binutils-2.25/bfd/compress.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/binutils-2.25/bfd/compress.c b/binutils-2.25/bfd/compress.c
index 46c2bcb..20eef95 100644
--- a/binutils-2.25/bfd/compress.c
+++ b/binutils-2.25/bfd/compress.c
@@ -1,6 +1,5 @@
/* Compressed section support (intended for debug sections).
- Copyright 2008, 2010, 2011, 2012
- Free Software Foundation, Inc.
+ Copyright (C) 2008-2014 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -25,6 +24,7 @@
#ifdef HAVE_ZLIB_H
#include <zlib.h>
#endif
+#include "safe-ctype.h"
#ifdef HAVE_ZLIB_H
static bfd_boolean
@@ -304,6 +304,15 @@ bfd_is_section_compressed (bfd *abfd, sec_ptr sec)
compressed = (bfd_get_section_contents (abfd, sec, compressed_buffer, 0, 12)
&& CONST_STRNEQ ((char*) compressed_buffer, "ZLIB"));
+ /* Check for the pathalogical case of a debug string section that
+ contains the string ZLIB.... as the first entry. We assume that
+ no uncompressed .debug_str section would ever be big enough to
+ have the first byte of its (big-endian) size be non-zero. */
+ if (compressed
+ && strcmp (sec->name, ".debug_str") == 0
+ && ISPRINT (compressed_buffer[4]))
+ compressed = FALSE;
+
/* Restore compress_status. */
sec->compress_status = saved;
return compressed;