From: Nick Clifton Date: Thu, 6 Nov 2014 14:39:58 +0000 (+0000) Subject: Revert changes in previous deltas that introduced new failures into X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=834107255bbefceb445fa733ebc1ea5d9f41ec7f;p=deliverable%2Fbinutils-gdb.git Revert changes in previous deltas that introduced new failures into the linker testsuite. * aoutx.h (slurp_symbol_table): Revert previous delta. (slurp_reloc_table): Likewise. * compress.c (bfd_get_full_section_contents): Remove file size test. * coffgen.c (coff_get_normalized_symtab): Allow zero-sized symtabs and do not complain about linker generated files. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 7a57b1265f..97057d46dc 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,12 @@ +2014-11-06 Nick Clifton + + * aoutx.h (slurp_symbol_table): Revert previous delta. + (slurp_reloc_table): Likewise. + * compress.c (bfd_get_full_section_contents): Remove file size + test. + * coffgen.c (coff_get_normalized_symtab): Allow zero-sized symtabs + and do not complain about linker generated files. + 2014-11-06 Will Newton * elf-attrs.c (_bfd_elf_parse_attributes): Handle zero diff --git a/bfd/aoutx.h b/bfd/aoutx.h index cb0887a4ba..bef59b4236 100644 --- a/bfd/aoutx.h +++ b/bfd/aoutx.h @@ -1756,8 +1756,6 @@ NAME (aout, slurp_symbol_table) (bfd *abfd) return TRUE; /* Nothing to do. */ cached_size *= sizeof (aout_symbol_type); - if (cached_size >= (bfd_size_type) bfd_get_size (abfd)) - return FALSE; cached = (aout_symbol_type *) bfd_zmalloc (cached_size); if (cached == NULL) return FALSE; @@ -2309,11 +2307,6 @@ NAME (aout, slurp_reloc_table) (bfd *abfd, sec_ptr asect, asymbol **symbols) if (reloc_size == 0) return TRUE; /* Nothing to be done. */ - /* PR binutils/17512: Do not even try to - load the relocs if their size is corrupt. */ - if (reloc_size + asect->rel_filepos >= (bfd_size_type) bfd_get_size (abfd)) - return FALSE; - if (bfd_seek (abfd, asect->rel_filepos, SEEK_SET) != 0) return FALSE; diff --git a/bfd/coffgen.c b/bfd/coffgen.c index d0bf2c1a18..4856a40e5e 100644 --- a/bfd/coffgen.c +++ b/bfd/coffgen.c @@ -1622,7 +1622,10 @@ _bfd_coff_get_external_symbols (bfd *abfd) /* PR binutils/17512: Do not even try to load a symbol table bigger than the entire file... */ if (size >= (bfd_size_type) bfd_get_size (abfd)) + { + fprintf (stderr, "XXX SIZE FAIL 1\n"); return FALSE; + } syms = bfd_malloc (size); if (syms == NULL) @@ -1757,11 +1760,12 @@ coff_get_normalized_symtab (bfd *abfd) return obj_raw_syments (abfd); size = obj_raw_syment_count (abfd); - if (size == 0) - return NULL; /* PR binutils/17512: Do not even try to load - a symbol table bigger than the entire file... */ - if (size >= (bfd_size_type) bfd_get_size (abfd)) + a symbol table bigger than the entire file... + Note - we do not fail on a size of 0. Linker created + bfds can have this property and they are not corrupt. */ + if (size >= (bfd_size_type) bfd_get_size (abfd) + && bfd_get_size (abfd) > 0) return NULL; size *= sizeof (combined_entry_type); diff --git a/bfd/compress.c b/bfd/compress.c index 683156209a..20eef95282 100644 --- a/bfd/compress.c +++ b/bfd/compress.c @@ -177,14 +177,6 @@ bfd_get_full_section_contents (bfd *abfd, sec_ptr sec, bfd_byte **ptr) switch (sec->compress_status) { case COMPRESS_SECTION_NONE: - /* PR binutils/17512: Avoid malloc or file reading errors due to - ridiculous section sizes. But ignore linker created objects - and bfds with no contents (yet). */ - if (bfd_get_size (abfd) > 0 - && (sec->flags & SEC_LINKER_CREATED) == 0 - && sz > (bfd_size_type) bfd_get_size (abfd)) - return FALSE; - if (p == NULL) { p = (bfd_byte *) bfd_malloc (sz);