*** ../binutils-2.24.orig/bfd/compress.c 2014-04-28 16:35:20.429816317 +0100 --- bfd/compress.c 2014-04-28 16:36:06.450963028 +0100 *************** *** 25,30 **** --- 25,31 ---- #ifdef HAVE_ZLIB_H #include #endif + #include "safe-ctype.h" #ifdef HAVE_ZLIB_H static bfd_boolean *************** bfd_is_section_compressed (bfd *abfd, se *** 304,309 **** --- 305,319 ---- 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;