diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/bfd/ChangeLog ./bfd/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/bfd/ChangeLog	2019-12-03 01:49:13.000000000 +0000
+++ ./bfd/ChangeLog	2019-12-04 01:50:04.000000000 +0000
@@ -1,3 +1,67 @@
+2019-12-03  Alan Modra  <amodra@gmail.com>
+
+	PR 25230
+	* dwarf2.c (struct dwarf2_debug_file): Add line_table and
+	abbrev_offsets.
+	(struct abbrev_offset_entry): New.
+	(hash_abbrev, eq_abbrev, del_abbrev): New functions.
+	(read_abbrevs): Check whether we have already read abbrevs at
+	given offset, and add new offset/abbrev to hash table.
+	(decode_line_info): Keep line table at offset zero in file struct.
+	Return this for a cu reusing the same dir/file list.
+	(find_abstract_instance): Find cu for DW_FORM_GNU_ref_alt.
+	(_bfd_dwarf2_slurp_debug_info): Create offset/abbrev hash tables.
+	(_bfd_dwarf2_cleanup_debug_info): Adjust deletion of lines and
+	abbrevs.
+
+2019-12-03  Alan Modra  <amodra@gmail.com>
+
+	PR 25230
+	* dwarf2.c (struct dwarf2_debug_file): New struct.
+	(struct dwarf2_debug): Delete fields now in dwarf2_debug_file.
+	Add f, alt fields.
+	(struct comp_unit): Add file field.
+	(read_indirect_string, read_indirect_line_string): Adjust to suit.
+	(read_alt_indirect_string, read_alt_indirect_ref): Likewise.
+	(read_debug_ranges, find_abstract_instance, read_rangelist): Likewise.
+	(_bfd_dwarf2_stash_syms, place_sections): Likewise.
+	(stash_maybe_update_info_hash_tablse): Likewise.
+	(stash_verify_info_hash_table): Likewise.
+	(_bfd_dwarf2_slurp_debug_info): Likewise.
+	(_bfd_dwarf2_find_symbol_bias): Likewise.
+	(_bfd_dwarf2_find_nearest_line): Likewise.
+	(_bfd_dwarf2_cleanup_debug_info): Likewise.
+	(read_abbrevs): Add file param and adjust.  Update calls.
+	(stash_comp_unit): Likewise.
+	(decode_line_info): Delete stash param and adjust.  Update calls.
+	(comp_unit_find_nearest_line): Likewise.
+	(comp_unit_maybe_decode_line_info): Likewise.
+	(comp_unit_find_line): Likewise.
+	(parse_comp_unit): Add file and info_ptr param and adjust.  Update
+	calls.
+
+2019-12-03  Alan Modra  <amodra@gmail.com>
+
+	* dwarf2.c (read_indirect_string): Don't duplicate offset check
+	done in read_section.
+	(read_indirect_line_string): Likewise.
+	(read_alt_indirect_string): Likewise.
+	(read_alt_indirect_ref): Likewise.
+	(read_abbrevs): Likewise.  Free memory on all failure paths.
+	Use correct unsigned type for pointer difference comparison.
+
+2019-12-03  Alan Modra  <amodra@gmail.com>
+
+	* dwarf2.c (struct dwarf2_debug): Update comments.  Remove sec
+	and sec_info_ptr.
+	(_bfd_dwarf2_slurp_debug_info): Don't set sec or sec_info_ptr.
+	(stash_comp_unit): Likewise.
+	(read_alt_indirect_ref): Return NULL not FALSE.
+
+2019-12-03  Alan Modra  <amodra@gmail.com>
+
+	* dwarf2.c (_bfd_dwarf2_find_nearest_line): Correct function comment.
+
 2019-11-27  Alan Modra  <amodra@gmail.com>
 
 	PR 23652
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/bfd/dwarf2.c ./bfd/dwarf2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/bfd/dwarf2.c	2019-12-03 01:49:13.000000000 +0000
+++ ./bfd/dwarf2.c	2019-12-04 01:50:04.000000000 +0000
@@ -82,55 +82,23 @@ struct adjusted_section
   bfd_vma adj_vma;
 };
 
-struct dwarf2_debug
+struct dwarf2_debug_file
 {
-  /* A list of all previously read comp_units.  */
-  struct comp_unit *all_comp_units;
-
-  /* Last comp unit in list above.  */
-  struct comp_unit *last_comp_unit;
+  /* The actual bfd from which debug info was loaded.  Might be
+     different to orig_bfd because of gnu_debuglink sections.  */
+  bfd *bfd_ptr;
 
-  /* Names of the debug sections.  */
-  const struct dwarf_debug_section *debug_sections;
+  /* Pointer to the symbol table.  */
+  asymbol **syms;
 
-  /* The next unread compilation unit within the .debug_info section.
-     Zero indicates that the .debug_info section has not been loaded
-     into a buffer yet.  */
+  /* The current info pointer for the .debug_info section being parsed.  */
   bfd_byte *info_ptr;
 
-  /* Pointer to the end of the .debug_info section memory buffer.  */
-  bfd_byte *info_ptr_end;
-
-  /* Pointer to the original bfd for which debug was loaded.  This is what
-     we use to compare and so check that the cached debug data is still
-     valid - it saves having to possibly dereference the gnu_debuglink each
-     time.  */
-  bfd *orig_bfd;
-
-  /* Pointer to the bfd, section and address of the beginning of the
-     section.  The bfd might be different than expected because of
-     gnu_debuglink sections.  */
-  bfd *bfd_ptr;
-  asection *sec;
-  bfd_byte *sec_info_ptr;
+  /* A pointer to the memory block allocated for .debug_info sections.  */
+  bfd_byte *dwarf_info_buffer;
 
-  /* Support for alternate debug info sections created by the DWZ utility:
-     This includes a pointer to an alternate bfd which contains *extra*,
-     possibly duplicate debug sections, and pointers to the loaded
-     .debug_str and .debug_info sections from this bfd.  */
-  bfd *		 alt_bfd_ptr;
-  bfd_byte *	 alt_dwarf_str_buffer;
-  bfd_size_type	 alt_dwarf_str_size;
-  bfd_byte *	 alt_dwarf_info_buffer;
-  bfd_size_type	 alt_dwarf_info_size;
-
-  /* A pointer to the memory block allocated for info_ptr.  Neither
-     info_ptr nor sec_info_ptr are guaranteed to stay pointing to the
-     beginning of the malloc block.  */
-  bfd_byte *info_ptr_memory;
-
-  /* Pointer to the symbol table.  */
-  asymbol **syms;
+  /* Length of the loaded .debug_info sections.  */
+  bfd_size_type dwarf_info_size;
 
   /* Pointer to the .debug_abbrev section loaded into memory.  */
   bfd_byte *dwarf_abbrev_buffer;
@@ -162,6 +130,33 @@ struct dwarf2_debug
   /* Length of the loaded .debug_ranges section.  */
   bfd_size_type dwarf_ranges_size;
 
+  /* A list of all previously read comp_units.  */
+  struct comp_unit *all_comp_units;
+
+  /* Last comp unit in list above.  */
+  struct comp_unit *last_comp_unit;
+
+  /* Line table at line_offset zero.  */
+  struct line_info_table *line_table;
+
+  /* Hash table to map offsets to decoded abbrevs.  */
+  htab_t abbrev_offsets;
+};
+
+struct dwarf2_debug
+{
+  /* Names of the debug sections.  */
+  const struct dwarf_debug_section *debug_sections;
+
+  /* Per-file stuff.  */
+  struct dwarf2_debug_file f, alt;
+
+  /* Pointer to the original bfd for which debug was loaded.  This is what
+     we use to compare and so check that the cached debug data is still
+     valid - it saves having to possibly dereference the gnu_debuglink each
+     time.  */
+  bfd *orig_bfd;
+
   /* If the most recent call to bfd_find_nearest_line was given an
      address in an inlined function, preserve a pointer into the
      calling chain for subsequent calls to bfd_find_inliner_info to
@@ -276,8 +271,9 @@ struct comp_unit
   /* A list of the variables found in this comp. unit.  */
   struct varinfo *variable_table;
 
-  /* Pointer to dwarf2_debug structure.  */
+  /* Pointers to dwarf2_debug structures.  */
   struct dwarf2_debug *stash;
+  struct dwarf2_debug_file *file;
 
   /* DWARF format version for this unit - from unit header.  */
   int version;
@@ -706,6 +702,7 @@ read_indirect_string (struct comp_unit *
 {
   bfd_uint64_t offset;
   struct dwarf2_debug *stash = unit->stash;
+  struct dwarf2_debug_file *file = unit->file;
   char *str;
 
   if (buf + unit->offset_size > buf_end)
@@ -722,13 +719,11 @@ read_indirect_string (struct comp_unit *
   *bytes_read_ptr = unit->offset_size;
 
   if (! read_section (unit->abfd, &stash->debug_sections[debug_str],
-		      stash->syms, offset,
-		      &stash->dwarf_str_buffer, &stash->dwarf_str_size))
+		      file->syms, offset,
+		      &file->dwarf_str_buffer, &file->dwarf_str_size))
     return NULL;
 
-  if (offset >= stash->dwarf_str_size)
-    return NULL;
-  str = (char *) stash->dwarf_str_buffer + offset;
+  str = (char *) file->dwarf_str_buffer + offset;
   if (*str == '\0')
     return NULL;
   return str;
@@ -744,6 +739,7 @@ read_indirect_line_string (struct comp_u
 {
   bfd_uint64_t offset;
   struct dwarf2_debug *stash = unit->stash;
+  struct dwarf2_debug_file *file = unit->file;
   char *str;
 
   if (buf + unit->offset_size > buf_end)
@@ -760,14 +756,12 @@ read_indirect_line_string (struct comp_u
   *bytes_read_ptr = unit->offset_size;
 
   if (! read_section (unit->abfd, &stash->debug_sections[debug_line_str],
-		      stash->syms, offset,
-		      &stash->dwarf_line_str_buffer,
-		      &stash->dwarf_line_str_size))
+		      file->syms, offset,
+		      &file->dwarf_line_str_buffer,
+		      &file->dwarf_line_str_size))
     return NULL;
 
-  if (offset >= stash->dwarf_line_str_size)
-    return NULL;
-  str = (char *) stash->dwarf_line_str_buffer + offset;
+  str = (char *) file->dwarf_line_str_buffer + offset;
   if (*str == '\0')
     return NULL;
   return str;
@@ -800,7 +794,7 @@ read_alt_indirect_string (struct comp_un
 
   *bytes_read_ptr = unit->offset_size;
 
-  if (stash->alt_bfd_ptr == NULL)
+  if (stash->alt.bfd_ptr == NULL)
     {
       bfd *debug_bfd;
       char *debug_filename = bfd_follow_gnu_debugaltlink (unit->abfd, DEBUGDIR);
@@ -819,20 +813,17 @@ read_alt_indirect_string (struct comp_un
 	  bfd_close (debug_bfd);
 	  return NULL;
 	}
-      stash->alt_bfd_ptr = debug_bfd;
+      stash->alt.bfd_ptr = debug_bfd;
     }
 
-  if (! read_section (unit->stash->alt_bfd_ptr,
+  if (! read_section (unit->stash->alt.bfd_ptr,
 		      stash->debug_sections + debug_str_alt,
-		      NULL, /* FIXME: Do we need to load alternate symbols ?  */
-		      offset,
-		      &stash->alt_dwarf_str_buffer,
-		      &stash->alt_dwarf_str_size))
+		      stash->alt.syms, offset,
+		      &stash->alt.dwarf_str_buffer,
+		      &stash->alt.dwarf_str_size))
     return NULL;
 
-  if (offset >= stash->alt_dwarf_str_size)
-    return NULL;
-  str = (char *) stash->alt_dwarf_str_buffer + offset;
+  str = (char *) stash->alt.dwarf_str_buffer + offset;
   if (*str == '\0')
     return NULL;
 
@@ -849,13 +840,13 @@ read_alt_indirect_ref (struct comp_unit 
 {
   struct dwarf2_debug *stash = unit->stash;
 
-  if (stash->alt_bfd_ptr == NULL)
+  if (stash->alt.bfd_ptr == NULL)
     {
       bfd *debug_bfd;
       char *debug_filename = bfd_follow_gnu_debugaltlink (unit->abfd, DEBUGDIR);
 
       if (debug_filename == NULL)
-	return FALSE;
+	return NULL;
 
       debug_bfd = bfd_openr (debug_filename, NULL);
       free (debug_filename);
@@ -868,20 +859,17 @@ read_alt_indirect_ref (struct comp_unit 
 	  bfd_close (debug_bfd);
 	  return NULL;
 	}
-      stash->alt_bfd_ptr = debug_bfd;
+      stash->alt.bfd_ptr = debug_bfd;
     }
 
-  if (! read_section (unit->stash->alt_bfd_ptr,
+  if (! read_section (unit->stash->alt.bfd_ptr,
 		      stash->debug_sections + debug_info_alt,
-		      NULL, /* FIXME: Do we need to load alternate symbols ?  */
-		      offset,
-		      &stash->alt_dwarf_info_buffer,
-		      &stash->alt_dwarf_info_size))
+		      stash->alt.syms, offset,
+		      &stash->alt.dwarf_info_buffer,
+		      &stash->alt.dwarf_info_size))
     return NULL;
 
-  if (offset >= stash->alt_dwarf_info_size)
-    return NULL;
-  return stash->alt_dwarf_info_buffer + offset;
+  return stash->alt.dwarf_info_buffer + offset;
 }
 
 static bfd_uint64_t
@@ -947,13 +935,59 @@ lookup_abbrev (unsigned int number, stru
   return NULL;
 }
 
+/* We keep a hash table to map .debug_abbrev section offsets to the
+   array of abbrevs, so that compilation units using the same set of
+   abbrevs do not waste memory.  */
+
+struct abbrev_offset_entry
+{
+  size_t offset;
+  struct abbrev_info **abbrevs;
+};
+
+static hashval_t
+hash_abbrev (const void *p)
+{
+  const struct abbrev_offset_entry *ent = p;
+  return htab_hash_pointer ((void *) ent->offset);
+}
+
+static int
+eq_abbrev (const void *pa, const void *pb)
+{
+  const struct abbrev_offset_entry *a = pa;
+  const struct abbrev_offset_entry *b = pb;
+  return a->offset == b->offset;
+}
+
+static void
+del_abbrev (void *p)
+{
+  struct abbrev_offset_entry *ent = p;
+  struct abbrev_info **abbrevs = ent->abbrevs;
+  size_t i;
+
+  for (i = 0; i < ABBREV_HASH_SIZE; i++)
+    {
+      struct abbrev_info *abbrev = abbrevs[i];
+
+      while (abbrev)
+	{
+	  free (abbrev->attrs);
+	  abbrev = abbrev->next;
+	}
+    }
+  free (ent);
+}
+
 /* In DWARF version 2, the description of the debugging information is
    stored in a separate .debug_abbrev section.  Before we read any
    dies from a section we read in all abbreviations and install them
    in a hash table.  */
 
 static struct abbrev_info**
-read_abbrevs (bfd *abfd, bfd_uint64_t offset, struct dwarf2_debug *stash)
+read_abbrevs (bfd *abfd, bfd_uint64_t offset, struct dwarf2_debug *stash,
+	      struct dwarf2_debug_file *file)
 {
   struct abbrev_info **abbrevs;
   bfd_byte *abbrev_ptr;
@@ -962,13 +996,22 @@ read_abbrevs (bfd *abfd, bfd_uint64_t of
   unsigned int abbrev_number, bytes_read, abbrev_name;
   unsigned int abbrev_form, hash_number;
   bfd_size_type amt;
+  void **slot;
+  struct abbrev_offset_entry ent = { offset, NULL };
 
-  if (! read_section (abfd, &stash->debug_sections[debug_abbrev],
-		      stash->syms, offset,
-		      &stash->dwarf_abbrev_buffer, &stash->dwarf_abbrev_size))
+  if (ent.offset != offset)
+    return NULL;
+
+  slot = htab_find_slot (file->abbrev_offsets, &ent, INSERT);
+  if (slot == NULL)
     return NULL;
+  if (*slot != NULL)
+    return ((struct abbrev_offset_entry *) (*slot))->abbrevs;
 
-  if (offset >= stash->dwarf_abbrev_size)
+  if (! read_section (abfd, &stash->debug_sections[debug_abbrev],
+		      file->syms, offset,
+		      &file->dwarf_abbrev_buffer,
+		      &file->dwarf_abbrev_size))
     return NULL;
 
   amt = sizeof (struct abbrev_info*) * ABBREV_HASH_SIZE;
@@ -976,8 +1019,8 @@ read_abbrevs (bfd *abfd, bfd_uint64_t of
   if (abbrevs == NULL)
     return NULL;
 
-  abbrev_ptr = stash->dwarf_abbrev_buffer + offset;
-  abbrev_end = stash->dwarf_abbrev_buffer + stash->dwarf_abbrev_size;
+  abbrev_ptr = file->dwarf_abbrev_buffer + offset;
+  abbrev_end = file->dwarf_abbrev_buffer + file->dwarf_abbrev_size;
   abbrev_number = _bfd_safe_read_leb128 (abfd, abbrev_ptr, &bytes_read,
 					 FALSE, abbrev_end);
   abbrev_ptr += bytes_read;
@@ -988,7 +1031,7 @@ read_abbrevs (bfd *abfd, bfd_uint64_t of
       amt = sizeof (struct abbrev_info);
       cur_abbrev = (struct abbrev_info *) bfd_zalloc (abfd, amt);
       if (cur_abbrev == NULL)
-	return NULL;
+	goto fail;
 
       /* Read in abbrev header.  */
       cur_abbrev->number = abbrev_number;
@@ -1030,21 +1073,7 @@ read_abbrevs (bfd *abfd, bfd_uint64_t of
 	      amt *= sizeof (struct attr_abbrev);
 	      tmp = (struct attr_abbrev *) bfd_realloc (cur_abbrev->attrs, amt);
 	      if (tmp == NULL)
-		{
-		  size_t i;
-
-		  for (i = 0; i < ABBREV_HASH_SIZE; i++)
-		    {
-		      struct abbrev_info *abbrev = abbrevs[i];
-
-		      while (abbrev)
-			{
-			  free (abbrev->attrs);
-			  abbrev = abbrev->next;
-			}
-		    }
-		  return NULL;
-		}
+		goto fail;
 	      cur_abbrev->attrs = tmp;
 	    }
 
@@ -1068,8 +1097,8 @@ read_abbrevs (bfd *abfd, bfd_uint64_t of
 	 already read (which means we are about to read the abbreviations
 	 for the next compile unit) or if the end of the abbreviation
 	 table is reached.  */
-      if ((unsigned int) (abbrev_ptr - stash->dwarf_abbrev_buffer)
-	  >= stash->dwarf_abbrev_size)
+      if ((size_t) (abbrev_ptr - file->dwarf_abbrev_buffer)
+	  >= file->dwarf_abbrev_size)
 	break;
       abbrev_number = _bfd_safe_read_leb128 (abfd, abbrev_ptr,
 					     &bytes_read, FALSE, abbrev_end);
@@ -1078,7 +1107,31 @@ read_abbrevs (bfd *abfd, bfd_uint64_t of
 	break;
     }
 
+  *slot = bfd_malloc (sizeof ent);
+  if (!*slot)
+    goto fail;
+  ent.abbrevs = abbrevs;
+  memcpy (*slot, &ent, sizeof ent);
   return abbrevs;
+
+ fail:
+  if (abbrevs != NULL)
+    {
+      size_t i;
+
+      for (i = 0; i < ABBREV_HASH_SIZE; i++)
+	{
+	  struct abbrev_info *abbrev = abbrevs[i];
+
+	  while (abbrev)
+	    {
+	      free (abbrev->attrs);
+	      abbrev = abbrev->next;
+	    }
+	}
+      free (abbrevs);
+    }
+  return NULL;
 }
 
 /* Returns true if the form is one which has a string value.  */
@@ -2025,9 +2078,11 @@ read_formatted_entries (struct comp_unit
 /* Decode the line number information for UNIT.  */
 
 static struct line_info_table*
-decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash)
+decode_line_info (struct comp_unit *unit)
 {
   bfd *abfd = unit->abfd;
+  struct dwarf2_debug *stash = unit->stash;
+  struct dwarf2_debug_file *file = unit->file;
   struct line_info_table* table;
   bfd_byte *line_ptr;
   bfd_byte *line_end;
@@ -2038,39 +2093,24 @@ decode_line_info (struct comp_unit *unit
   unsigned int exop_len;
   bfd_size_type amt;
 
-  if (! read_section (abfd, &stash->debug_sections[debug_line],
-		      stash->syms, unit->line_offset,
-		      &stash->dwarf_line_buffer, &stash->dwarf_line_size))
-    return NULL;
+  if (unit->line_offset == 0 && file->line_table)
+    return file->line_table;
 
-  amt = sizeof (struct line_info_table);
-  table = (struct line_info_table *) bfd_alloc (abfd, amt);
-  if (table == NULL)
+  if (! read_section (abfd, &stash->debug_sections[debug_line],
+		      file->syms, unit->line_offset,
+		      &file->dwarf_line_buffer, &file->dwarf_line_size))
     return NULL;
-  table->abfd = abfd;
-  table->comp_dir = unit->comp_dir;
 
-  table->num_files = 0;
-  table->files = NULL;
-
-  table->num_dirs = 0;
-  table->dirs = NULL;
-
-  table->num_sequences = 0;
-  table->sequences = NULL;
-
-  table->lcl_head = NULL;
-
-  if (stash->dwarf_line_size < 16)
+  if (file->dwarf_line_size < 16)
     {
       _bfd_error_handler
 	(_("DWARF error: line info section is too small (%" PRId64 ")"),
-	 (int64_t) stash->dwarf_line_size);
+	 (int64_t) file->dwarf_line_size);
       bfd_set_error (bfd_error_bad_value);
       return NULL;
     }
-  line_ptr = stash->dwarf_line_buffer + unit->line_offset;
-  line_end = stash->dwarf_line_buffer + stash->dwarf_line_size;
+  line_ptr = file->dwarf_line_buffer + unit->line_offset;
+  line_end = file->dwarf_line_buffer + file->dwarf_line_size;
 
   /* Read in the prologue.  */
   lh.total_length = read_4_bytes (abfd, line_ptr, line_end);
@@ -2197,6 +2237,24 @@ decode_line_info (struct comp_unit *unit
       line_ptr += 1;
     }
 
+  amt = sizeof (struct line_info_table);
+  table = (struct line_info_table *) bfd_alloc (abfd, amt);
+  if (table == NULL)
+    return NULL;
+  table->abfd = abfd;
+  table->comp_dir = unit->comp_dir;
+
+  table->num_files = 0;
+  table->files = NULL;
+
+  table->num_dirs = 0;
+  table->dirs = NULL;
+
+  table->num_sequences = 0;
+  table->sequences = NULL;
+
+  table->lcl_head = NULL;
+
   if (lh.version >= 5)
     {
       /* Read directory table.  */
@@ -2396,16 +2454,16 @@ decode_line_info (struct comp_unit *unit
 	      break;
 	    case DW_LNS_set_file:
 	      {
-		unsigned int file;
+		unsigned int filenum;
 
 		/* The file and directory tables are 0
 		   based, the references are 1 based.  */
-		file = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
-					      FALSE, line_end);
+		filenum = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
+						 FALSE, line_end);
 		line_ptr += bytes_read;
 		if (filename)
 		  free (filename);
-		filename = concat_filename (table, file);
+		filename = concat_filename (table, filenum);
 		break;
 	      }
 	    case DW_LNS_set_column:
@@ -2454,6 +2512,8 @@ decode_line_info (struct comp_unit *unit
 	free (filename);
     }
 
+  if (unit->line_offset == 0)
+    file->line_table = table;
   if (sort_line_sequences (table))
     return table;
 
@@ -2549,12 +2609,12 @@ fail:
 static bfd_boolean
 read_debug_ranges (struct comp_unit * unit)
 {
-  struct dwarf2_debug * stash = unit->stash;
+  struct dwarf2_debug *stash = unit->stash;
+  struct dwarf2_debug_file *file = unit->file;
 
   return read_section (unit->abfd, &stash->debug_sections[debug_ranges],
-		       stash->syms, 0,
-		       &stash->dwarf_ranges_buffer,
-		       &stash->dwarf_ranges_size);
+		       file->syms, 0,
+		       &file->dwarf_ranges_buffer, &file->dwarf_ranges_size);
 }
 
 /* Function table functions.  */
@@ -2817,9 +2877,9 @@ lookup_symbol_in_variable_table (struct 
   return FALSE;
 }
 
-static struct comp_unit *stash_comp_unit (struct dwarf2_debug *);
-static bfd_boolean comp_unit_maybe_decode_line_info (struct comp_unit *,
-						     struct dwarf2_debug *);
+static struct comp_unit *stash_comp_unit (struct dwarf2_debug *,
+					  struct dwarf2_debug_file *);
+static bfd_boolean comp_unit_maybe_decode_line_info (struct comp_unit *);
 
 static bfd_boolean
 find_abstract_instance (struct comp_unit *unit,
@@ -2831,7 +2891,7 @@ find_abstract_instance (struct comp_unit
 			int *linenumber_ptr)
 {
   bfd *abfd = unit->abfd;
-  bfd_byte *info_ptr;
+  bfd_byte *info_ptr = NULL;
   bfd_byte *info_ptr_end;
   unsigned int abbrev_number, bytes_read, i;
   struct abbrev_info *abbrev;
@@ -2864,12 +2924,12 @@ find_abstract_instance (struct comp_unit
 	 a symbolic reference to a label in any .debug_info section
 	 might be used.  Since we lay out multiple .debug_info
 	 sections at non-zero VMAs (see place_sections), and read
-	 them contiguously into stash->info_ptr_memory, that means
-	 the reference is relative to stash->info_ptr_memory.  */
+	 them contiguously into dwarf_info_buffer, that means the
+	 reference is relative to dwarf_info_buffer.  */
       size_t total;
 
-      info_ptr = unit->stash->info_ptr_memory;
-      info_ptr_end = unit->stash->info_ptr_end;
+      info_ptr = unit->file->dwarf_info_buffer;
+      info_ptr_end = info_ptr + unit->file->dwarf_info_size;
       total = info_ptr_end - info_ptr;
       if (!die_ref)
 	return TRUE;
@@ -2881,14 +2941,38 @@ find_abstract_instance (struct comp_unit
 	  return FALSE;
 	}
       info_ptr += die_ref;
+    }
+  else if (attr_ptr->form == DW_FORM_GNU_ref_alt)
+    {
+      bfd_boolean first_time = unit->stash->alt.dwarf_info_buffer == NULL;
 
+      info_ptr = read_alt_indirect_ref (unit, die_ref);
+      if (first_time)
+	unit->stash->alt.info_ptr = unit->stash->alt.dwarf_info_buffer;
+      if (info_ptr == NULL)
+	{
+	  _bfd_error_handler
+	    (_("DWARF error: unable to read alt ref %" PRIu64),
+	     (uint64_t) die_ref);
+	  bfd_set_error (bfd_error_bad_value);
+	  return FALSE;
+	}
+      info_ptr_end = (unit->stash->alt.dwarf_info_buffer
+		      + unit->stash->alt.dwarf_info_size);
+      if (unit->stash->alt.all_comp_units)
+	unit = unit->stash->alt.all_comp_units;
+    }
+
+  if (attr_ptr->form == DW_FORM_ref_addr
+      || attr_ptr->form == DW_FORM_GNU_ref_alt)
+    {
       /* Now find the CU containing this pointer.  */
       if (info_ptr >= unit->info_ptr_unit && info_ptr < unit->end_ptr)
 	info_ptr_end = unit->end_ptr;
       else
 	{
 	  /* Check other CUs to see if they contain the abbrev.  */
-	  struct comp_unit * u;
+	  struct comp_unit *u;
 
 	  for (u = unit->prev_unit; u != NULL; u = u->prev_unit)
 	    if (info_ptr >= u->info_ptr_unit && info_ptr < u->end_ptr)
@@ -2899,15 +2983,27 @@ find_abstract_instance (struct comp_unit
 	      if (info_ptr >= u->info_ptr_unit && info_ptr < u->end_ptr)
 		break;
 
-	  while (u == NULL)
-	    {
-	      u = stash_comp_unit (unit->stash);
-	      if (u == NULL)
-		break;
-	      if (info_ptr >= u->info_ptr_unit && info_ptr < u->end_ptr)
-		break;
-	      u = NULL;
-	    }
+	  if (attr_ptr->form == DW_FORM_ref_addr)
+	    while (u == NULL)
+	      {
+		u = stash_comp_unit (unit->stash, &unit->stash->f);
+		if (u == NULL)
+		  break;
+		if (info_ptr >= u->info_ptr_unit && info_ptr < u->end_ptr)
+		  break;
+		u = NULL;
+	      }
+
+	  if (attr_ptr->form == DW_FORM_GNU_ref_alt)
+	    while (u == NULL)
+	      {
+		u = stash_comp_unit (unit->stash, &unit->stash->alt);
+		if (u == NULL)
+		  break;
+		if (info_ptr >= u->info_ptr_unit && info_ptr < u->end_ptr)
+		  break;
+		u = NULL;
+	      }
 
 	  if (u == NULL)
 	    {
@@ -2921,23 +3017,6 @@ find_abstract_instance (struct comp_unit
 	  info_ptr_end = unit->end_ptr;
 	}
     }
-  else if (attr_ptr->form == DW_FORM_GNU_ref_alt)
-    {
-      info_ptr = read_alt_indirect_ref (unit, die_ref);
-      if (info_ptr == NULL)
-	{
-	  _bfd_error_handler
-	    (_("DWARF error: unable to read alt ref %" PRIu64),
-	     (uint64_t) die_ref);
-	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
-	}
-      info_ptr_end = (unit->stash->alt_dwarf_info_buffer
-		      + unit->stash->alt_dwarf_info_size);
-
-      /* FIXME: Do we need to locate the correct CU, in a similar
-	 fashion to the code in the DW_FORM_ref_addr case above ?  */
-    }
   else
     {
       /* DW_FORM_ref1, DW_FORM_ref2, DW_FORM_ref4, DW_FORM_ref8 or
@@ -3009,7 +3088,7 @@ find_abstract_instance (struct comp_unit
 		    }
 		  break;
 		case DW_AT_decl_file:
-		  if (!comp_unit_maybe_decode_line_info (unit, unit->stash))
+		  if (!comp_unit_maybe_decode_line_info (unit))
 		    return FALSE;
 		  *filename_ptr = concat_filename (unit->line_table,
 						   attr.u.val);
@@ -3035,16 +3114,16 @@ read_rangelist (struct comp_unit *unit, 
   bfd_byte *ranges_end;
   bfd_vma base_address = unit->base_address;
 
-  if (! unit->stash->dwarf_ranges_buffer)
+  if (! unit->file->dwarf_ranges_buffer)
     {
       if (! read_debug_ranges (unit))
 	return FALSE;
     }
 
-  ranges_ptr = unit->stash->dwarf_ranges_buffer + offset;
-  if (ranges_ptr < unit->stash->dwarf_ranges_buffer)
+  ranges_ptr = unit->file->dwarf_ranges_buffer + offset;
+  if (ranges_ptr < unit->file->dwarf_ranges_buffer)
     return FALSE;
-  ranges_end = unit->stash->dwarf_ranges_buffer + unit->stash->dwarf_ranges_size;
+  ranges_end = unit->file->dwarf_ranges_buffer + unit->file->dwarf_ranges_size;
 
   for (;;)
     {
@@ -3374,6 +3453,8 @@ scan_unit_for_symbols (struct comp_unit 
 
 static struct comp_unit *
 parse_comp_unit (struct dwarf2_debug *stash,
+		 struct dwarf2_debug_file *file,
+		 bfd_byte *info_ptr,
 		 bfd_vma unit_length,
 		 bfd_byte *info_ptr_unit,
 		 unsigned int offset_size)
@@ -3387,12 +3468,11 @@ parse_comp_unit (struct dwarf2_debug *st
   unsigned int abbrev_number, bytes_read, i;
   struct abbrev_info *abbrev;
   struct attribute attr;
-  bfd_byte *info_ptr = stash->info_ptr;
   bfd_byte *end_ptr = info_ptr + unit_length;
   bfd_size_type amt;
   bfd_vma low_pc = 0;
   bfd_vma high_pc = 0;
-  bfd *abfd = stash->bfd_ptr;
+  bfd *abfd = file->bfd_ptr;
   bfd_boolean high_pc_relative = FALSE;
   enum dwarf_unit_type unit_type;
 
@@ -3469,7 +3549,7 @@ parse_comp_unit (struct dwarf2_debug *st
     }
 
   /* Read the abbrevs for this compilation unit into a table.  */
-  abbrevs = read_abbrevs (abfd, abbrev_offset, stash);
+  abbrevs = read_abbrevs (abfd, abbrev_offset, stash, file);
   if (! abbrevs)
     return NULL;
 
@@ -3505,6 +3585,7 @@ parse_comp_unit (struct dwarf2_debug *st
   unit->abbrevs = abbrevs;
   unit->end_ptr = end_ptr;
   unit->stash = stash;
+  unit->file = file;
   unit->info_ptr_unit = info_ptr_unit;
 
   for (i = 0; i < abbrev->num_attrs; ++i)
@@ -3631,18 +3712,17 @@ comp_unit_find_nearest_line (struct comp
 			     const char **filename_ptr,
 			     struct funcinfo **function_ptr,
 			     unsigned int *linenumber_ptr,
-			     unsigned int *discriminator_ptr,
-			     struct dwarf2_debug *stash)
+			     unsigned int *discriminator_ptr)
 {
   bfd_boolean func_p;
 
-  if (!comp_unit_maybe_decode_line_info (unit, stash))
+  if (!comp_unit_maybe_decode_line_info (unit))
     return FALSE;
 
   *function_ptr = NULL;
   func_p = lookup_address_in_function_table (unit, addr, function_ptr);
   if (func_p && (*function_ptr)->tag == DW_TAG_inlined_subroutine)
-    stash->inliner_chain = *function_ptr;
+    unit->stash->inliner_chain = *function_ptr;
 
   return lookup_address_in_line_info_table (unit->line_table, addr,
 					    filename_ptr,
@@ -3655,8 +3735,7 @@ comp_unit_find_nearest_line (struct comp
    FALSE otherwise.  */
 
 static bfd_boolean
-comp_unit_maybe_decode_line_info (struct comp_unit *unit,
-				  struct dwarf2_debug *stash)
+comp_unit_maybe_decode_line_info (struct comp_unit *unit)
 {
   if (unit->error)
     return FALSE;
@@ -3669,7 +3748,7 @@ comp_unit_maybe_decode_line_info (struct
 	  return FALSE;
 	}
 
-      unit->line_table = decode_line_info (unit, stash);
+      unit->line_table = decode_line_info (unit);
 
       if (! unit->line_table)
 	{
@@ -3701,10 +3780,9 @@ comp_unit_find_line (struct comp_unit *u
 		     asymbol *sym,
 		     bfd_vma addr,
 		     const char **filename_ptr,
-		     unsigned int *linenumber_ptr,
-		     struct dwarf2_debug *stash)
+		     unsigned int *linenumber_ptr)
 {
-  if (!comp_unit_maybe_decode_line_info (unit, stash))
+  if (!comp_unit_maybe_decode_line_info (unit))
     return FALSE;
 
   if (sym->flags & BSF_FUNCTION)
@@ -3763,7 +3841,7 @@ comp_unit_hash_info (struct dwarf2_debug
 
   BFD_ASSERT (stash->info_hash_status != STASH_INFO_HASH_DISABLED);
 
-  if (!comp_unit_maybe_decode_line_info (unit, stash))
+  if (!comp_unit_maybe_decode_line_info (unit))
     return FALSE;
 
   BFD_ASSERT (!unit->cached);
@@ -3902,17 +3980,17 @@ static void
 _bfd_dwarf2_stash_syms (struct dwarf2_debug *stash, bfd *abfd,
 			asection **sec, asymbol ***syms)
 {
-  if (stash->bfd_ptr != abfd)
+  if (stash->f.bfd_ptr != abfd)
     {
       asection *s, *d;
 
       if (*sec == NULL)
 	{
-	  *syms = stash->syms;
+	  *syms = stash->f.syms;
 	  return;
 	}
 
-      for (s = abfd->sections, d = stash->bfd_ptr->sections;
+      for (s = abfd->sections, d = stash->f.bfd_ptr->sections;
 	   s != NULL && d != NULL;
 	   s = s->next, d = d->next)
 	{
@@ -3922,7 +4000,7 @@ _bfd_dwarf2_stash_syms (struct dwarf2_de
 	      && strcmp (s->name, d->name) == 0)
 	    {
 	      *sec = d;
-	      *syms = stash->syms;
+	      *syms = stash->f.syms;
 	      break;
 	    }
 	}
@@ -3996,9 +4074,9 @@ place_sections (bfd *orig_bfd, struct dw
 
 	  i++;
 	}
-      if (abfd == stash->bfd_ptr)
+      if (abfd == stash->f.bfd_ptr)
 	break;
-      abfd = stash->bfd_ptr;
+      abfd = stash->f.bfd_ptr;
     }
 
   if (i <= 1)
@@ -4061,14 +4139,14 @@ place_sections (bfd *orig_bfd, struct dw
 	      p->adj_vma = sect->vma;
 	      p++;
 	    }
-	  if (abfd == stash->bfd_ptr)
+	  if (abfd == stash->f.bfd_ptr)
 	    break;
-	  abfd = stash->bfd_ptr;
+	  abfd = stash->f.bfd_ptr;
 	}
     }
 
-  if (orig_bfd != stash->bfd_ptr)
-    set_debug_vma (orig_bfd, stash->bfd_ptr);
+  if (orig_bfd != stash->f.bfd_ptr)
+    set_debug_vma (orig_bfd, stash->f.bfd_ptr);
 
   return TRUE;
 }
@@ -4172,13 +4250,13 @@ stash_maybe_update_info_hash_tables (str
   struct comp_unit *each;
 
   /* Exit if hash tables are up-to-date.  */
-  if (stash->all_comp_units == stash->hash_units_head)
+  if (stash->f.all_comp_units == stash->hash_units_head)
     return TRUE;
 
   if (stash->hash_units_head)
     each = stash->hash_units_head->prev_unit;
   else
-    each = stash->last_comp_unit;
+    each = stash->f.last_comp_unit;
 
   while (each)
     {
@@ -4191,7 +4269,7 @@ stash_maybe_update_info_hash_tables (str
       each = each->prev_unit;
     }
 
-  stash->hash_units_head = stash->all_comp_units;
+  stash->hash_units_head = stash->f.all_comp_units;
   return TRUE;
 }
 
@@ -4206,7 +4284,7 @@ stash_verify_info_hash_table (struct dwa
   struct info_list_node *node;
   bfd_boolean found;
 
-  for (each_unit = stash->all_comp_units;
+  for (each_unit = stash->f.all_comp_units;
        each_unit;
        each_unit = each_unit->next_unit)
     {
@@ -4386,7 +4464,7 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd,
 	{
 	  /* Check that we did previously find some debug information
 	     before attempting to make use of it.  */
-	  if (stash->bfd_ptr != NULL)
+	  if (stash->f.bfd_ptr != NULL)
 	    {
 	      if (do_place && !place_sections (abfd, stash))
 		return FALSE;
@@ -4406,10 +4484,20 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd,
     }
   stash->orig_bfd = abfd;
   stash->debug_sections = debug_sections;
-  stash->syms = symbols;
+  stash->f.syms = symbols;
   if (!save_section_vma (abfd, stash))
     return FALSE;
 
+  stash->f.abbrev_offsets = htab_create_alloc (10, hash_abbrev, eq_abbrev,
+					       del_abbrev, calloc, free);
+  if (!stash->f.abbrev_offsets)
+    return FALSE;
+
+  stash->alt.abbrev_offsets = htab_create_alloc (10, hash_abbrev, eq_abbrev,
+						 del_abbrev, calloc, free);
+  if (!stash->alt.abbrev_offsets)
+    return FALSE;
+
   *pinfo = stash;
 
   if (debug_bfd == NULL)
@@ -4449,10 +4537,10 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd,
 	}
 
       symbols = bfd_get_outsymbols (debug_bfd);
-      stash->syms = symbols;
+      stash->f.syms = symbols;
       stash->close_on_cleanup = TRUE;
     }
-  stash->bfd_ptr = debug_bfd;
+  stash->f.bfd_ptr = debug_bfd;
 
   if (do_place
       && !place_sections (abfd, stash))
@@ -4475,7 +4563,7 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd,
       total_size = msec->size;
       if (! read_section (debug_bfd, &stash->debug_sections[debug_info],
 			  symbols, 0,
-			  &stash->info_ptr_memory, &total_size))
+			  &stash->f.dwarf_info_buffer, &total_size))
 	return FALSE;
     }
   else
@@ -4495,8 +4583,8 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd,
 	  total_size += msec->size;
 	}
 
-      stash->info_ptr_memory = (bfd_byte *) bfd_malloc (total_size);
-      if (stash->info_ptr_memory == NULL)
+      stash->f.dwarf_info_buffer = (bfd_byte *) bfd_malloc (total_size);
+      if (stash->f.dwarf_info_buffer == NULL)
 	return FALSE;
 
       total_size = 0;
@@ -4511,7 +4599,7 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd,
 	    continue;
 
 	  if (!(bfd_simple_get_relocated_section_contents
-		(debug_bfd, msec, stash->info_ptr_memory + total_size,
+		(debug_bfd, msec, stash->f.dwarf_info_buffer + total_size,
 		 symbols)))
 	    return FALSE;
 
@@ -4519,35 +4607,33 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd,
 	}
     }
 
-  stash->info_ptr = stash->info_ptr_memory;
-  stash->info_ptr_end = stash->info_ptr + total_size;
-  stash->sec = find_debug_info (debug_bfd, debug_sections, NULL);
-  stash->sec_info_ptr = stash->info_ptr;
+  stash->f.info_ptr = stash->f.dwarf_info_buffer;
+  stash->f.dwarf_info_size = total_size;
   return TRUE;
 }
 
-/* Parse the next DWARF2 compilation unit at STASH->INFO_PTR.  */
+/* Parse the next DWARF2 compilation unit at FILE->INFO_PTR.  */
 
 static struct comp_unit *
-stash_comp_unit (struct dwarf2_debug *stash)
+stash_comp_unit (struct dwarf2_debug *stash, struct dwarf2_debug_file *file)
 {
   bfd_size_type length;
   unsigned int offset_size;
-  bfd_byte *info_ptr_unit = stash->info_ptr;
+  bfd_byte *info_ptr_unit = file->info_ptr;
+  bfd_byte *info_ptr_end = file->dwarf_info_buffer + file->dwarf_info_size;
 
-  if (stash->info_ptr >= stash->info_ptr_end)
+  if (file->info_ptr >= info_ptr_end)
     return NULL;
 
-  length = read_4_bytes (stash->bfd_ptr, stash->info_ptr,
-			 stash->info_ptr_end);
+  length = read_4_bytes (file->bfd_ptr, file->info_ptr, info_ptr_end);
   /* A 0xffffff length is the DWARF3 way of indicating
      we use 64-bit offsets, instead of 32-bit offsets.  */
   if (length == 0xffffffff)
     {
       offset_size = 8;
-      length = read_8_bytes (stash->bfd_ptr, stash->info_ptr + 4,
-			     stash->info_ptr_end);
-      stash->info_ptr += 12;
+      length = read_8_bytes (file->bfd_ptr, file->info_ptr + 4,
+			     info_ptr_end);
+      file->info_ptr += 12;
     }
   /* A zero length is the IRIX way of indicating 64-bit offsets,
      mostly because the 64-bit length will generally fit in 32
@@ -4555,9 +4641,9 @@ stash_comp_unit (struct dwarf2_debug *st
   else if (length == 0)
     {
       offset_size = 8;
-      length = read_4_bytes (stash->bfd_ptr, stash->info_ptr + 4,
-			     stash->info_ptr_end);
-      stash->info_ptr += 8;
+      length = read_4_bytes (file->bfd_ptr, file->info_ptr + 4,
+			     info_ptr_end);
+      file->info_ptr += 8;
     }
   /* In the absence of the hints above, we assume 32-bit DWARF2
      offsets even for targets with 64-bit addresses, because:
@@ -4571,42 +4657,34 @@ stash_comp_unit (struct dwarf2_debug *st
   else
     {
       offset_size = 4;
-      stash->info_ptr += 4;
+      file->info_ptr += 4;
     }
 
   if (length != 0
-      && stash->info_ptr + length <= stash->info_ptr_end
-      && stash->info_ptr + length > stash->info_ptr)
+      && file->info_ptr + length <= info_ptr_end
+      && file->info_ptr + length > file->info_ptr)
     {
-      struct comp_unit *each = parse_comp_unit (stash, length, info_ptr_unit,
-						offset_size);
+      struct comp_unit *each = parse_comp_unit (stash, file,
+						file->info_ptr, length,
+						info_ptr_unit, offset_size);
       if (each)
 	{
-	  if (stash->all_comp_units)
-	    stash->all_comp_units->prev_unit = each;
+	  if (file->all_comp_units)
+	    file->all_comp_units->prev_unit = each;
 	  else
-	    stash->last_comp_unit = each;
+	    file->last_comp_unit = each;
 
-	  each->next_unit = stash->all_comp_units;
-	  stash->all_comp_units = each;
+	  each->next_unit = file->all_comp_units;
+	  file->all_comp_units = each;
 
-	  stash->info_ptr += length;
-
-	  if ((bfd_size_type) (stash->info_ptr - stash->sec_info_ptr)
-	      == stash->sec->size)
-	    {
-	      stash->sec = find_debug_info (stash->bfd_ptr,
-					    stash->debug_sections,
-					    stash->sec);
-	      stash->sec_info_ptr = stash->info_ptr;
-	    }
+	  file->info_ptr += length;
 	  return each;
 	}
     }
 
   /* Don't trust any of the DWARF info after a corrupted length or
      parse error.  */
-  stash->info_ptr = stash->info_ptr_end;
+  file->info_ptr = info_ptr_end;
   return NULL;
 }
 
@@ -4661,11 +4739,11 @@ _bfd_dwarf2_find_symbol_bias (asymbol **
 	}
     }
 
-  for (unit = stash->all_comp_units; unit; unit = unit->next_unit)
+  for (unit = stash->f.all_comp_units; unit; unit = unit->next_unit)
     {
       struct funcinfo * func;
 
-      comp_unit_maybe_decode_line_info (unit, stash);
+      comp_unit_maybe_decode_line_info (unit);
 
       for (func = unit->function_table; func != NULL; func = func->prev_func)
 	if (func->name && func->arange.low)
@@ -4701,9 +4779,7 @@ _bfd_dwarf2_find_symbol_bias (asymbol **
    info is present but not regarding the requested code location.
    Returns 0 otherwise.
    SYMBOLS contains the symbol table for ABFD.
-   DEBUG_SECTIONS contains the name of the dwarf debug sections.
-   field and in the abbreviation offset, or zero to indicate that the
-   default value should be used.  */
+   DEBUG_SECTIONS contains the name of the dwarf debug sections.  */
 
 int
 _bfd_dwarf2_find_nearest_line (bfd *abfd,
@@ -4800,7 +4876,7 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
 
   /* A null info_ptr indicates that there is no dwarf2 info
      (or that an error occured while setting up the stash).  */
-  if (! stash->info_ptr)
+  if (! stash->f.info_ptr)
     return FALSE;
 
   stash->inliner_chain = NULL;
@@ -4829,13 +4905,13 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
       else
 	{
 	  /* Check the previously read comp. units first.  */
-	  for (each = stash->all_comp_units; each; each = each->next_unit)
+	  for (each = stash->f.all_comp_units; each; each = each->next_unit)
 	    if ((symbol->flags & BSF_FUNCTION) == 0
 		|| each->arange.high == 0
 		|| comp_unit_contains_address (each, addr))
 	      {
 		found = comp_unit_find_line (each, symbol, addr, filename_ptr,
-					     linenumber_ptr, stash);
+					     linenumber_ptr);
 		if (found)
 		  goto done;
 	      }
@@ -4849,18 +4925,16 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
       unsigned int local_linenumber = 0;
       unsigned int local_discriminator = 0;
 
-      for (each = stash->all_comp_units; each; each = each->next_unit)
+      for (each = stash->f.all_comp_units; each; each = each->next_unit)
 	{
 	  bfd_vma range = (bfd_vma) -1;
 
 	  found = ((each->arange.high == 0
 		    || comp_unit_contains_address (each, addr))
-		   && (range = comp_unit_find_nearest_line (each, addr,
-							    & local_filename,
-							    & local_function,
-							    & local_linenumber,
-							    & local_discriminator,
-							    stash)) != 0);
+		   && (range = (comp_unit_find_nearest_line
+				(each, addr, &local_filename,
+				 &local_function, &local_linenumber,
+				 &local_discriminator))) != 0);
 	  if (found)
 	    {
 	      /* PRs 15935 15994: Bogus debug information may have provided us
@@ -4897,7 +4971,7 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
     }
 
   /* Read each remaining comp. units checking each as they are read.  */
-  while ((each = stash_comp_unit (stash)) != NULL)
+  while ((each = stash_comp_unit (stash, &stash->f)) != NULL)
     {
       /* DW_AT_low_pc and DW_AT_high_pc are optional for
 	 compilation units.  If we don't have them (i.e.,
@@ -4909,9 +4983,7 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
 		  || each->arange.high == 0
 		  || comp_unit_contains_address (each, addr))
 		 && comp_unit_find_line (each, symbol, addr,
-					 filename_ptr,
-					 linenumber_ptr,
-					 stash));
+					 filename_ptr, linenumber_ptr));
       else
 	found = ((each->arange.high == 0
 		  || comp_unit_contains_address (each, addr))
@@ -4919,8 +4991,7 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
 						 filename_ptr,
 						 &function,
 						 linenumber_ptr,
-						 discriminator_ptr,
-						 stash) != 0);
+						 discriminator_ptr) != 0);
 
       if (found)
 	break;
@@ -4999,96 +5070,85 @@ _bfd_dwarf2_cleanup_debug_info (bfd *abf
 {
   struct dwarf2_debug *stash = (struct dwarf2_debug *) *pinfo;
   struct comp_unit *each;
+  struct dwarf2_debug_file *file;
 
   if (abfd == NULL || stash == NULL)
     return;
 
-  for (each = stash->all_comp_units; each; each = each->next_unit)
-    {
-      struct abbrev_info **abbrevs = each->abbrevs;
-      struct funcinfo *function_table = each->function_table;
-      struct varinfo *variable_table = each->variable_table;
-      size_t i;
+  if (stash->varinfo_hash_table)
+    bfd_hash_table_free (&stash->varinfo_hash_table->base);
+  if (stash->funcinfo_hash_table)
+    bfd_hash_table_free (&stash->funcinfo_hash_table->base);
 
-      for (i = 0; i < ABBREV_HASH_SIZE; i++)
+  file = &stash->f;
+  while (1)
+    {
+      for (each = file->all_comp_units; each; each = each->next_unit)
 	{
-	  struct abbrev_info *abbrev = abbrevs[i];
+	  struct funcinfo *function_table = each->function_table;
+	  struct varinfo *variable_table = each->variable_table;
 
-	  while (abbrev)
+	  if (each->line_table && each->line_table != file->line_table)
 	    {
-	      free (abbrev->attrs);
-	      abbrev = abbrev->next;
+	      free (each->line_table->files);
+	      free (each->line_table->dirs);
 	    }
-	}
 
-      if (each->line_table)
-	{
-	  free (each->line_table->dirs);
-	  free (each->line_table->files);
-	}
+	  if (each->lookup_funcinfo_table)
+	    {
+	      free (each->lookup_funcinfo_table);
+	      each->lookup_funcinfo_table = NULL;
+	    }
 
-      while (function_table)
-	{
-	  if (function_table->file)
+	  while (function_table)
 	    {
-	      free (function_table->file);
-	      function_table->file = NULL;
+	      if (function_table->file)
+		{
+		  free (function_table->file);
+		  function_table->file = NULL;
+		}
+	      if (function_table->caller_file)
+		{
+		  free (function_table->caller_file);
+		  function_table->caller_file = NULL;
+		}
+	      function_table = function_table->prev_func;
 	    }
 
-	  if (function_table->caller_file)
+	  while (variable_table)
 	    {
-	      free (function_table->caller_file);
-	      function_table->caller_file = NULL;
+	      if (variable_table->file)
+		{
+		  free (variable_table->file);
+		  variable_table->file = NULL;
+		}
+	      variable_table = variable_table->prev_var;
 	    }
-	  function_table = function_table->prev_func;
 	}
 
-      if (each->lookup_funcinfo_table)
+      if (file->line_table)
 	{
-	  free (each->lookup_funcinfo_table);
-	  each->lookup_funcinfo_table = NULL;
+	  free (file->line_table->files);
+	  free (file->line_table->dirs);
 	}
+      htab_delete (file->abbrev_offsets);
 
-      while (variable_table)
-	{
-	  if (variable_table->file)
-	    {
-	      free (variable_table->file);
-	      variable_table->file = NULL;
-	    }
-
-	  variable_table = variable_table->prev_var;
-	}
+      free (file->dwarf_line_str_buffer);
+      free (file->dwarf_str_buffer);
+      free (file->dwarf_ranges_buffer);
+      free (file->dwarf_line_buffer);
+      free (file->dwarf_abbrev_buffer);
+      free (file->dwarf_info_buffer);
+      if (file == &stash->alt)
+	break;
+      file = &stash->alt;
     }
-
-  if (stash->funcinfo_hash_table)
-    bfd_hash_table_free (&stash->funcinfo_hash_table->base);
-  if (stash->varinfo_hash_table)
-    bfd_hash_table_free (&stash->varinfo_hash_table->base);
-  if (stash->dwarf_abbrev_buffer)
-    free (stash->dwarf_abbrev_buffer);
-  if (stash->dwarf_line_buffer)
-    free (stash->dwarf_line_buffer);
-  if (stash->dwarf_str_buffer)
-    free (stash->dwarf_str_buffer);
-  if (stash->dwarf_line_str_buffer)
-    free (stash->dwarf_line_str_buffer);
-  if (stash->dwarf_ranges_buffer)
-    free (stash->dwarf_ranges_buffer);
-  if (stash->info_ptr_memory)
-    free (stash->info_ptr_memory);
+  free (stash->sec_vma);
+  free (stash->adjusted_sections);
   if (stash->close_on_cleanup)
-    bfd_close (stash->bfd_ptr);
-  if (stash->alt_dwarf_str_buffer)
-    free (stash->alt_dwarf_str_buffer);
-  if (stash->alt_dwarf_info_buffer)
-    free (stash->alt_dwarf_info_buffer);
-  if (stash->sec_vma)
-    free (stash->sec_vma);
-  if (stash->adjusted_sections)
-    free (stash->adjusted_sections);
-  if (stash->alt_bfd_ptr)
-    bfd_close (stash->alt_bfd_ptr);
+    bfd_close (stash->f.bfd_ptr);
+  if (stash->alt.bfd_ptr)
+    bfd_close (stash->alt.bfd_ptr);
 }
 
 /* Find the function to a particular section and offset,
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/bfd/version.h ./bfd/version.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/bfd/version.h	2019-12-03 01:49:13.000000000 +0000
+++ ./bfd/version.h	2019-12-04 01:50:04.000000000 +0000
@@ -16,7 +16,7 @@
 
    In releases, the date is not included in either version strings or
    sonames.  */
-#define BFD_VERSION_DATE 20191203
+#define BFD_VERSION_DATE 20191204
 #define BFD_VERSION @bfd_version@
 #define BFD_VERSION_STRING  @bfd_version_package@ @bfd_version_string@
 #define REPORT_BUGS_TO @report_bugs_to@
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/djunpack.bat ./djunpack.bat
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/djunpack.bat	2019-12-03 01:53:58.000000000 +0000
+++ ./djunpack.bat	2019-12-04 01:55:30.000000000 +0000
@@ -17,8 +17,8 @@ Rem
 Rem The following 2 lines need to be changed with each new GDB release, to
 Rem be identical to the name of the top-level directory where the GDB
 Rem distribution unpacks itself.
-set GDBVER=$package-9.0.50.20191203
-if "%GDBVER%"=="$package-9.0.50.20191203" GoTo EnvOk
+set GDBVER=$package-9.0.50.20191204
+if "%GDBVER%"=="$package-9.0.50.20191204" GoTo EnvOk
 Rem If their environment space is too small, re-exec with a larger one
 command.com /e:4096 /c %0 %1
 GoTo End
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/bcache.c ./gdb/bcache.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/bcache.c	2019-12-03 01:49:15.000000000 +0000
+++ ./gdb/bcache.c	2019-12-04 01:50:06.000000000 +0000
@@ -51,31 +51,6 @@ struct bstring
   d;
 };
 
-/* The old hash function was stolen from SDBM. This is what DB 3.0
-   uses now, and is better than the old one.  */
-
-unsigned long
-hash(const void *addr, int length)
-{
-  return hash_continue (addr, length, 0);
-}
-
-/* Continue the calculation of the hash H at the given address.  */
-
-unsigned long
-hash_continue (const void *addr, int length, unsigned long h)
-{
-  const unsigned char *k, *e;
-
-  k = (const unsigned char *)addr;
-  e = k+length;
-  for (; k< e;++k)
-    {
-      h *=16777619;
-      h ^= *k;
-    }
-  return (h);
-}
 
 /* Growing the bcache's hash table.  */
 
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/bcache.h ./gdb/bcache.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/bcache.h	2019-12-03 01:49:15.000000000 +0000
+++ ./gdb/bcache.h	2019-12-04 01:50:06.000000000 +0000
@@ -138,23 +138,18 @@
 
 struct bstring;
 
-/* The hash functions */
-extern unsigned long hash (const void *addr, int length);
-extern unsigned long hash_continue (const void *addr, int length,
-                                    unsigned long h);
-
 struct bcache
 {
   /* Allocate a bcache.  HASH_FN and COMPARE_FN can be used to pass in
      custom hash, and compare functions to be used by this bcache.  If
-     HASH_FUNCTION is NULL hash() is used and if COMPARE_FUNCTION is
+     HASH_FUNCTION is NULL fast_hash() is used and if COMPARE_FUNCTION is
      NULL memcmp() is used.  */
 
   explicit bcache (unsigned long (*hash_fn)(const void *,
 					    int length) = nullptr,
 		   int (*compare_fn)(const void *, const void *,
 				     int length) = nullptr)
-    : m_hash_function (hash_fn == nullptr ? hash : hash_fn),
+    : m_hash_function (hash_fn == nullptr ? default_hash : hash_fn),
       m_compare_function (compare_fn == nullptr ? compare : compare_fn)
   {
   }
@@ -217,6 +212,12 @@ private:
   /* Default compare function.  */
   static int compare (const void *addr1, const void *addr2, int length);
 
+  /* Default hash function.  */
+  static unsigned long default_hash (const void *ptr, int length)
+  {
+    return fast_hash (ptr, length, 0);
+  }
+
   /* Expand the hash table.  */
   void expand_hash_table ();
 };
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/ChangeLog ./gdb/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/ChangeLog	2019-12-03 01:49:15.000000000 +0000
+++ ./gdb/ChangeLog	2019-12-04 01:50:06.000000000 +0000
@@ -1,3 +1,21 @@
+2019-12-03  Christian Biesinger  <cbiesinger@google.com>
+
+	* bcache.c (hash): Remove.
+	(hash_continue): Remove.
+	* bcache.h (hash): Remove.
+	(hash_continue): Remove.
+	(struct bcache) <ctor>: Update.
+	* psymtab.c (psymbol_hash): Update.
+	* stabsread.c (hashname): Update.
+	* utils.h (fast_hash): Add an argument for a start value,
+	defaulting to zero.
+
+2019-12-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	* symtab.c (symbol_cache_clear_slot):  Move close to cleared type.
+	(destroy_block_symbol_cache): New function.
+	(symbol_cache:~symbol_cache) Call destroy_block_symbol_cache.
+	(resize_symbol_cache): Likewise.
+
 2019-12-02  Tom Tromey  <tom@tromey.com>
 
 	* unittests/tui-selftests.c (run_tests): Make conditional.
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gcore.1 ./gdb/doc/gcore.1
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gcore.1	2019-12-03 01:53:52.000000000 +0000
+++ ./gdb/doc/gcore.1	2019-12-04 01:55:16.000000000 +0000
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GCORE 1"
-.TH GCORE 1 "2019-12-03" "gdb-9.0.50.20191203-git" "GNU Development Tools"
+.TH GCORE 1 "2019-12-04" "gdb-9.0.50.20191204-git" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.1 ./gdb/doc/gdb.1
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.1	2019-12-03 01:53:51.000000000 +0000
+++ ./gdb/doc/gdb.1	2019-12-04 01:55:16.000000000 +0000
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GDB 1"
-.TH GDB 1 "2019-12-03" "gdb-9.0.50.20191203-git" "GNU Development Tools"
+.TH GDB 1 "2019-12-04" "gdb-9.0.50.20191204-git" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb-add-index.1 ./gdb/doc/gdb-add-index.1
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb-add-index.1	2019-12-03 01:53:52.000000000 +0000
+++ ./gdb/doc/gdb-add-index.1	2019-12-04 01:55:17.000000000 +0000
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GDB-ADD-INDEX 1"
-.TH GDB-ADD-INDEX 1 "2019-12-03" "gdb-9.0.50.20191203-git" "GNU Development Tools"
+.TH GDB-ADD-INDEX 1 "2019-12-04" "gdb-9.0.50.20191204-git" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info ./gdb/doc/gdb.info
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info	2019-12-03 01:53:48.000000000 +0000
+++ ./gdb/doc/gdb.info	2019-12-04 01:55:12.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191204-git.
 
    Copyright (C) 1988-2019 Free Software Foundation, Inc.
 
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info-1 ./gdb/doc/gdb.info-1
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info-1	2019-12-03 01:53:34.000000000 +0000
+++ ./gdb/doc/gdb.info-1	2019-12-04 01:54:52.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191204-git.
 
    Copyright (C) 1988-2019 Free Software Foundation, Inc.
 
@@ -44,7 +44,7 @@ Debugging with GDB
 
 This file describes GDB, the GNU symbolic debugger.
 
-   This is the Tenth Edition, for GDB (GDB) Version 9.0.50.20191203-git.
+   This is the Tenth Edition, for GDB (GDB) Version 9.0.50.20191204-git.
 
    Copyright (C) 1988-2019 Free Software Foundation, Inc.
 
@@ -507,7 +507,7 @@ Let us use GDB to try to see what is goi
      There is absolutely no warranty for GDB; type "show warranty"
       for details.
 
-     GDB 9.0.50.20191203-git, Copyright 1999 Free Software Foundation, Inc...
+     GDB 9.0.50.20191204-git, Copyright 1999 Free Software Foundation, Inc...
      (gdb)
 
 GDB reads only enough symbol data to know where to find the rest when
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info-2 ./gdb/doc/gdb.info-2
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info-2	2019-12-03 01:53:35.000000000 +0000
+++ ./gdb/doc/gdb.info-2	2019-12-04 01:54:55.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191204-git.
 
    Copyright (C) 1988-2019 Free Software Foundation, Inc.
 
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info-3 ./gdb/doc/gdb.info-3
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info-3	2019-12-03 01:53:37.000000000 +0000
+++ ./gdb/doc/gdb.info-3	2019-12-04 01:54:58.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191204-git.
 
    Copyright (C) 1988-2019 Free Software Foundation, Inc.
 
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info-4 ./gdb/doc/gdb.info-4
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info-4	2019-12-03 01:53:40.000000000 +0000
+++ ./gdb/doc/gdb.info-4	2019-12-04 01:55:01.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191204-git.
 
    Copyright (C) 1988-2019 Free Software Foundation, Inc.
 
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info-5 ./gdb/doc/gdb.info-5
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info-5	2019-12-03 01:53:43.000000000 +0000
+++ ./gdb/doc/gdb.info-5	2019-12-04 01:55:04.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191204-git.
 
    Copyright (C) 1988-2019 Free Software Foundation, Inc.
 
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info-6 ./gdb/doc/gdb.info-6
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info-6	2019-12-03 01:53:46.000000000 +0000
+++ ./gdb/doc/gdb.info-6	2019-12-04 01:55:08.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191204-git.
 
    Copyright (C) 1988-2019 Free Software Foundation, Inc.
 
@@ -4549,7 +4549,7 @@ and TeX (or 'texi2roff') to typeset the 
 
    GDB includes an already formatted copy of the on-line Info version of
 this manual in the 'gdb' subdirectory.  The main Info file is
-'gdb-9.0.50.20191203-git/gdb/gdb.info', and it refers to subordinate
+'gdb-9.0.50.20191204-git/gdb/gdb.info', and it refers to subordinate
 files matching 'gdb.info*' in the same directory.  If necessary, you can
 print out these files, or read them with any editor; but they are easier
 to read using the 'info' subsystem in GNU Emacs or the standalone 'info'
@@ -4559,8 +4559,8 @@ program, available as part of the GNU Te
 Info formatting programs, such as 'texinfo-format-buffer' or 'makeinfo'.
 
    If you have 'makeinfo' installed, and are in the top level GDB source
-directory ('gdb-9.0.50.20191203-git', in the case of version
-9.0.50.20191203-git), you can make the Info file by typing:
+directory ('gdb-9.0.50.20191204-git', in the case of version
+9.0.50.20191204-git), you can make the Info file by typing:
 
      cd gdb
      make gdb.info
@@ -4585,7 +4585,7 @@ On its own, TeX cannot either read or ty
 
    If you have TeX and a DVI printer program installed, you can typeset
 and print this manual.  First switch to the 'gdb' subdirectory of the
-main source directory (for example, to 'gdb-9.0.50.20191203-git/gdb')
+main source directory (for example, to 'gdb-9.0.50.20191204-git/gdb')
 and type:
 
      make gdb.dvi
@@ -4594,8 +4594,8 @@ and type:
 
    ---------- Footnotes ----------
 
-   (1) In 'gdb-9.0.50.20191203-git/gdb/refcard.ps' of the version
-9.0.50.20191203-git release.
+   (1) In 'gdb-9.0.50.20191204-git/gdb/refcard.ps' of the version
+9.0.50.20191204-git release.
 
 
 File: gdb.info,  Node: Installing GDB,  Next: Maintenance Commands,  Prev: Formatting Documentation,  Up: Top
@@ -4746,35 +4746,35 @@ preparing GDB for installation; you can 
 a single directory, whose name is usually composed by appending the
 version number to 'gdb'.
 
-   For example, the GDB version 9.0.50.20191203-git distribution is in
-the 'gdb-9.0.50.20191203-git' directory.  That directory contains:
+   For example, the GDB version 9.0.50.20191204-git distribution is in
+the 'gdb-9.0.50.20191204-git' directory.  That directory contains:
 
-'gdb-9.0.50.20191203-git/configure (and supporting files)'
+'gdb-9.0.50.20191204-git/configure (and supporting files)'
      script for configuring GDB and all its supporting libraries
 
-'gdb-9.0.50.20191203-git/gdb'
+'gdb-9.0.50.20191204-git/gdb'
      the source specific to GDB itself
 
-'gdb-9.0.50.20191203-git/bfd'
+'gdb-9.0.50.20191204-git/bfd'
      source for the Binary File Descriptor library
 
-'gdb-9.0.50.20191203-git/include'
+'gdb-9.0.50.20191204-git/include'
      GNU include files
 
-'gdb-9.0.50.20191203-git/libiberty'
+'gdb-9.0.50.20191204-git/libiberty'
      source for the '-liberty' free software library
 
-'gdb-9.0.50.20191203-git/opcodes'
+'gdb-9.0.50.20191204-git/opcodes'
      source for the library of opcode tables and disassemblers
 
-'gdb-9.0.50.20191203-git/readline'
+'gdb-9.0.50.20191204-git/readline'
      source for the GNU command-line interface
 
    There may be other subdirectories as well.
 
    The simplest way to configure and build GDB is to run 'configure'
 from the 'gdb-VERSION-NUMBER' source directory, which in this example is
-the 'gdb-9.0.50.20191203-git' directory.
+the 'gdb-9.0.50.20191204-git' directory.
 
    First switch to the 'gdb-VERSION-NUMBER' source directory if you are
 not already in it; then run 'configure'.  Pass the identifier for the
@@ -4782,7 +4782,7 @@ platform on which GDB will run as an arg
 
    For example:
 
-     cd gdb-9.0.50.20191203-git
+     cd gdb-9.0.50.20191204-git
      ./configure
      make
 
@@ -4830,13 +4830,13 @@ to specify a path to find 'configure' it
 directory.  If the path to 'configure' would be the same as the argument
 to '--srcdir', you can leave out the '--srcdir' option; it is assumed.)
 
-   For example, with version 9.0.50.20191203-git, you can build GDB in a
+   For example, with version 9.0.50.20191204-git, you can build GDB in a
 separate directory for a Sun 4 like this:
 
-     cd gdb-9.0.50.20191203-git
+     cd gdb-9.0.50.20191204-git
      mkdir ../gdb-sun4
      cd ../gdb-sun4
-     ../gdb-9.0.50.20191203-git/configure
+     ../gdb-9.0.50.20191204-git/configure
      make
 
    When 'configure' builds a configuration using a remote source
@@ -4847,7 +4847,7 @@ the example, you'd find the Sun 4 librar
 
    Make sure that your path to the 'configure' script has just one
 instance of 'gdb' in it.  If your path to 'configure' looks like
-'../gdb-9.0.50.20191203-git/gdb/configure', you are configuring only one
+'../gdb-9.0.50.20191204-git/gdb/configure', you are configuring only one
 subdirectory of GDB, not the whole package.  This leads to build errors
 about missing include files such as 'bfd/bfd.h'.
 
@@ -4863,8 +4863,8 @@ a configured directory--whatever directo
 
    The 'Makefile' that 'configure' generates in each source directory
 also runs recursively.  If you type 'make' in a source directory such as
-'gdb-9.0.50.20191203-git' (or in a separate configured directory
-configured with '--srcdir=DIRNAME/gdb-9.0.50.20191203-git'), you will
+'gdb-9.0.50.20191204-git' (or in a separate configured directory
+configured with '--srcdir=DIRNAME/gdb-9.0.50.20191204-git'), you will
 build all the required libraries, and then build GDB.
 
    When you have multiple hosts or targets configured in separate
@@ -4909,7 +4909,7 @@ you can use it to test your guesses on a
      Invalid configuration `i986v': machine `i986v' not recognized
 
 'config.sub' is also distributed in the GDB source directory
-('gdb-9.0.50.20191203-git', for version 9.0.50.20191203-git).
+('gdb-9.0.50.20191204-git', for version 9.0.50.20191204-git).
 
 
 File: gdb.info,  Node: Configure Options,  Next: System-wide configuration,  Prev: Config Names,  Up: Installing GDB
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info-7 ./gdb/doc/gdb.info-7
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info-7	2019-12-03 01:53:48.000000000 +0000
+++ ./gdb/doc/gdb.info-7	2019-12-04 01:55:11.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191204-git.
 
    Copyright (C) 1988-2019 Free Software Foundation, Inc.
 
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info-8 ./gdb/doc/gdb.info-8
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdb.info-8	2019-12-03 01:53:48.000000000 +0000
+++ ./gdb/doc/gdb.info-8	2019-12-04 01:55:12.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191204-git.
 
    Copyright (C) 1988-2019 Free Software Foundation, Inc.
 
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdbinit.5 ./gdb/doc/gdbinit.5
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdbinit.5	2019-12-03 01:53:52.000000000 +0000
+++ ./gdb/doc/gdbinit.5	2019-12-04 01:55:17.000000000 +0000
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GDBINIT 5"
-.TH GDBINIT 5 "2019-12-03" "gdb-9.0.50.20191203-git" "GNU Development Tools"
+.TH GDBINIT 5 "2019-12-04" "gdb-9.0.50.20191204-git" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdbserver.1 ./gdb/doc/gdbserver.1
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/doc/gdbserver.1	2019-12-03 01:53:51.000000000 +0000
+++ ./gdb/doc/gdbserver.1	2019-12-04 01:55:16.000000000 +0000
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GDBSERVER 1"
-.TH GDBSERVER 1 "2019-12-03" "gdb-9.0.50.20191203-git" "GNU Development Tools"
+.TH GDBSERVER 1 "2019-12-04" "gdb-9.0.50.20191204-git" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/po/gdb.pot ./gdb/po/gdb.pot
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/po/gdb.pot	2019-12-03 01:53:23.000000000 +0000
+++ ./gdb/po/gdb.pot	2019-12-04 01:54:37.000000000 +0000
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-12-03 01:53+0000\n"
+"POT-Creation-Date: 2019-12-04 01:54+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -305,7 +305,7 @@ msgstr ""
 
 #: ada-exp.y:1327 c-exp.y:1088 c-exp.y:1141 cli/cli-cmds.c:1165 d-exp.y:493
 #: f-exp.y:504 go-exp.y:579 linespec.c:1623 linespec.c:3824 p-exp.y:707
-#: p-exp.y:766 source.c:214 symtab.c:4292
+#: p-exp.y:766 source.c:214 symtab.c:4305
 msgid "No symbol table is loaded.  Use the \"file\" command."
 msgstr ""
 
@@ -3124,104 +3124,104 @@ msgstr ""
 #. i18n: Like "Percentage of duplicates, by count: (not applicable)".
 #. i18n: "Average entry size: (not applicable)".
 #. i18n: "Average hash chain length: (not applicable)".
-#: bcache.c:264 bcache.c:363 bcache.c:393
+#: bcache.c:239 bcache.c:338 bcache.c:368
 msgid "(not applicable)\n"
 msgstr ""
 
-#: bcache.c:344
+#: bcache.c:319
 #, possible-c-format
 msgid "  M_Cached '%s' statistics:\n"
 msgstr ""
 
-#: bcache.c:345
+#: bcache.c:320
 #, possible-c-format
 msgid "    Total object count:  %ld\n"
 msgstr ""
 
-#: bcache.c:346
+#: bcache.c:321
 #, possible-c-format
 msgid "    Unique object count: %lu\n"
 msgstr ""
 
-#: bcache.c:347
+#: bcache.c:322
 msgid "    Percentage of duplicates, by count: "
 msgstr ""
 
-#: bcache.c:351
+#: bcache.c:326
 #, possible-c-format
 msgid "    Total object size:   %ld\n"
 msgstr ""
 
-#: bcache.c:352
+#: bcache.c:327
 #, possible-c-format
 msgid "    Unique object size:  %ld\n"
 msgstr ""
 
-#: bcache.c:353
+#: bcache.c:328
 msgid "    Percentage of duplicates, by size:  "
 msgstr ""
 
-#: bcache.c:357
+#: bcache.c:332
 #, possible-c-format
 msgid "    Max entry size:     %d\n"
 msgstr ""
 
-#: bcache.c:358
+#: bcache.c:333
 msgid "    Average entry size: "
 msgstr ""
 
-#: bcache.c:364
+#: bcache.c:339
 #, possible-c-format
 msgid "    Median entry size:  %d\n"
 msgstr ""
 
-#: bcache.c:367
+#: bcache.c:342
 #, possible-c-format
 msgid "    Total memory used by bcache, including overhead: %ld\n"
 msgstr ""
 
-#: bcache.c:370
+#: bcache.c:345
 msgid "    Percentage memory overhead: "
 msgstr ""
 
-#: bcache.c:372
+#: bcache.c:347
 msgid "    Net memory savings:         "
 msgstr ""
 
-#: bcache.c:376
+#: bcache.c:351
 #, possible-c-format
 msgid "    Hash table size:           %3d\n"
 msgstr ""
 
-#: bcache.c:378
+#: bcache.c:353
 #, possible-c-format
 msgid "    Hash table expands:        %lu\n"
 msgstr ""
 
-#: bcache.c:380
+#: bcache.c:355
 #, possible-c-format
 msgid "    Hash table hashes:         %lu\n"
 msgstr ""
 
-#: bcache.c:382
+#: bcache.c:357
 #, possible-c-format
 msgid "    Half hash misses:          %lu\n"
 msgstr ""
 
-#: bcache.c:384
+#: bcache.c:359
 msgid "    Hash table population:     "
 msgstr ""
 
-#: bcache.c:386
+#: bcache.c:361
 #, possible-c-format
 msgid "    Median hash chain length:  %3d\n"
 msgstr ""
 
-#: bcache.c:388
+#: bcache.c:363
 msgid "    Average hash chain length: "
 msgstr ""
 
-#: bcache.c:394
+#: bcache.c:369
 #, possible-c-format
 msgid "    Maximum hash chain length: %3d\n"
 msgstr ""
@@ -3692,7 +3692,7 @@ msgstr ""
 msgid "Catchpoint %d (%s)"
 msgstr ""
 
-#: breakpoint.c:8065 stack.c:2385 symtab.c:4323 symtab.c:4521 symtab.c:4529
+#: breakpoint.c:8065 stack.c:2385 symtab.c:4336 symtab.c:4534 symtab.c:4542
 msgid "Invalid regexp"
 msgstr ""
 
@@ -22727,43 +22727,43 @@ msgstr ""
 msgid "  Number of psym tables (not yet expanded): %d\n"
 msgstr ""
 
-#: psymtab.c:1813 symmisc.c:413
+#: psymtab.c:1812 symmisc.c:413
 msgid "Missing pc value"
 msgstr ""
 
-#: psymtab.c:1819 symmisc.c:419
+#: psymtab.c:1818 symmisc.c:419
 msgid "Missing source file"
 msgstr ""
 
-#: psymtab.c:1825 symmisc.c:425 symmisc.c:698
+#: psymtab.c:1824 symmisc.c:425 symmisc.c:698
 msgid "Missing objfile name"
 msgstr ""
 
 #. Future proofing: Don't allow OUTFILE to begin with "-".
-#: psymtab.c:1837 symmisc.c:437 symmisc.c:710
+#: psymtab.c:1836 symmisc.c:437 symmisc.c:710
 #, possible-c-format
 msgid "Unknown option: %s"
 msgstr ""
 
-#: psymtab.c:1845 symmisc.c:445
+#: psymtab.c:1844 symmisc.c:445
 msgid "Must specify at most one of -pc and -source"
 msgstr ""
 
-#: psymtab.c:1852 symmisc.c:452 symmisc.c:722
+#: psymtab.c:1851 symmisc.c:452 symmisc.c:722
 msgid "Junk at end of command"
 msgstr ""
 
-#: psymtab.c:1944
+#: psymtab.c:1943
 #, possible-c-format
 msgid "No partial symtab for address: %s"
 msgstr ""
 
-#: psymtab.c:1946
+#: psymtab.c:1945
 #, possible-c-format
 msgid "No partial symtab for source file: %s"
 msgstr ""
 
-#: psymtab.c:2164
+#: psymtab.c:2163
 msgid ""
 "Print dump of current partial symbol definitions.\n"
 "Usage: mt print psymbols [-objfile OBJFILE] [-pc ADDRESS] [--] [OUTFILE]\n"
@@ -22775,14 +22775,14 @@ msgid ""
 "If OBJFILE is provided, dump only that file's minimal symbols."
 msgstr ""
 
-#: psymtab.c:2175
+#: psymtab.c:2174
 msgid ""
 "List the partial symbol tables for all object files.\n"
 "This does not include information about individual partial symbols,\n"
 "just the symbol table structures themselves."
 msgstr ""
 
-#: psymtab.c:2182
+#: psymtab.c:2181
 msgid "Check consistency of currently expanded psymtabs versus symtabs."
 msgstr ""
 
@@ -29496,31 +29496,31 @@ msgid ""
 "With an argument REGEXP, only expand the symbol tables with matching names."
 msgstr ""
 
-#: symtab.c:1304
+#: symtab.c:1327
 #, possible-c-format
 msgid "Symbol cache size is too large, max is %u."
 msgstr ""
 
-#: symtab.c:1546
+#: symtab.c:1559
 #, possible-c-format
 msgid ""
 "Symbol cache for pspace %d\n"
 "%s:\n"
 msgstr ""
 
-#: symtab.c:1617
+#: symtab.c:1630
 #, possible-c-format
 msgid ""
 "Symbol cache statistics for pspace %d\n"
 "%s:\n"
 msgstr ""
 
-#: symtab.c:2089
+#: symtab.c:2102
 #, possible-c-format
 msgid "Internal error: `%s' is not an aggregate"
 msgstr ""
 
-#: symtab.c:2360
+#: symtab.c:2373
 #, possible-c-format
 msgid ""
 "Internal: %s symbol `%s' found in %s psymtab but not in symtab.\n"
@@ -29528,193 +29528,193 @@ msgid ""
 "\t (if a template, try specifying an instantiation: %s<type>)."
 msgstr ""
 
-#: symtab.c:4037
+#: symtab.c:4050
 msgid "mismatched quoting on brackets, try 'operator\\[\\]'"
 msgstr ""
 
-#: symtab.c:4045
+#: symtab.c:4058
 msgid "nothing is allowed between '[' and ']'"
 msgstr ""
 
-#: symtab.c:4101
+#: symtab.c:4114
 msgid "`operator ()' must be specified without whitespace in `()'"
 msgstr ""
 
-#: symtab.c:4107
+#: symtab.c:4120
 msgid "`operator ?:' must be specified without whitespace in `?:'"
 msgstr ""
 
-#: symtab.c:4113
+#: symtab.c:4126
 msgid "`operator []' must be specified without whitespace in `[]'"
 msgstr ""
 
-#: symtab.c:4118
+#: symtab.c:4131
 #, possible-c-format
 msgid "`operator %s' not supported"
 msgstr ""
 
-#: symtab.c:4227
+#: symtab.c:4240
 msgid "Show only the files having a dirname matching REGEXP."
 msgstr ""
 
-#: symtab.c:4233
+#: symtab.c:4246
 msgid "Show only the files having a basename matching REGEXP."
 msgstr ""
 
-#: symtab.c:4260
+#: symtab.c:4273
 #, possible-c-format
 msgid "(dirname matching regular expression \"%s\")"
 msgstr ""
 
-#: symtab.c:4263
+#: symtab.c:4276
 #, possible-c-format
 msgid "(basename matching regular expression \"%s\")"
 msgstr ""
 
-#: symtab.c:4266
+#: symtab.c:4279
 #, possible-c-format
 msgid "(filename matching regular expression \"%s\")"
 msgstr ""
 
-#: symtab.c:4309
+#: symtab.c:4322
 msgid "You cannot give both -basename and -dirname to 'info sources'."
 msgstr ""
 
-#: symtab.c:4312
+#: symtab.c:4325
 msgid "Missing REGEXP for 'info sources'."
 msgstr ""
 
-#: symtab.c:4327
+#: symtab.c:4340
 msgid "Source files for which symbols have been read in:\n"
 msgstr ""
 
-#: symtab.c:4344
+#: symtab.c:4357
 msgid "Source files for which symbols will be read in on demand:\n"
 msgstr ""
 
-#: symtab.c:4796
+#: symtab.c:4809
 #, possible-c-format
 msgid ""
 "\n"
 "File %ps:\n"
 msgstr ""
 
-#: symtab.c:4832
+#: symtab.c:4845
 #, possible-c-format
 msgid "%ps  %ps\n"
 msgstr ""
 
-#: symtab.c:4868
+#: symtab.c:4881
 #, possible-c-format
 msgid ""
 "All %ss matching regular expression \"%s\" with type matching regular "
 "expression \"%s\":\n"
 msgstr ""
 
-#: symtab.c:4872
+#: symtab.c:4885
 #, possible-c-format
 msgid "All %ss matching regular expression \"%s\":\n"
 msgstr ""
 
-#: symtab.c:4879
+#: symtab.c:4892
 #, possible-c-format
 msgid "All defined %ss with type matching regular expression \"%s\" :\n"
 msgstr ""
 
-#: symtab.c:4883
+#: symtab.c:4896
 #, possible-c-format
 msgid "All defined %ss:\n"
 msgstr ""
 
-#: symtab.c:4896
+#: symtab.c:4909
 msgid ""
 "\n"
 "Non-debugging symbols:\n"
 msgstr ""
 
-#: symtab.c:6408
+#: symtab.c:6421
 msgid "All variables in all modules:"
 msgstr ""
 
-#: symtab.c:6409
+#: symtab.c:6422
 msgid "All functions in all modules:"
 msgstr ""
 
-#: symtab.c:6413
+#: symtab.c:6426
 #, possible-c-format
 msgid "All variables matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6415
+#: symtab.c:6428
 #, possible-c-format
 msgid "All functions matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6424
+#: symtab.c:6437
 #, possible-c-format
 msgid ""
 "All variables with type matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6426
+#: symtab.c:6439
 #, possible-c-format
 msgid ""
 "All functions with type matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6432
+#: symtab.c:6445
 #, possible-c-format
 msgid ""
 "All variables matching regular expression \"%s\",\n"
 "\twith type matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6435
+#: symtab.c:6448
 #, possible-c-format
 msgid ""
 "All functions matching regular expression \"%s\",\n"
 "\twith type matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6448
+#: symtab.c:6461
 #, possible-c-format
 msgid "All variables in all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6450
+#: symtab.c:6463
 #, possible-c-format
 msgid "All functions in all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6456
+#: symtab.c:6469
 #, possible-c-format
 msgid ""
 "All variables matching regular expression \"%s\",\n"
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6459
+#: symtab.c:6472
 #, possible-c-format
 msgid ""
 "All functions matching regular expression \"%s\",\n"
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6469
+#: symtab.c:6482
 #, possible-c-format
 msgid ""
 "All variables with type matching regular expression \"%s\"\n"
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6472
+#: symtab.c:6485
 #, possible-c-format
 msgid ""
 "All functions with type matching regular expression \"%s\"\n"
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6479
+#: symtab.c:6492
 #, possible-c-format
 msgid ""
 "All variables matching regular expression \"%s\",\n"
@@ -29722,7 +29722,7 @@ msgid ""
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6483
+#: symtab.c:6496
 #, possible-c-format
 msgid ""
 "All functions matching regular expression \"%s\",\n"
@@ -29730,41 +29730,41 @@ msgid ""
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6522
+#: symtab.c:6535
 #, possible-c-format
 msgid "Module \"%s\":\n"
 msgstr ""
 
-#: symtab.c:6644
+#: symtab.c:6657
 msgid ""
 "All global and static variable names or those matching REGEXPs.\n"
 "Usage: info variables [-q] [-n] [-t TYPEREGEXP] [NAMEREGEXP]\n"
 "Prints the global and static variables.\n"
 msgstr ""
 
-#: symtab.c:6648 symtab.c:6658
+#: symtab.c:6661 symtab.c:6671
 msgid "global and static variables"
 msgstr ""
 
-#: symtab.c:6654
+#: symtab.c:6667
 msgid ""
 "All global and static variable names, or those matching REGEXPs.\n"
 "Usage: whereis [-q] [-n] [-t TYPEREGEXP] [NAMEREGEXP]\n"
 "Prints the global and static variables.\n"
 msgstr ""
 
-#: symtab.c:6664
+#: symtab.c:6677
 msgid ""
 "All function names or those matching REGEXPs.\n"
 "Usage: info functions [-q] [-n] [-t TYPEREGEXP] [NAMEREGEXP]\n"
 "Prints the functions.\n"
 msgstr ""
 
-#: symtab.c:6668
+#: symtab.c:6681
 msgid "functions"
 msgstr ""
 
-#: symtab.c:6672
+#: symtab.c:6685
 msgid ""
 "All type names, or those matching REGEXP.\n"
 "Usage: info types [-q] [REGEXP]\n"
@@ -29772,7 +29772,7 @@ msgid ""
 "REGEXP is given.  The optional flag -q disables printing of headers."
 msgstr ""
 
-#: symtab.c:6682
+#: symtab.c:6695
 msgid ""
 "All source files in the program or those matching REGEXP.\n"
 "Usage: info sources [OPTION]... [REGEXP]\n"
@@ -29782,15 +29782,15 @@ msgid ""
 "%OPTIONS%"
 msgstr ""
 
-#: symtab.c:6695
+#: symtab.c:6708
 msgid "All module names, or those matching REGEXP."
 msgstr ""
 
-#: symtab.c:6698
+#: symtab.c:6711
 msgid "Print information about modules."
 msgstr ""
 
-#: symtab.c:6703
+#: symtab.c:6716
 msgid ""
 "Display functions arranged by modules.\n"
 "Usage: info module functions [-q] [-m MODREGEXP] [-t TYPEREGEXP] [REGEXP]\n"
@@ -29806,7 +29806,7 @@ msgid ""
 "The -q flag suppresses printing some header information."
 msgstr ""
 
-#: symtab.c:6720
+#: symtab.c:6733
 msgid ""
 "Display variables arranged by modules.\n"
 "Usage: info module variables [-q] [-m MODREGEXP] [-t TYPEREGEXP] [REGEXP]\n"
@@ -29822,32 +29822,32 @@ msgid ""
 "The -q flag suppresses printing some header information."
 msgstr ""
 
-#: symtab.c:6738
+#: symtab.c:6751
 msgid "Set a breakpoint for all functions matching REGEXP."
 msgstr ""
 
-#: symtab.c:6742
+#: symtab.c:6755
 msgid "Set how the debugger handles ambiguities in expressions."
 msgstr ""
 
-#: symtab.c:6743
+#: symtab.c:6756
 msgid "Show how the debugger handles ambiguities in expressions."
 msgstr ""
 
-#: symtab.c:6744
+#: symtab.c:6757
 msgid ""
 "Valid values are \"ask\", \"all\", \"cancel\", and the default is \"all\"."
 msgstr ""
 
-#: symtab.c:6749
+#: symtab.c:6762
 msgid "Set whether a source file may have multiple base names."
 msgstr ""
 
-#: symtab.c:6750
+#: symtab.c:6763
 msgid "Show whether a source file may have multiple base names."
 msgstr ""
 
-#: symtab.c:6751
+#: symtab.c:6764
 msgid ""
 "(A \"base name\" is the name of a file with the directory part removed.\n"
 "Example: The base name of \"/home/user/hello.c\" is \"hello.c\".)\n"
@@ -29858,56 +29858,56 @@ msgid ""
 "one base name, and gdb will do file name comparisons more efficiently."
 msgstr ""
 
-#: symtab.c:6763
+#: symtab.c:6776
 msgid "Set debugging of symbol table creation."
 msgstr ""
 
-#: symtab.c:6764
+#: symtab.c:6777
 msgid "Show debugging of symbol table creation."
 msgstr ""
 
-#: symtab.c:6764
+#: symtab.c:6777
 msgid ""
 "When enabled (non-zero), debugging messages are printed when building\n"
 "symbol tables.  A value of 1 (one) normally provides enough information.\n"
 "A value greater than 1 provides more verbose information."
 msgstr ""
 
-#: symtab.c:6773
+#: symtab.c:6786
 msgid "Set debugging of symbol lookup."
 msgstr ""
 
-#: symtab.c:6774
+#: symtab.c:6787
 msgid "Show debugging of symbol lookup."
 msgstr ""
 
-#: symtab.c:6775
+#: symtab.c:6788
 msgid "When enabled (non-zero), symbol lookups are logged."
 msgstr ""
 
-#: symtab.c:6782
+#: symtab.c:6795
 msgid "Set the size of the symbol cache."
 msgstr ""
 
-#: symtab.c:6783
+#: symtab.c:6796
 msgid "Show the size of the symbol cache."
 msgstr ""
 
-#: symtab.c:6783
+#: symtab.c:6796
 msgid ""
 "The size of the symbol cache.\n"
 "If zero then the symbol cache is disabled."
 msgstr ""
 
-#: symtab.c:6791
+#: symtab.c:6804
 msgid "Dump the symbol cache for each program space."
 msgstr ""
 
-#: symtab.c:6796
+#: symtab.c:6809
 msgid "Print symbol cache statistics for each program space."
 msgstr ""
 
-#: symtab.c:6801
+#: symtab.c:6814
 msgid "Flush the symbol cache for each program space."
 msgstr ""
 
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/psymtab.c ./gdb/psymtab.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/psymtab.c	2019-12-03 01:49:15.000000000 +0000
+++ ./gdb/psymtab.c	2019-12-04 01:50:06.000000000 +0000
@@ -1530,14 +1530,13 @@ psymbol_hash (const void *addr, int leng
   unsigned int domain = psymbol->domain;
   unsigned int theclass = psymbol->aclass;
 
-  h = hash_continue (&psymbol->ginfo.value, sizeof (psymbol->ginfo.value), h);
-  h = hash_continue (&lang, sizeof (unsigned int), h);
-  h = hash_continue (&domain, sizeof (unsigned int), h);
-  h = hash_continue (&theclass, sizeof (unsigned int), h);
+  h = fast_hash (&psymbol->ginfo.value, sizeof (psymbol->ginfo.value), h);
+  h = fast_hash (&lang, sizeof (unsigned int), h);
+  h = fast_hash (&domain, sizeof (unsigned int), h);
+  h = fast_hash (&theclass, sizeof (unsigned int), h);
   /* Note that psymbol names are interned via symbol_set_names, so
      there's no need to hash the contents of the name here.  */
-  h = hash_continue (&psymbol->ginfo.name,
-		     sizeof (psymbol->ginfo.name), h);
+  h = fast_hash (&psymbol->ginfo.name, sizeof (psymbol->ginfo.name), h);
 
   return h;
 }
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/stabsread.c ./gdb/stabsread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/stabsread.c	2019-12-03 01:49:15.000000000 +0000
+++ ./gdb/stabsread.c	2019-12-04 01:50:07.000000000 +0000
@@ -4778,7 +4778,7 @@ find_name_end (const char *name)
 int
 hashname (const char *name)
 {
-  return hash (name, strlen (name)) % HASHSIZE;
+  return fast_hash (name, strlen (name)) % HASHSIZE;
 }
 
 /* Initializer for this module.  */
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/symtab.c ./gdb/symtab.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/symtab.c	2019-12-03 01:49:15.000000000 +0000
+++ ./gdb/symtab.c	2019-12-04 01:50:07.000000000 +0000
@@ -183,6 +183,16 @@ struct symbol_cache_slot
   } value;
 };
 
+/* Clear out SLOT.  */
+
+static void
+symbol_cache_clear_slot (struct symbol_cache_slot *slot)
+{
+  if (slot->state == SYMBOL_SLOT_NOT_FOUND)
+    xfree (slot->value.not_found.name);
+  slot->state = SYMBOL_SLOT_UNUSED;
+}
+
 /* Symbols don't specify global vs static block.
    So keep them in separate caches.  */
 
@@ -201,6 +211,19 @@ struct block_symbol_cache
   struct symbol_cache_slot symbols[1];
 };
 
+/* Clear all slots of BSC and free BSC.  */
+
+static void
+destroy_block_symbol_cache (struct block_symbol_cache *bsc)
+{
+  if (bsc != nullptr)
+    {
+      for (unsigned int i = 0; i < bsc->size; i++)
+	symbol_cache_clear_slot (&bsc->symbols[i]);
+      xfree (bsc);
+    }
+}
+
 /* The symbol cache.
 
    Searching for symbols in the static and global blocks over multiple objfiles
@@ -217,8 +240,8 @@ struct symbol_cache
 
   ~symbol_cache ()
   {
-    xfree (global_symbols);
-    xfree (static_symbols);
+    destroy_block_symbol_cache (global_symbols);
+    destroy_block_symbol_cache (static_symbols);
   }
 
   struct block_symbol_cache *global_symbols = nullptr;
@@ -1234,8 +1257,8 @@ resize_symbol_cache (struct symbol_cache
 	  && new_size == 0))
     return;
 
-  xfree (cache->global_symbols);
-  xfree (cache->static_symbols);
+  destroy_block_symbol_cache (cache->global_symbols);
+  destroy_block_symbol_cache (cache->static_symbols);
 
   if (new_size == 0)
     {
@@ -1373,16 +1396,6 @@ symbol_cache_lookup (struct symbol_cache
   return {};
 }
 
-/* Clear out SLOT.  */
-
-static void
-symbol_cache_clear_slot (struct symbol_cache_slot *slot)
-{
-  if (slot->state == SYMBOL_SLOT_NOT_FOUND)
-    xfree (slot->value.not_found.name);
-  slot->state = SYMBOL_SLOT_UNUSED;
-}
-
 /* Mark SYMBOL as found in SLOT.
    OBJFILE_CONTEXT is the current objfile when the lookup was done, or NULL
    if it's not needed to distinguish lookups (STATIC_BLOCK).  It is *not*
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/utils.h ./gdb/utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/gdb/utils.h	2019-12-03 01:49:16.000000000 +0000
+++ ./gdb/utils.h	2019-12-04 01:50:07.000000000 +0000
@@ -571,17 +571,18 @@ extern void copy_bitwise (gdb_byte *dest
 			  const gdb_byte *source, ULONGEST source_offset,
 			  ULONGEST nbits, int bits_big_endian);
 
-/* A fast hashing function.  This can be used to hash strings in a fast way
+/* A fast hashing function.  This can be used to hash data in a fast way
    when the length is known.  If no fast hashing library is available, falls
-   back to iterative_hash from libiberty.  */
+   back to iterative_hash from libiberty.  START_VALUE can be set to
+   continue hashing from a previous value.  */
 
 static inline unsigned int
-fast_hash (const char* str, size_t len)
+fast_hash (const void *ptr, size_t len, unsigned int start_value = 0)
 {
 #ifdef HAVE_LIBXXHASH
-  return XXH64 (str, len, 0);
+  return XXH64 (ptr, len, start_value);
 #else
-  return iterative_hash (str, len, 0);
+  return iterative_hash (ptr, len, start_value);
 #endif
 }
 
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/md5.sum ./md5.sum
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191203/md5.sum	2019-12-03 01:53:58.000000000 +0000
+++ ./md5.sum	2019-12-04 01:55:30.000000000 +0000
@@ -2,7 +2,7 @@ a657821f65bab77f4fbf3a75cdee6da9  ar-lib
 9404e13ea7b152453c548082da92b8da  bfd/cpu-pru.c
 deb393f679e2cb9d8afcf5d8f94ef4d5  bfd/tekhex.c
 c6f2335d823903da573f827b8c5d8290  bfd/reloc.c
-deab5899cc3961c62a5d237f9f1d8192  bfd/dwarf2.c
+b1aadeb5a4365caf0125f7f54ef7c240  bfd/dwarf2.c
 2f4f0e5bdcd60849e8038ac3045b33ec  bfd/libbfd.h
 8b8a453da673107291f4754c544a2ebe  bfd/cpu-nds32.c
 fb32050ffb28a5c4858c29991be30938  bfd/vaxnetbsd.c
@@ -36,7 +36,7 @@ a8bf329c24203303d1343c3eed58c07b  bfd/el
 5cb0eef365977eb8c7430c04738a9e2c  bfd/wasm-module.c
 ce93ef6cd4c0ba0799b9d6d75b36638a  bfd/elf64-mips.c
 c4d082a9c0c27456afe3357c4987b675  bfd/cpu-m9s12x.c
-ce68f762e76f6a32ba10248ae1a56a79  bfd/version.h
+cdafa56c26648e82806b661fe47b837c  bfd/version.h
 f635e95e06957e744083b2160029e168  bfd/cpu-tilegx.c
 f2af796af1efd1971472837a26010b6f  bfd/coff-mcore.c
 89637e92fbef834ef0c545805106bcc4  bfd/cpu-avr.c
@@ -403,7 +403,7 @@ bf3124212f297f533195226f5574c9d1  bfd/el
 4f64387cc2f68f7f980105d0a6443858  bfd/elfxx-ia64.h
 72fd73fc0277b8c62634baabecbda132  bfd/elf32-or1k.c
 968eb947c31825340e4d7b98a8896ec4  bfd/targets.c
-436432cde9589983a1daea57279889b5  bfd/ChangeLog
+479552724066580522eed951456b7231  bfd/ChangeLog
 9c32275c313835ee61d8589d518f660b  bfd/section.c
 2fddd07f100af0551285d028f9fe8eb0  bfd/elf-s390-common.c
 07d1c3689bb0c5e5b6d5dfce7aee122e  bfd/elf32-lm32.c
@@ -756,7 +756,7 @@ f58a6ef9094881fb0797296e47d6358a  gdb/i3
 02e431732534d52ead450b6d33a6ebba  gdb/maint.h
 c53d011c44de38f7035cdc4592a6c648  gdb/microblaze-linux-tdep.c
 3883017d85f3d418e11b1e486c651f83  gdb/unwind_stop_reasons.def
-15d7db35557a6abedb31d14f59624d51  gdb/bcache.h
+f9d1b7b29f9ffcfbb22f8ea1288155dd  gdb/bcache.h
 3724de6d692ecabe045b076296ce0a98  gdb/objfile-flags.h
 f8eeb7d8ca92555d4f09fc6e25ff33f6  gdb/ui-style.c
 b27dfa5b4181f6b8684d3bbea927cb80  gdb/contrib/expect-read1.c
@@ -1230,7 +1230,7 @@ de92338af06804cabbd9474f079cfea3  gdb/gd
 b13fde9edb40fab4501119ba2e871168  gdb/process-stratum-target.h
 33f218649697efaa527503835ad603d1  gdb/f-exp.y
 fd9b3c0ae37d28574d58d5988e1c1dce  gdb/jit.h
-85962abafbd798d5844e26d6612346a5  gdb/psymtab.c
+1a4a74e2b2f223e57a2d53945ef0bb7c  gdb/psymtab.c
 947db8806599d27ba20f03a38fe3762f  gdb/stack.h
 da71c479b68a4d95a79d36640b93c9c3  gdb/ChangeLog-2000
 2ec9c6a0e2976473bcab0c31abd74118  gdb/tic6x-linux-tdep.c
@@ -1259,7 +1259,7 @@ ba791ae012c88482992494d24cfb73bd  gdb/gd
 45ec9abd1b2d4826e8e0f221a7f1474a  gdb/sentinel-frame.c
 e626c8d9e613c75ce8e3d3a606d2e89c  gdb/score-tdep.h
 7292a61746f040ef1b0503033e56bd9b  gdb/coff-pe-read.c
-b41211493d2874762ee48e4e202bb832  gdb/bcache.c
+c851fd60fdfebca395ebf64123ea94f2  gdb/bcache.c
 e82e1a53dbb63d792fc8645192a4b2cb  gdb/gdb-gdb.gdb.in
 6de6b99fba813f41cfc34f9f3a3ee100  gdb/rust-exp.c
 3003aeb2f0a62020daf165042967653a  gdb/i386-linux-tdep.h
@@ -5280,44 +5280,44 @@ fc41122ade5af8a08f4674de7e688c82  gdb/te
 518eeb650ede533c76597c3a1c3b5b5f  gdb/f-valprint.c
 b4661232e1c651351e7aab789eebdb61  gdb/gdb_curses.h
 8108dd8f906f2654fecc74958cf383db  gdb/doc/psrc.sed
-84073b5ef50f060fd68d13d8ac33f6f6  gdb/doc/gdb.info-3
-d281677c0e6daf9214670579c99354de  gdb/doc/gdb.info-4
+b00e5fde0fe83487caa0bf063e3c33e5  gdb/doc/gdb.info-3
+e374fef3c4e4ca61d93860a1f01eda73  gdb/doc/gdb.info-4
 ab0fe311032294b952da80585b8b90e7  gdb/doc/fdl.texi
 5db562992b3f0178f803b66c2b2337fd  gdb/doc/Makefile.in
-8664b8af390c68001f064d8189d77414  gdb/doc/gdb.info-7
-c6462ef88d87bfed0271b06b82234268  gdb/doc/gdbserver.1
+3866eaae584dddcf902adc4e416f99c8  gdb/doc/gdb.info-7
+943c8cd041c1881df1c492beb6831557  gdb/doc/gdbserver.1
 34e70c52a663f6a691f6ceb17e8b3e48  gdb/doc/guile.texi
 f81a0e00e0cb9e41b078069fb9bedb07  gdb/doc/stack_frame.txt
 a07e6b7f88c558d15d03adeeaca94c74  gdb/doc/stabs.info
-42fcb7244425d5164637be54e19e8a95  gdb/doc/gdb.info-5
-c881da4f5fc65b37f872aa9b9722039d  gdb/doc/gdb.info-8
+90b0c4def85d7c8b3bbc5c031a2fa472  gdb/doc/gdb.info-5
+002a3b5e798bd7e61988d751e4bc332d  gdb/doc/gdb.info-8
 9137c9e47e1692b8efec8e28482aa6fb  gdb/doc/agentexpr.texi
 66674dc351ba95941f422dc18cae24bb  gdb/doc/.gitignore
-e64be871bc86365665ee2fd34a1eb2cf  gdb/doc/gdb.info-1
+1d99b42715c0dbb45c4c7cf524af9657  gdb/doc/gdb.info-1
 d5d06eaf9b4d44aa442a4a281aa9aea4  gdb/doc/a4rc.sed
-cbc0487d8ea7028d6b7a74002e644e93  gdb/doc/gdb.info-6
+ebb518f77112e60c95a8de96f63884cc  gdb/doc/gdb.info-6
 c913592b2fb88d4c4788b3559213a0e8  gdb/doc/gdb.texinfo
-fdb5a88e0a2586032e9f9990e03632ca  gdb/doc/gdb-add-index.1
+0c0f818ddf7a0a3039b015bf6a8a694f  gdb/doc/gdb-add-index.1
 553b7fe1bf4b5d8b96fdb8cd83503de1  gdb/doc/stack_frame.svg
 04c82b1da7e894a6555868e4f86225af  gdb/doc/filter-for-doxygen
 5a0374965ab816741c91c7eaea412912  gdb/doc/Doxyfile-gdb-api.in
 e41a962402414f62e2f16a22a2783703  gdb/doc/annotate.info
-c0f569997de12da533fb34305cf42fab  gdb/doc/gdb.info-2
+0cccb896b999529194125be350527695  gdb/doc/gdb.info-2
 fdd79e6125e56c1eb7e28b2a71d5b48e  gdb/doc/refcard.tex
 6076d300a46651562d4ecd0604442414  gdb/doc/stack_frame.png
-e645e6ad3372f7f886939d9c1ed6cbe9  gdb/doc/gdb.info
+ebc81200abb817ab55af42ef25c12a3f  gdb/doc/gdb.info
 8bb39bf41da6a03890e05a9ab1b373b9  gdb/doc/python.texi
 9927faec0d3464d1bc485cd0c69a4a46  gdb/doc/stabs.texinfo
 90f029c9cdc64ed39ea0be5f07f90b7e  gdb/doc/ChangeLog
-bd1a981830d9e1d39f78e9f2918f9ace  gdb/doc/gdb.1
-7396f7cf684032c7c4aa21487353fcbf  gdb/doc/gcore.1
+34190c856797ba4f46b7bf3844804453  gdb/doc/gdb.1
+2ddf7f104de7e15f173ffa6e39dc1a67  gdb/doc/gcore.1
 d39233c86ed6a6dc9e853ae6a11fe03e  gdb/doc/stack_frame.pdf
 cb7ea97486937341d6ae27968ee40d23  gdb/doc/Doxyfile-base.in
 29393ec87c7921291f54ee7b57ccb1d9  gdb/doc/all-cfg.texi
 bf96494e6e4d346175babd5ef9781882  gdb/doc/gpl.texi
 cd5e3faa9bd1b684a73c7d527cdb4988  gdb/doc/filter-params.pl
 7bfdb0765c5d050d204fbb30aeeba0d8  gdb/doc/stack_frame.eps
-fa7c6a0e79e457d3e68c981b4738ea32  gdb/doc/gdbinit.5
+5c0690137385e19ea1ccd7e0b21b63a0  gdb/doc/gdbinit.5
 24d4f8b6396da16d9a8dd98281ac40ff  gdb/doc/Doxyfile-gdb-xref.in
 6f3b23a5f42aba8cbac1bcf7329942e4  gdb/doc/annotate.texinfo
 0b3e26fe6db92700f1e51071ff475193  gdb/doc/doxy-index.in
@@ -5798,7 +5798,7 @@ a01c7b4b18efc22dbe5cc8662acf024c  gdb/fr
 d6f1771cf6ffce764f036d928cab89d9  gdb/c-varobj.c
 1e08e39cebf71d253881b63cd7f9c905  gdb/or1k-tdep.h
 552838669dd0cf8bc2ed20b7b2bb19cd  gdb/i386-tdep.c
-1376ee856127fd0fad6684d515c53056  gdb/symtab.c
+da62d2b1306ce5617a1acfa5886ccba4  gdb/symtab.c
 b8d75545442a0eb808e403ea02538a26  gdb/osabi.c
 d3170a8bbbd34d38a15902a5b596654d  gdb/m32r-linux-tdep.c
 840e0e0e830e2fd302199c92f049e9a5  gdb/inf-child.c
@@ -5827,7 +5827,7 @@ a88e31ebdc95dea2e182e90fa3596b09  gdb/va
 7242736b5bba9098c974d0e015b167a5  gdb/std-regs.c
 90d72be4c884a79ded08fa4fbbcb6b9b  gdb/go-lang.h
 9a1fd6216061720bf8556e23cf224721  gdb/i386-windows-nat.c
-80b6bb70b8e2bc0845e219872993941c  gdb/po/gdb.pot
+d3eb78eefe3ef95e1207e29dbce4944d  gdb/po/gdb.pot
 1851bff0653201a488dcae18dde7efad  gdb/po/gdbtext
 7da5f0db2eb697d3fb85524954abaef5  gdb/break-catch-syscall.c
 45a80779559782ef2ebb90e7fc5b4bde  gdb/ada-lang.c
@@ -5859,7 +5859,7 @@ e3e2430aebaf80b6aca6759cfa9612d4  gdb/nb
 0d4182edc7beb626c56d423668383a2b  gdb/i386-fbsd-nat.c
 094e893d632874e14e92917b8c57c5fd  gdb/mipsread.c
 d4e47464ef8b510c11c547fb163d603a  gdb/amd64-darwin-tdep.c
-100c1f6537f03b0d22e829c4087631a9  gdb/ChangeLog
+cc99354cd0291773e6a43be4be04d040  gdb/ChangeLog
 2fd8f81fb260df7b31ffaaaa44e1d4b9  gdb/go-typeprint.c
 6bdae112ab8858c8b8eb3e32bc9b5b45  gdb/score-tdep.c
 170c97d0320940cea4fda1d1cb413687  gdb/xml-support.h
@@ -5981,7 +5981,7 @@ b09b0ee5da44df728eb552f6bf6ed138  gdb/re
 7d521124886bd1a212ec6ac542743020  gdb/regformats/s390x-linux64.dat
 40ba412a0b4d6cebeef61c90e6f6629d  gdb/regformats/s390-linux64.dat
 5b7809bbc018af8b2c2bd6f0c2842351  gdb/arm-obsd-tdep.c
-354156abbb80805e167b0110e9280a1f  gdb/utils.h
+a589cf0552427bd2251d6feb9a7cf263  gdb/utils.h
 994725e6719c445fa7b173452d0f9507  gdb/sparc-sol2-tdep.c
 283a66ed511d8293555fdce4810e1873  gdb/procfs.c
 ea3a0339e53fcacc45f5b891634f3e2d  gdb/solib-svr4.h
@@ -6277,7 +6277,7 @@ b8361790d5bf10aa0a3a48493e9a2571  gdb/hp
 e9e5d7db42e70ecd65eaca5b56f4cb75  gdb/xstormy16-tdep.c
 43de4283edd0c940a9e8b13715c553e5  gdb/i386-obsd-tdep.c
 527a92f93c7693f095fbe432ab6ad918  gdb/ppc-nbsd-tdep.c
-557541777e1419c4062a504940ea0c62  gdb/stabsread.c
+c3549b407a0a26e20a3fd9528bd01df3  gdb/stabsread.c
 9fdafccecd6cd44751141b88f8908bb9  gdb/MAINTAINERS
 f47044c0373443bbd1b7db7d37d267a1  gdb/arm-fbsd-tdep.c
 684b3f8393021bcde657ce22c1fe785b  gdb/i386-bsd-nat.c
