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.20191126/bfd/ChangeLog ./bfd/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/bfd/ChangeLog	2019-11-26 01:49:28.000000000 +0000
+++ ./bfd/ChangeLog	2019-12-03 01:49:13.000000000 +0000
@@ -1,3 +1,50 @@
+2019-11-27  Alan Modra  <amodra@gmail.com>
+
+	PR 23652
+	* dwarf2.c (_bfd_dwarf2_stash_syms): Break out of loop on finding
+	matching section.
+	(_bfd_dwarf2_find_nearest_line): Return an int, with value 2 when
+	returning info from the symbol table.  Do the _bfd_elf_find_function
+	search also when !found.  Call _bfd_dwarf2_stash_syms regardless of
+	symbols.
+	* elf64-alpha.c (elf64_alpha_find_nearest_line): Accept dwarf2
+	result of 1 only.
+	* elfxx-mips.c (_bfd_mips_elf_find_nearest_line): Likewise.
+	* libbfd-in.h (_bfd_dwarf2_find_nearest_line): Update prototype.
+	* libbfd.h: Regenerate.
+
+2019-11-27  Alan Modra  <amodra@gmail.com>
+
+	PR 23652
+	* dwarf2.c (_bfd_dwarf2_stash_syms): New function.
+	(_bfd_dwarf2_find_nearest_line): Use it here, passing syms to
+	_bfd_elf_find_function.  Call _bfd_elf_find_function in cases
+	where _bfd_elf_find_nearest_line would do so.
+	* elf.c (_bfd_elf_find_nearest_line): Omit _bfd_elf_find_function
+	for dwarf2.
+	* elfxx-mips.c (_bfd_mips_elf_find_nearest_line): Similarly.  Tidy.
+	* elf32-arm.c (elf32_arm_maybe_function_sym): New function.
+	(elf_backend_maybe_function_sym): Define.
+	(arm_elf_find_function, elf32_arm_find_nearest_line): Delete.
+	(bfd_elf32_find_nearest_line): Don't define.
+	* elfnn-aarch64.c (elfNN_aarch64_maybe_function_sym): New function.
+	(elf_backend_maybe_function_sym): Define.
+	(aarch64_elf_find_function, elfNN_aarch64_find_nearest_line): Delete.
+	(bfd_elfNN_find_nearest_line): Don't define.
+
+2019-11-27  Alan Modra  <amodra@gmail.com>
+
+	* elf32-sh.c (sh_reloc): Use a bfd_vma insn.
+	(sh_reloc <R_SH_IND12W>): Divide calculated relocation value
+	by two before applying to insn.  Correct overflow test.
+	* coff-sh.c (sh_reloc): Likewise.
+
+2019-11-26  Nick Clifton  <nickc@redhat.com>
+
+	* elf32-sh.c (sh_elf_reloc): Use a signed_vma when checking for a
+	negative relocated value.
+	* coff-sh.c (sh_reloc): Likewise.
+
 2019-11-25  Alan Modra  <amodra@gmail.com>
 
 	* archures.c (bfd_octets_per_byte): Tail call
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.20191126/bfd/coff-sh.c ./bfd/coff-sh.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/bfd/coff-sh.c	2019-11-26 01:49:28.000000000 +0000
+++ ./bfd/coff-sh.c	2019-12-03 01:49:13.000000000 +0000
@@ -567,7 +567,7 @@ sh_reloc (bfd *      abfd,
 	  bfd *      output_bfd,
 	  char **    error_message ATTRIBUTE_UNUSED)
 {
-  unsigned long insn;
+  bfd_vma insn;
   bfd_vma sym_value;
   unsigned short r_type;
   bfd_vma addr = reloc_entry->address;
@@ -610,14 +610,14 @@ sh_reloc (bfd *      abfd,
 #endif
       insn = bfd_get_32 (abfd, hit_data);
       insn += sym_value + reloc_entry->addend;
-      bfd_put_32 (abfd, (bfd_vma) insn, hit_data);
+      bfd_put_32 (abfd, insn, hit_data);
       break;
 #ifdef COFF_WITH_PE
     case R_SH_IMAGEBASE:
       insn = bfd_get_32 (abfd, hit_data);
       insn += sym_value + reloc_entry->addend;
       insn -= pe_data (input_section->output_section->owner)->pe_opthdr.ImageBase;
-      bfd_put_32 (abfd, (bfd_vma) insn, hit_data);
+      bfd_put_32 (abfd, insn, hit_data);
       break;
 #endif
     case R_SH_PCDISP:
@@ -627,12 +627,10 @@ sh_reloc (bfd *      abfd,
 		    + input_section->output_offset
 		    + addr
 		    + 4);
-      sym_value += (insn & 0xfff) << 1;
-      if (insn & 0x800)
-	sym_value -= 0x1000;
-      insn = (insn & 0xf000) | (sym_value & 0xfff);
-      bfd_put_16 (abfd, (bfd_vma) insn, hit_data);
-      if (sym_value < (bfd_vma) -0x1000 || sym_value >= 0x1000)
+      sym_value += (((insn & 0xfff) ^ 0x800) - 0x800) << 1;
+      insn = (insn & 0xf000) | ((sym_value >> 1) & 0xfff);
+      bfd_put_16 (abfd, insn, hit_data);
+      if (sym_value + 0x1000 >= 0x2000 || (sym_value & 1) != 0)
 	return bfd_reloc_overflow;
       break;
     default:
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.20191126/bfd/doc/bfdver.texi ./bfd/doc/bfdver.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/bfd/doc/bfdver.texi	2019-11-26 01:51:33.000000000 +0000
+++ ./bfd/doc/bfdver.texi	2019-12-03 01:51:52.000000000 +0000
@@ -1,4 +1,4 @@
 @set VERSION 2.33.50
 @set VERSION_PACKAGE (GNU Binutils) 
-@set UPDATED November 2019
+@set UPDATED December 2019
 @set BUGURL @uref{http://www.sourceware.org/bugzilla/}
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.20191126/bfd/dwarf2.c ./bfd/dwarf2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/bfd/dwarf2.c	2019-11-26 01:49:29.000000000 +0000
+++ ./bfd/dwarf2.c	2019-12-03 01:49:13.000000000 +0000
@@ -3894,6 +3894,41 @@ set_debug_vma (bfd *orig_bfd, bfd *debug
     }
 }
 
+/* If the dwarf2 info was found in a separate debug file, return the
+   debug file section corresponding to the section in the original file
+   and the debug file symbols.  */
+
+static void
+_bfd_dwarf2_stash_syms (struct dwarf2_debug *stash, bfd *abfd,
+			asection **sec, asymbol ***syms)
+{
+  if (stash->bfd_ptr != abfd)
+    {
+      asection *s, *d;
+
+      if (*sec == NULL)
+	{
+	  *syms = stash->syms;
+	  return;
+	}
+
+      for (s = abfd->sections, d = stash->bfd_ptr->sections;
+	   s != NULL && d != NULL;
+	   s = s->next, d = d->next)
+	{
+	  if ((d->flags & SEC_DEBUGGING) != 0)
+	    break;
+	  if (s == *sec
+	      && strcmp (s->name, d->name) == 0)
+	    {
+	      *sec = d;
+	      *syms = stash->syms;
+	      break;
+	    }
+	}
+    }
+}
+
 /* Unset vmas for adjusted sections in STASH.  */
 
 static void
@@ -4658,15 +4693,19 @@ _bfd_dwarf2_find_symbol_bias (asymbol **
 /* Find the source code location of SYMBOL.  If SYMBOL is NULL
    then find the nearest source code location corresponding to
    the address SECTION + OFFSET.
-   Returns TRUE if the line is found without error and fills in
+   Returns 1 if the line is found without error and fills in
    FILENAME_PTR and LINENUMBER_PTR.  In the case where SYMBOL was
    NULL the FUNCTIONNAME_PTR is also filled in.
+   Returns 2 if partial information from _bfd_elf_find_function is
+   returned (function and maybe file) by looking at symbols.  DWARF2
+   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.  */
 
-bfd_boolean
+int
 _bfd_dwarf2_find_nearest_line (bfd *abfd,
 			       asymbol **symbols,
 			       asymbol *symbol,
@@ -4692,7 +4731,7 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
   bfd_vma addr;
   struct comp_unit* each;
   struct funcinfo *function = NULL;
-  bfd_boolean found = FALSE;
+  int found = FALSE;
   bfd_boolean do_line;
 
   *filename_ptr = NULL;
@@ -4888,16 +4927,28 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
     }
 
  done:
-  if (function)
-    {
-      if (!function->is_linkage)
+  if (functionname_ptr && function && function->is_linkage)
+    *functionname_ptr = function->name;
+  else if (functionname_ptr
+	   && (!*functionname_ptr
+	       || (function && !function->is_linkage)))
+    {
+      asymbol *fun;
+      asymbol **syms = symbols;
+      asection *sec = section;
+
+      _bfd_dwarf2_stash_syms (stash, abfd, &sec, &syms);
+      fun = _bfd_elf_find_function (abfd, syms, sec, offset,
+				    *filename_ptr ? NULL : filename_ptr,
+				    functionname_ptr);
+
+      if (!found && fun != NULL)
+	found = 2;
+
+      if (function && !function->is_linkage)
 	{
-	  asymbol *fun;
 	  bfd_vma sec_vma;
 
-	  fun = _bfd_elf_find_function (abfd, symbols, section, offset,
-					*filename_ptr ? NULL : filename_ptr,
-					functionname_ptr);
 	  sec_vma = section->vma;
 	  if (section->output_section != NULL)
 	    sec_vma = section->output_section->vma + section->output_offset;
@@ -4908,8 +4959,8 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
 	     to stop a repeated search of symbols.  */
 	  function->is_linkage = TRUE;
 	}
-      *functionname_ptr = function->name;
     }
+
   if ((abfd->flags & (EXEC_P | DYNAMIC)) == 0)
     unset_sections (stash);
 
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.20191126/bfd/elf32-arm.c ./bfd/elf32-arm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/bfd/elf32-arm.c	2019-11-26 01:49:29.000000000 +0000
+++ ./bfd/elf32-arm.c	2019-12-03 01:49:13.000000000 +0000
@@ -16040,125 +16040,44 @@ elf32_arm_is_target_special_symbol (bfd 
 					 BFD_ARM_SPECIAL_SYM_TYPE_ANY);
 }
 
-/* This is a version of _bfd_elf_find_function() from dwarf2.c except that
-   ARM mapping symbols are ignored when looking for function names
-   and STT_ARM_TFUNC is considered to a function type.  */
-
-static bfd_boolean
-arm_elf_find_function (bfd *	     abfd,
-		       asymbol **    symbols,
-		       asection *    section,
-		       bfd_vma	     offset,
-		       const char ** filename_ptr,
-		       const char ** functionname_ptr)
-{
-  const char * filename = NULL;
-  asymbol * func = NULL;
-  bfd_vma low_func = 0;
-  asymbol ** p;
-
-  if (symbols == NULL)
-    return FALSE;
-
-  if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
-    return FALSE;
-
-  for (p = symbols; *p != NULL; p++)
-    {
-      elf_symbol_type *q;
+/* If the ELF symbol SYM might be a function in SEC, return the
+   function size and set *CODE_OFF to the function's entry point,
+   otherwise return zero.  */
+
+static bfd_size_type
+elf32_arm_maybe_function_sym (const asymbol *sym, asection *sec,
+			      bfd_vma *code_off)
+{
+  bfd_size_type size;
 
-      q = (elf_symbol_type *) *p;
+  if ((sym->flags & (BSF_SECTION_SYM | BSF_FILE | BSF_OBJECT
+		     | BSF_THREAD_LOCAL | BSF_RELC | BSF_SRELC)) != 0
+      || sym->section != sec)
+    return 0;
 
-      switch (ELF_ST_TYPE (q->internal_elf_sym.st_info))
-	{
-	default:
-	  break;
-	case STT_FILE:
-	  filename = bfd_asymbol_name (&q->symbol);
-	  break;
+  if (!(sym->flags & BSF_SYNTHETIC))
+    switch (ELF_ST_TYPE (((elf_symbol_type *) sym)->internal_elf_sym.st_info))
+      {
 	case STT_FUNC:
 	case STT_ARM_TFUNC:
 	case STT_NOTYPE:
-	  /* Skip mapping symbols.  */
-	  if ((q->symbol.flags & BSF_LOCAL)
-	      && bfd_is_arm_special_symbol_name (q->symbol.name,
-		    BFD_ARM_SPECIAL_SYM_TYPE_ANY))
-	    continue;
-	  /* Fall through.  */
-	  if (bfd_asymbol_section (&q->symbol) == section
-	      && q->symbol.value >= low_func
-	      && q->symbol.value <= offset)
-	    {
-	      func = (asymbol *) q;
-	      low_func = q->symbol.value;
-	    }
 	  break;
-	}
-    }
-
-  if (func == NULL)
-    return FALSE;
-
-  if (filename_ptr)
-    *filename_ptr = filename;
-  if (functionname_ptr)
-    *functionname_ptr = bfd_asymbol_name (func);
-
-  return TRUE;
-}
-
-
-/* Find the nearest line to a particular section and offset, for error
-   reporting.   This code is a duplicate of the code in elf.c, except
-   that it uses arm_elf_find_function.  */
-
-static bfd_boolean
-elf32_arm_find_nearest_line (bfd *	    abfd,
-			     asymbol **	    symbols,
-			     asection *	    section,
-			     bfd_vma	    offset,
-			     const char **  filename_ptr,
-			     const char **  functionname_ptr,
-			     unsigned int * line_ptr,
-			     unsigned int * discriminator_ptr)
-{
-  bfd_boolean found = FALSE;
-
-  if (_bfd_dwarf2_find_nearest_line (abfd, symbols, NULL, section, offset,
-				     filename_ptr, functionname_ptr,
-				     line_ptr, discriminator_ptr,
-				     dwarf_debug_sections,
-				     & elf_tdata (abfd)->dwarf2_find_line_info))
-    {
-      if (!*functionname_ptr)
-	arm_elf_find_function (abfd, symbols, section, offset,
-			       *filename_ptr ? NULL : filename_ptr,
-			       functionname_ptr);
-
-      return TRUE;
-    }
-
-  /* Skip _bfd_dwarf1_find_nearest_line since no known ARM toolchain
-     uses DWARF1.  */
-
-  if (! _bfd_stab_section_find_nearest_line (abfd, symbols, section, offset,
-					     & found, filename_ptr,
-					     functionname_ptr, line_ptr,
-					     & elf_tdata (abfd)->line_info))
-    return FALSE;
-
-  if (found && (*functionname_ptr || *line_ptr))
-    return TRUE;
-
-  if (symbols == NULL)
-    return FALSE;
+	default:
+	  return 0;
+      }
 
-  if (! arm_elf_find_function (abfd, symbols, section, offset,
-			       filename_ptr, functionname_ptr))
-    return FALSE;
+  if ((sym->flags & BSF_LOCAL)
+      && bfd_is_arm_special_symbol_name (sym->name,
+					 BFD_ARM_SPECIAL_SYM_TYPE_ANY))
+    return 0;
 
-  *line_ptr = 0;
-  return TRUE;
+  *code_off = sym->value;
+  size = 0;
+  if (!(sym->flags & BSF_SYNTHETIC))
+    size = ((elf_symbol_type *) sym)->internal_elf_sym.st_size;
+  if (size == 0)
+    size = 1;
+  return size;
 }
 
 static bfd_boolean
@@ -20488,7 +20407,6 @@ elf32_arm_backend_symbol_processing (bfd
 #define bfd_elf32_bfd_link_hash_table_create	elf32_arm_link_hash_table_create
 #define bfd_elf32_bfd_reloc_type_lookup		elf32_arm_reloc_type_lookup
 #define bfd_elf32_bfd_reloc_name_lookup		elf32_arm_reloc_name_lookup
-#define bfd_elf32_find_nearest_line		elf32_arm_find_nearest_line
 #define bfd_elf32_find_inliner_info		elf32_arm_find_inliner_info
 #define bfd_elf32_new_section_hook		elf32_arm_new_section_hook
 #define bfd_elf32_bfd_is_target_special_symbol	elf32_arm_is_target_special_symbol
@@ -20496,6 +20414,7 @@ elf32_arm_backend_symbol_processing (bfd
 #define bfd_elf32_get_synthetic_symtab	elf32_arm_get_synthetic_symtab
 
 #define elf_backend_get_symbol_type		elf32_arm_get_symbol_type
+#define elf_backend_maybe_function_sym		elf32_arm_maybe_function_sym
 #define elf_backend_gc_mark_hook		elf32_arm_gc_mark_hook
 #define elf_backend_gc_mark_extra_sections	elf32_arm_gc_mark_extra_sections
 #define elf_backend_check_relocs		elf32_arm_check_relocs
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.20191126/bfd/elf32-sh.c ./bfd/elf32-sh.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/bfd/elf32-sh.c	2019-11-26 01:49:29.000000000 +0000
+++ ./bfd/elf32-sh.c	2019-12-03 01:49:13.000000000 +0000
@@ -232,7 +232,7 @@ sh_elf_reloc (bfd *abfd, arelent *reloc_
 	      void *data, asection *input_section, bfd *output_bfd,
 	      char **error_message ATTRIBUTE_UNUSED)
 {
-  unsigned long insn;
+  bfd_vma insn;
   bfd_vma sym_value;
   enum elf_sh_reloc_type r_type;
   bfd_vma addr = reloc_entry->address;
@@ -274,7 +274,7 @@ sh_elf_reloc (bfd *abfd, arelent *reloc_
     case R_SH_DIR32:
       insn = bfd_get_32 (abfd, hit_data);
       insn += sym_value + reloc_entry->addend;
-      bfd_put_32 (abfd, (bfd_vma) insn, hit_data);
+      bfd_put_32 (abfd, insn, hit_data);
       break;
     case R_SH_IND12W:
       insn = bfd_get_16 (abfd, hit_data);
@@ -283,12 +283,10 @@ sh_elf_reloc (bfd *abfd, arelent *reloc_
 		    + input_section->output_offset
 		    + addr
 		    + 4);
-      sym_value += (insn & 0xfff) << 1;
-      if (insn & 0x800)
-	sym_value -= 0x1000;
-      insn = (insn & 0xf000) | (sym_value & 0xfff);
-      bfd_put_16 (abfd, (bfd_vma) insn, hit_data);
-      if (sym_value < (bfd_vma) -0x1000 || sym_value >= 0x1000)
+      sym_value += (((insn & 0xfff) ^ 0x800) - 0x800) << 1;
+      insn = (insn & 0xf000) | ((sym_value >> 1) & 0xfff);
+      bfd_put_16 (abfd, insn, hit_data);
+      if (sym_value + 0x1000 >= 0x2000 || (sym_value & 1) != 0)
 	return bfd_reloc_overflow;
       break;
     default:
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.20191126/bfd/elf64-alpha.c ./bfd/elf64-alpha.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/bfd/elf64-alpha.c	2019-11-26 01:49:29.000000000 +0000
+++ ./bfd/elf64-alpha.c	2019-12-03 01:49:13.000000000 +0000
@@ -1468,7 +1468,8 @@ elf64_alpha_find_nearest_line (bfd *abfd
 				     filename_ptr, functionname_ptr,
 				     line_ptr, discriminator_ptr,
 				     dwarf_debug_sections,
-				     &elf_tdata (abfd)->dwarf2_find_line_info))
+				     &elf_tdata (abfd)->dwarf2_find_line_info)
+      == 1)
     return TRUE;
 
   msec = bfd_get_section_by_name (abfd, ".mdebug");
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.20191126/bfd/elf.c ./bfd/elf.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/bfd/elf.c	2019-11-26 01:49:29.000000000 +0000
+++ ./bfd/elf.c	2019-12-03 01:49:13.000000000 +0000
@@ -9030,10 +9030,11 @@ _bfd_elf_find_nearest_line (bfd *abfd,
 				     filename_ptr, functionname_ptr,
 				     line_ptr, discriminator_ptr,
 				     dwarf_debug_sections,
-				     &elf_tdata (abfd)->dwarf2_find_line_info)
-      || _bfd_dwarf1_find_nearest_line (abfd, symbols, section, offset,
-					filename_ptr, functionname_ptr,
-					line_ptr))
+				     &elf_tdata (abfd)->dwarf2_find_line_info))
+    return TRUE;
+
+  if (_bfd_dwarf1_find_nearest_line (abfd, symbols, section, offset,
+				     filename_ptr, functionname_ptr, line_ptr))
     {
       if (!*functionname_ptr)
 	_bfd_elf_find_function (abfd, symbols, section, 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.20191126/bfd/elfnn-aarch64.c ./bfd/elfnn-aarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/bfd/elfnn-aarch64.c	2019-11-26 01:49:29.000000000 +0000
+++ ./bfd/elfnn-aarch64.c	2019-12-03 01:49:13.000000000 +0000
@@ -7999,122 +7999,43 @@ elfNN_aarch64_is_target_special_symbol (
 					     BFD_AARCH64_SPECIAL_SYM_TYPE_ANY);
 }
 
-/* This is a version of _bfd_elf_find_function() from dwarf2.c except that
-   AArch64 mapping symbols are ignored when looking for function names.  */
+/* If the ELF symbol SYM might be a function in SEC, return the
+   function size and set *CODE_OFF to the function's entry point,
+   otherwise return zero.  */
+
+static bfd_size_type
+elfNN_aarch64_maybe_function_sym (const asymbol *sym, asection *sec,
+				  bfd_vma *code_off)
+{
+  bfd_size_type size;
+
+  if ((sym->flags & (BSF_SECTION_SYM | BSF_FILE | BSF_OBJECT
+		     | BSF_THREAD_LOCAL | BSF_RELC | BSF_SRELC)) != 0
+      || sym->section != sec)
+    return 0;
 
-static bfd_boolean
-aarch64_elf_find_function (bfd *          abfd,
-			   asymbol **     symbols,
-			   asection *     section,
-			   bfd_vma        offset,
-			   const char **  filename_ptr,
-			   const char **  functionname_ptr)
-{
-  const char *filename = NULL;
-  asymbol *func = NULL;
-  bfd_vma low_func = 0;
-  asymbol **p;
-
-  if (symbols == NULL)
-    return FALSE;
-
-  if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
-    return FALSE;
-
-  for (p = symbols; *p != NULL; p++)
-    {
-      elf_symbol_type *q;
-
-      q = (elf_symbol_type *) * p;
-
-      switch (ELF_ST_TYPE (q->internal_elf_sym.st_info))
-	{
-	default:
-	  break;
-	case STT_FILE:
-	  filename = bfd_asymbol_name (&q->symbol);
-	  break;
+  if (!(sym->flags & BSF_SYNTHETIC))
+    switch (ELF_ST_TYPE (((elf_symbol_type *) sym)->internal_elf_sym.st_info))
+      {
 	case STT_FUNC:
 	case STT_NOTYPE:
-	  /* Skip mapping symbols.  */
-	  if ((q->symbol.flags & BSF_LOCAL)
-	      && (bfd_is_aarch64_special_symbol_name
-		  (q->symbol.name, BFD_AARCH64_SPECIAL_SYM_TYPE_ANY)))
-	    continue;
-	  /* Fall through.  */
-	  if (bfd_asymbol_section (&q->symbol) == section
-	      && q->symbol.value >= low_func && q->symbol.value <= offset)
-	    {
-	      func = (asymbol *) q;
-	      low_func = q->symbol.value;
-	    }
 	  break;
-	}
-    }
-
-  if (func == NULL)
-    return FALSE;
-
-  if (filename_ptr)
-    *filename_ptr = filename;
-  if (functionname_ptr)
-    *functionname_ptr = bfd_asymbol_name (func);
-
-  return TRUE;
-}
-
-
-/* Find the nearest line to a particular section and offset, for error
-   reporting.   This code is a duplicate of the code in elf.c, except
-   that it uses aarch64_elf_find_function.  */
-
-static bfd_boolean
-elfNN_aarch64_find_nearest_line (bfd *abfd,
-				 asymbol **symbols,
-				 asection *section,
-				 bfd_vma offset,
-				 const char **filename_ptr,
-				 const char **functionname_ptr,
-				 unsigned int *line_ptr,
-				 unsigned int *discriminator_ptr)
-{
-  bfd_boolean found = FALSE;
-
-  if (_bfd_dwarf2_find_nearest_line (abfd, symbols, NULL, section, offset,
-				     filename_ptr, functionname_ptr,
-				     line_ptr, discriminator_ptr,
-				     dwarf_debug_sections,
-				     &elf_tdata (abfd)->dwarf2_find_line_info))
-    {
-      if (!*functionname_ptr)
-	aarch64_elf_find_function (abfd, symbols, section, offset,
-				   *filename_ptr ? NULL : filename_ptr,
-				   functionname_ptr);
-
-      return TRUE;
-    }
-
-  /* Skip _bfd_dwarf1_find_nearest_line since no known AArch64
-     toolchain uses DWARF1.  */
-
-  if (!_bfd_stab_section_find_nearest_line (abfd, symbols, section, offset,
-					    &found, filename_ptr,
-					    functionname_ptr, line_ptr,
-					    &elf_tdata (abfd)->line_info))
-    return FALSE;
-
-  if (found && (*functionname_ptr || *line_ptr))
-    return TRUE;
-
-  if (symbols == NULL)
-    return FALSE;
-
-  if (!aarch64_elf_find_function (abfd, symbols, section, offset,
-				  filename_ptr, functionname_ptr))
-    return FALSE;
+	default:
+	  return 0;
+      }
 
-  *line_ptr = 0;
-  return TRUE;
+  if ((sym->flags & BSF_LOCAL)
+      && bfd_is_aarch64_special_symbol_name (sym->name,
+					     BFD_AARCH64_SPECIAL_SYM_TYPE_ANY))
+    return 0;
+
+  *code_off = sym->value;
+  size = 0;
+  if (!(sym->flags & BSF_SYNTHETIC))
+    size = ((elf_symbol_type *) sym)->internal_elf_sym.st_size;
+  if (size == 0)
+    size = 1;
+  return size;
 }
 
 static bfd_boolean
@@ -10123,9 +10044,6 @@ const struct elf_size_info elfNN_aarch64
 #define bfd_elfNN_find_inliner_info		\
   elfNN_aarch64_find_inliner_info
 
-#define bfd_elfNN_find_nearest_line		\
-  elfNN_aarch64_find_nearest_line
-
 #define bfd_elfNN_get_synthetic_symtab		\
   elfNN_aarch64_get_synthetic_symtab
 
@@ -10170,6 +10088,9 @@ const struct elf_size_info elfNN_aarch64
 #define elf_backend_output_arch_local_syms	\
   elfNN_aarch64_output_arch_local_syms
 
+#define elf_backend_maybe_function_sym		\
+  elfNN_aarch64_maybe_function_sym
+
 #define elf_backend_plt_sym_val			\
   elfNN_aarch64_plt_sym_val
 
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.20191126/bfd/elfxx-mips.c ./bfd/elfxx-mips.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/bfd/elfxx-mips.c	2019-11-26 01:49:29.000000000 +0000
+++ ./bfd/elfxx-mips.c	2019-12-03 01:49:13.000000000 +0000
@@ -13079,26 +13079,17 @@ _bfd_mips_elf_find_nearest_line (bfd *ab
 				     line_ptr, discriminator_ptr,
 				     dwarf_debug_sections,
 				     &elf_tdata (abfd)->dwarf2_find_line_info)
-      || _bfd_dwarf1_find_nearest_line (abfd, symbols, section, offset,
-					filename_ptr, functionname_ptr,
-					line_ptr))
-    {
-      /* PR 22789: If the function name or filename was not found through
-	 the debug information, then try an ordinary lookup instead.  */
-      if ((functionname_ptr != NULL && *functionname_ptr == NULL)
-	  || (filename_ptr != NULL && *filename_ptr == NULL))
-	{
-	  /* Do not override already discovered names.  */
-	  if (functionname_ptr != NULL && *functionname_ptr != NULL)
-	    functionname_ptr = NULL;
-
-	  if (filename_ptr != NULL && *filename_ptr != NULL)
-	    filename_ptr = NULL;
-
-	  _bfd_elf_find_function (abfd, symbols, section, offset,
-				  filename_ptr, functionname_ptr);
-	}
+      == 1)
+    return TRUE;
 
+  if (_bfd_dwarf1_find_nearest_line (abfd, symbols, section, offset,
+				     filename_ptr, functionname_ptr,
+				     line_ptr))
+    {
+      if (!*functionname_ptr)
+	_bfd_elf_find_function (abfd, symbols, section, offset,
+				*filename_ptr ? NULL : filename_ptr,
+				functionname_ptr);
       return TRUE;
     }
 
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.20191126/bfd/libbfd.h ./bfd/libbfd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/bfd/libbfd.h	2019-11-26 01:49:29.000000000 +0000
+++ ./bfd/libbfd.h	2019-12-03 01:49:13.000000000 +0000
@@ -601,7 +601,7 @@ struct dwarf_debug_section
 extern const struct dwarf_debug_section dwarf_debug_sections[] ATTRIBUTE_HIDDEN;
 
 /* Find the nearest line using DWARF 2 debugging information.  */
-extern bfd_boolean _bfd_dwarf2_find_nearest_line
+extern int _bfd_dwarf2_find_nearest_line
   (bfd *, asymbol **, asymbol *, asection *, bfd_vma,
    const char **, const char **, unsigned int *, unsigned int *,
    const struct dwarf_debug_section *, void **) ATTRIBUTE_HIDDEN;
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.20191126/bfd/libbfd-in.h ./bfd/libbfd-in.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/bfd/libbfd-in.h	2019-11-26 01:49:29.000000000 +0000
+++ ./bfd/libbfd-in.h	2019-12-03 01:49:13.000000000 +0000
@@ -596,7 +596,7 @@ struct dwarf_debug_section
 extern const struct dwarf_debug_section dwarf_debug_sections[] ATTRIBUTE_HIDDEN;
 
 /* Find the nearest line using DWARF 2 debugging information.  */
-extern bfd_boolean _bfd_dwarf2_find_nearest_line
+extern int _bfd_dwarf2_find_nearest_line
   (bfd *, asymbol **, asymbol *, asection *, bfd_vma,
    const char **, const char **, unsigned int *, unsigned int *,
    const struct dwarf_debug_section *, void **) ATTRIBUTE_HIDDEN;
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.20191126/bfd/version.h ./bfd/version.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/bfd/version.h	2019-11-26 01:49:29.000000000 +0000
+++ ./bfd/version.h	2019-12-03 01:49:13.000000000 +0000
@@ -16,7 +16,7 @@
 
    In releases, the date is not included in either version strings or
    sonames.  */
-#define BFD_VERSION_DATE 20191126
+#define BFD_VERSION_DATE 20191203
 #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.20191126/djunpack.bat ./djunpack.bat
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/djunpack.bat	2019-11-26 01:53:37.000000000 +0000
+++ ./djunpack.bat	2019-12-03 01:53:58.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.20191126
-if "%GDBVER%"=="$package-9.0.50.20191126" GoTo EnvOk
+set GDBVER=$package-9.0.50.20191203
+if "%GDBVER%"=="$package-9.0.50.20191203" 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.20191126/gdb/aarch32-tdep.c ./gdb/aarch32-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/aarch32-tdep.c	2019-11-26 01:49:30.000000000 +0000
+++ ./gdb/aarch32-tdep.c	2019-12-03 01:49:15.000000000 +0000
@@ -16,6 +16,9 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "gdbsupport/common-defs.h"
+
+#include "aarch32-tdep.h"
+
 #include "gdbsupport/common-regcache.h"
 #include "arch/aarch32.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.20191126/gdb/aarch32-tdep.h ./gdb/aarch32-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/aarch32-tdep.h	2019-11-26 01:49:30.000000000 +0000
+++ ./gdb/aarch32-tdep.h	2019-12-03 01:49:15.000000000 +0000
@@ -18,6 +18,8 @@
 #ifndef AARCH32_TDEP_H
 #define AARCH32_TDEP_H
 
+struct target_desc;
+
 /* Get the AArch32 target description.  */
 
 const target_desc *aarch32_read_description ();
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.20191126/gdb/acinclude.m4 ./gdb/acinclude.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/acinclude.m4	2019-11-26 01:49:30.000000000 +0000
+++ ./gdb/acinclude.m4	2019-12-03 01:49:15.000000000 +0000
@@ -73,6 +73,8 @@ m4_include(ptrace.m4)
 
 m4_include(ax_cxx_compile_stdcxx.m4)
 
+m4_include([../config/ax_pthread.m4])
+
 ## ----------------------------------------- ##
 ## ANSIfy the C compiler whenever possible.  ##
 ## From Franc,ois Pinard                     ##
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.20191126/gdb/ada-exp.c ./gdb/ada-exp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/ada-exp.c	2019-11-26 01:53:00.000000000 +0000
+++ ./gdb/ada-exp.c	2019-12-03 01:53:20.000000000 +0000
@@ -3344,8 +3344,7 @@ write_ambiguous_var (struct parser_state
   struct symbol *sym = new (&temp_parse_space) symbol ();
 
   SYMBOL_DOMAIN (sym) = UNDEF_DOMAIN;
-  SYMBOL_SET_LINKAGE_NAME (sym,
-			   obstack_strndup (&temp_parse_space, name, len));
+  sym->set_linkage_name (obstack_strndup (&temp_parse_space, name, len));
   SYMBOL_LANGUAGE (sym) = language_ada;
 
   write_exp_elt_opcode (par_state, OP_VAR_VALUE);
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.20191126/gdb/ada-exp.y ./gdb/ada-exp.y
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/ada-exp.y	2019-11-26 01:49:30.000000000 +0000
+++ ./gdb/ada-exp.y	2019-12-03 01:49:15.000000000 +0000
@@ -1105,8 +1105,7 @@ write_ambiguous_var (struct parser_state
   struct symbol *sym = new (&temp_parse_space) symbol ();
 
   SYMBOL_DOMAIN (sym) = UNDEF_DOMAIN;
-  SYMBOL_SET_LINKAGE_NAME (sym,
-			   obstack_strndup (&temp_parse_space, name, len));
+  sym->set_linkage_name (obstack_strndup (&temp_parse_space, name, len));
   SYMBOL_LANGUAGE (sym) = language_ada;
 
   write_exp_elt_opcode (par_state, OP_VAR_VALUE);
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.20191126/gdb/aix-thread.c ./gdb/aix-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/aix-thread.c	2019-11-26 01:49:30.000000000 +0000
+++ ./gdb/aix-thread.c	2019-12-03 01:49:15.000000000 +0000
@@ -61,7 +61,7 @@ extern int getthrds (pid_t, struct thrds
 #endif
 
 /* Whether to emit debugging output.  */
-static int debug_aix_thread;
+static bool debug_aix_thread;
 
 /* In AIX 5.1, functions use pthdb_tid_t instead of tid_t.  */
 #ifndef PTHDB_VERSION_3
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.20191126/gdb/arc-tdep.c ./gdb/arc-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/arc-tdep.c	2019-11-26 01:49:30.000000000 +0000
+++ ./gdb/arc-tdep.c	2019-12-03 01:49:15.000000000 +0000
@@ -208,7 +208,7 @@ arc_insn_get_operand_value_signed (const
 
 /* Get register with base address of memory operation.  */
 
-int
+static int
 arc_insn_get_memory_base_reg (const struct arc_instruction &insn)
 {
   /* POP_S and PUSH_S have SP as an implicit argument in a disassembler.  */
@@ -227,7 +227,7 @@ arc_insn_get_memory_base_reg (const stru
 
 /* Get offset of a memory operation INSN.  */
 
-CORE_ADDR
+static CORE_ADDR
 arc_insn_get_memory_offset (const struct arc_instruction &insn)
 {
   /* POP_S and PUSH_S have offset as an implicit argument in a
@@ -334,7 +334,7 @@ arc_insn_get_branch_target (const struct
 
 /* Dump INSN into gdb_stdlog.  */
 
-void
+static void
 arc_insn_dump (const struct arc_instruction &insn)
 {
   struct gdbarch *gdbarch = target_gdbarch ();
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.20191126/gdb/breakpoint.h ./gdb/breakpoint.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/breakpoint.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/breakpoint.h	2019-12-03 01:49:15.000000000 +0000
@@ -1299,9 +1299,6 @@ const char *bpdisp_text (enum bpdisp dis
 
 extern void break_command (const char *, int);
 
-extern void hbreak_command_wrapper (const char *, int);
-extern void thbreak_command_wrapper (const char *, int);
-extern void rbreak_command_wrapper (const char *, int);
 extern void watch_command_wrapper (const char *, int, int);
 extern void awatch_command_wrapper (const char *, int, int);
 extern void rwatch_command_wrapper (const char *, int, int);
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.20191126/gdb/ChangeLog ./gdb/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/ChangeLog	2019-11-26 01:49:30.000000000 +0000
+++ ./gdb/ChangeLog	2019-12-03 01:49:15.000000000 +0000
@@ -1,3 +1,594 @@
+2019-12-02  Tom Tromey  <tom@tromey.com>
+
+	* unittests/tui-selftests.c (run_tests): Make conditional.
+	(_initialize_tui_selftest): Make conditional.
+
+2019-12-02  Christian Biesinger  <cbiesinger@google.com>
+
+	* aix-thread.c (debug_aix_thread): Change type to bool.
+
+2019-12-02  Luis Machado  <luis.machado@linaro.org>
+
+	* infrun.c (follow_fork_inferior): Remove outdated FIXME comment.
+
+2019-12-01  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2read.c (read_tag_string_type): Read the fields required to
+	make a dynamic string, and possibly create a dynamic range for the
+	string.
+	(attr_to_dynamic_prop): Setup is_reference based on the type of
+	attribute being processed.
+	* gdbtypes.c (is_dynamic_type_internal): Handle TYPE_CODE_STRING.
+	(resolve_dynamic_array): Rename to...
+	(resolve_dynamic_array_or_string): ...this, update header comment,
+	and accept TYPE_CODE_STRING.
+	(resolve_dynamic_type_internal): Handle TYPE_CODE_STRING.
+
+2019-12-01  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2read.c (dwarf2_per_cu_int_type): New function, takes most
+	of its implementation from...
+	(dwarf2_per_cu_addr_sized_int_type): ...here, which now just calls
+	the new function.
+
+2019-12-01  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2read.c (read_subrange_type): Read bit and byte stride and
+	create a range with stride where appropriate.
+	* f-valprint.c: Include 'gdbarch.h'.
+	(f77_print_array_1): Take the stride into account when walking the
+	array.  Also convert the stride into addressable units.
+	* gdbtypes.c (create_range_type): Initialise the stride to
+	constant zero.
+	(create_range_type_with_stride): New function, initialise the
+	range as normal, and then setup the stride.
+	(has_static_range): Include the stride here.  Also change the
+	return type to bool.
+	(create_array_type_with_stride): Consider the range stride if the
+	array isn't given its own stride.
+	(resolve_dynamic_range): Resolve the stride if needed.
+	* gdbtypes.h (struct range_bounds) <stride>: New member variable.
+	(struct range_bounds) <flag_is_byte_stride>: New member variable.
+	(TYPE_BIT_STRIDE): Define.
+	(TYPE_ARRAY_BIT_STRIDE): Define.
+	(create_range_type_with_stride): Declare.
+	* valarith.c (value_subscripted_rvalue): Take range stride into
+	account when walking the array.
+
+2019-12-01  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_all_windows_info): Treat inactive TUI
+	specially.
+
+2019-12-01  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_copy_source_line): Don't advance past
+	\0.
+	* unittests/tui-selftests.c: New file.
+	* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add tui-selftests.c.
+
+2019-12-01  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c (tui_enable): Call tui_update_variables earlier.
+
+2019-12-01  Tom Tromey  <tom@tromey.com>
+
+	* NEWS: Document new settings.
+	* tui/tui-wingeneral.c (box_win): Apply appropriate border style.
+	* tui/tui-win.c (_initialize_tui_win): Add border style
+	observers.
+	* tui/tui-io.h (tui_apply_style): Declare.
+	* tui/tui-io.c (tui_apply_style): Rename from apply_style.  No
+	longer static.
+	(apply_ansi_escape, tui_set_reverse_mode): Update.
+	* cli/cli-style.h (class cli_style_option) <add_setshow_commands>:
+	Add "skip_intensity" parameter.
+	<changed>: New member.
+	<do_set_value>: Declare.
+	(tui_border_style, tui_active_border_style): Declare.
+	* cli/cli-style.c (tui_border_style, tui_active_border_style): New
+	globals.
+	(cli_style_option): Initialize "changed".
+	(cli_style_option::do_set_value): New function.
+	(cli_style_option::add_setshow_commands): Add "skip_intensity"
+	parameter.  Update.
+	(STYLE_ADD_SETSHOW_COMMANDS): Add "SKIP" parameter.
+	(_initialize_cli_style): Update.  Create TUI border style
+	commands.
+
+2019-12-01  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_copy_source_line): Add "ndigits"
+	parameter.
+	* tui/tui-winsource.c (tui_copy_source_line): Add "ndigits"
+	parameter.
+	* tui/tui-win.h (compact_source): Declare.
+	* tui/tui-win.c (compact_source): New global.
+	(tui_set_compact_source, tui_show_compact_source): New functions.
+	(_initialize_tui_win): Add "compact-source" setting.
+	* tui/tui-source.c (tui_source_window::set_contents): Handle
+	compact_source setting.
+	* tui/tui-disasm.c (tui_disasm_window::set_contents): Update.
+	* NEWS: Document new setting.
+
+2019-11-30  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2read.c (dwarf2_add_field): Include field offset when
+	computing variant part length.
+
+2019-11-30  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	* NEWS:  Mention define-prefix.  Tell that command names can now
+	contain a . character.
+
+2019-11-30  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* command.h (valid_cmd_char_p): Declare.
+	* cli/cli-decode.c (valid_cmd_char_p): New function factorizing
+	the check of valid command char.
+	(find_command_name_length, valid_user_defined_cmd_name_p): Use
+	valid_cmd_char_p.
+	* cli/cli-script.c (validate_comname): Likewise.
+	* completer.c (gdb_completer_command_word_break_characters):
+	Do not remove . from the word break char, update comments.
+	(complete_line_internal_1): Use valid_cmd_char_p.
+	* guile/scm-cmd.c (gdbscm_parse_command_name): Likewise.
+	* python/py-cmd.c (gdbpy_parse_command_name): Likewise.
+
+2019-11-30  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* cli/cli-script.c (do_define_command): Ensure a redefined
+	prefix command is kept as a prefix command.
+	(define_prefix_command): New function.
+	(show_user_1): Report user defined prefixes.
+	(_initialize_cli_script):  Create the new 'define-prefix' command.
+	Add completers for 'define' and 'document'.
+	* top.c (execute_command):  If command is a user-defined prefix only
+	command, report the list of commands for this prefix command.
+
+2019-11-29  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* valops.c (find_oload_champ): Improve debug output.
+
+2019-11-29  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* valops.c (find_oload_champ): Print part of debug messages
+	before the badness vector is std::move'd.
+
+2019-11-28  Tom Tromey  <tom@tromey.com>
+
+	* value.c (creal_internal_fn): Fix comment.
+
+2019-11-28  Tom Tromey  <tom@tromey.com>
+
+	* gdbtypes.h (struct range_bounds) <flag_upper_bound_is_count,
+	flag_bound_evaluated>: Now unsigned.
+
+2019-11-28  Tom Tromey  <tom@tromey.com>
+
+	* guile/guile-internal.h (vlscm_scm_from_value_unsafe): Don't
+	declare.
+
+2019-11-28  Mihails Strasuns  <mihails.strasuns@intel.com>
+
+	* jit.c (jit_bfd_try_read_symtab): Fix printed function name in the
+	debug output.
+	* jit.c (jit_unregister_code): Add debug print to match
+	`jit_register_code`.
+
+2019-11-27  Christian Biesinger  <cbiesinger@google.com>
+
+	* NEWS: Mention the new multithreaded symbol loading.
+
+2019-11-27  Christian Biesinger  <cbiesinger@google.com>
+
+	* maint.c (n_worker_threads): Default to 0.
+	(worker_threads_disabled): New function.
+	* maint.h (worker_threads_disabled): New function.
+	* minsyms.c (minimal_symbol_reader::record_full): Call symbol_set_names
+	here if worker_threads_disabled () is true.
+	(minimal_symbol_reader::install): Skip all threading if
+	worker_threads_disabled () is true.
+
+2019-11-27  Christian Biesinger  <cbiesinger@google.com>
+
+	* minsyms.c (add_minsym_to_hash_table): Use a previously computed
+	hash code if possible.
+	(add_minsym_to_demangled_hash_table): Likewise.
+	(minimal_symbol_reader::install): Compute the hash codes for msymbol
+	on the background thread.
+	* symtab.h (struct minimal_symbol) <hash_value, demangled_hash_value>:
+	Add these fields.
+
+2019-11-27  Christian Biesinger  <cbiesinger@google.com>
+
+	* minsyms.c (minimal_symbol_reader::install): Also compute the hash
+	of the mangled name on the background thread.
+	* symtab.c (symbol_set_names): Allow passing in the hash of the
+	linkage_name.
+	* symtab.h (symbol_set_names): Likewise.
+
+2019-11-27  Kevin Buettner  <kevinb@redhat.com>
+
+	* dwarf2read.c (inherit_abstract_dies): Ensure that delayed
+	physnames are computed for inherited DIEs.
+
+2019-11-27  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2read.h (struct dwarf2_per_objfile): Remove unnecessary
+	backslashes.
+	* cp-support.c: Remove unnecessary backslashes.
+
+2019-11-27  Christian Biesinger  <cbiesinger@google.com>
+
+	* ada-exp.y (write_ambiguous_var): Replace SYMBOL_SET_LINKAGE_NAME
+	with sym->set_linkage_name.
+	* coffread.c (coff_read_enum_type): Likewise.
+	* mdebugread.c (parse_symbol): Likewise.
+	* stabsread.c (patch_block_stabs): Likewise.
+	(define_symbol): Likewise.
+	(read_enum_type): Likewise.
+	(common_block_end): Likewise.
+	* symtab.h (struct general_symbol_info) <set_linkage_name>: New
+	function.
+	(SYMBOL_SET_LINKAGE_NAME): Remove.
+	* xcoffread.c (process_xcoff_symbol): Replace SYMBOL_SET_LINKAGE_NAME
+	with sym->set_linkage_name.
+
+2019-11-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* mi/mi-cmds.c (mi_cmds): Add 'symbol-info-modules' entry.
+	* mi/mi-cmds.h (mi_cmd_symbol_info_modules): Declare.
+	* mi/mi-symbol-cmds.c (mi_cmd_symbol_info_modules): New function.
+	* NEWS: Mention new MI command.
+
+2019-11-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* mi/mi-cmds.c (mi_cmds): Add '-symbol-info-functions',
+	'-symbol-info-types', and '-symbol-info-variables'.
+	* mi/mi-cmds.h (mi_cmd_symbol_info_functions): Declare.
+	(mi_cmd_symbol_info_types): Declare.
+	(mi_cmd_symbol_info_variables): Declare.
+	* mi/mi-symbol-cmds.c: Add 'source.h' and 'mi-getopt.h' includes.
+	(output_debug_symbol): New function.
+	(output_nondebug_symbol): New function.
+	(mi_symbol_info): New function.
+	(mi_info_functions_or_variables): New function.
+	(mi_cmd_symbol_info_functions): New function.
+	(mi_cmd_symbol_info_types): New function.
+	(mi_cmd_symbol_info_variables): New function.
+	* NEWS: Mention new commands.
+
+2019-11-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* symtab.c (symbol_to_info_string): New function, most content
+	moved from print_symbol_info, but updated to return a std::string.
+	(print_symbol_info): Update to use symbol_to_info_string and print
+	returned string.
+	* symtab.h (symbol_to_info_string): Declare new function.
+
+2019-11-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/python.c (gdbpy_rbreak): Convert to using
+	global_symbol_searcher.
+	* symtab.c (file_matches): Convert return type to bool, change
+	file list to std::vector, update header comment.
+	(search_symbols): Rename to...
+	(global_symbol_searcher::search): ...this and update now its
+	a member function of global_symbol_searcher.  Take account of the
+	changes to file_matches.
+	(symtab_symbol_info): Convert to using global_symbol_searcher.
+	(rbreak_command): Likewise.
+	(search_module_symbols): Likewise.
+	* symtab.h (enum symbol_search): Update comment.
+	(search_symbols): Remove declaration.
+	(class global_symbol_searcher): New class.
+
+2019-11-26  Tom Tromey  <tromey@adacore.com>
+
+	* cp-support.c (_initialize_cp_support): Conditionally initialize
+	gdb_demangle_attempt_core_dump.
+
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* python/py-function.c (fnpy_init): Update.
+	* value.h (add_internal_function): Adjust declaration.
+	* value.c (function_destroyer): Remove.
+	(do_add_internal_function): Don't set destroyer or copy name.
+	(add_internal_function): Take unique_xmalloc_ptr<char> for name.
+	Set name_allocated.
+	* python/py-cmd.c (cmdpy_destroyer): Don't free "name".
+	(cmdpy_init): Set name_allocated.
+	* cli/cli-decode.h (struct cmd_list_element) <name_allocated>: New
+	member.
+	(~cmd_list_element): Free "name" if needed.
+
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* value.h (add_internal_function): Add new overload.  Move
+	documentation from value.h.
+	* value.c (do_add_internal_function): New function.
+	(add_internal_function): Use it.  Add new overload.
+	(function_destroyer): Don't free doc.
+	* python/py-function.c (fnpy_init): Update.
+
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* python/py-cmd.c (cmdpy_destroyer): Don't free "doc".
+	(cmdpy_init): Set "doc_allocated".
+
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* gdbsupport/thread-pool.c (thread_pool::set_thread_count): Set
+	name of worker thread.
+	* gdbsupport/common.m4 (GDB_AC_COMMON): Check for
+	pthread_setname_np.
+	* configure, config.in: Rebuild.
+
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* python/python.c (class gdbpy_gil): New.
+	(struct gdbpy_event): Add constructor, destructor, operator().
+	(gdbpy_post_event): Use run_on_main_thread.
+	(gdbpy_initialize_events): Remove.
+	(do_start_initialization): Update.
+
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* NEWS: Add entry.
+	* maint.c (_initialize_maint_cmds): Add "worker-threads" maint
+	commands.  Call update_thread_pool_size.
+	(update_thread_pool_size, maintenance_set_worker_threads): New
+	functions.
+	(n_worker_threads): New global.
+
+2019-11-26  Christian Biesinger  <cbiesinger@google.com>
+	    Tom Tromey  <tom@tromey.com>
+
+	* minsyms.c (minimal_symbol_reader::install): Use
+	parallel_for_each.
+	* gdbsupport/parallel-for.h: New file.
+	* Makefile.in (HFILES_NO_SRCDIR): Add gdbsupport/parallel-for.h.
+
+2019-11-26  Christian Biesinger  <cbiesinger@google.com>
+	    Tom Tromey  <tom@tromey.com>
+
+	* gdbsupport/thread-pool.h: New file.
+	* gdbsupport/thread-pool.c: New file.
+	* Makefile.in (COMMON_SFILES): Add thread-pool.c.
+	(HFILES_NO_SRCDIR): Add thread-pool.h.
+
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* event-top.h (thread_local_segv_handler): Declare.
+	* event-top.c (thread_local_segv_handler): New global.
+	(install_handle_sigsegv, handle_sigsegv): New functions.
+	(async_init_signals): Install SIGSEGV handler.
+	* cp-support.c (gdb_demangle_jmp_buf): Change type.  Now
+	thread-local.
+	(report_failed_demangle): New function.
+	(gdb_demangle): Make core_dump_allowed atomic.  Remove signal
+	handler-setting code, instead use segv_handler.  Run warning code
+	on main thread.
+
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* run-on-main-thread.c: New file.
+	* run-on-main-thread.h: New file.
+	* unittests/main-thread-selftests.c: New file.
+	* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
+	main-thread-selftests.c.
+	(HFILES_NO_SRCDIR): Add run-on-main-thread.h.
+	(COMMON_SFILES): Add run-on-main-thread.c.
+
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* main.c (setup_alternate_signal_stack): Remove.
+	(captured_main_1): Use gdb::alternate_signal_stack.
+	* gdbsupport/alt-stack.h: New file.
+
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* gdbsupport/signals-state-save-restore.c (original_signal_mask):
+	Remove comment.
+	(save_original_signals_state, restore_original_signals_state): Use
+	gdb_sigmask.
+	* linux-nat.c (block_child_signals, restore_child_signals_mask)
+	(_initialize_linux_nat): Use gdb_sigmask.
+	* guile/guile.c (_initialize_guile): Use block_signals.
+	* Makefile.in (HFILES_NO_SRCDIR): Add gdb-sigmask.h.
+	* gdbsupport/gdb-sigmask.h: New file.
+	* event-top.c (async_sigtstp_handler): Use gdb_sigmask.
+	* cp-support.c (gdb_demangle): Use gdb_sigmask.
+	* gdbsupport/common.m4 (GDB_AC_COMMON): Check for
+	pthread_sigmask.
+	* configure, config.in: Rebuild.
+	* gdbsupport/block-signals.h: New file.
+
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* acinclude.m4: Include ax_pthread.m4.
+	* Makefile.in (PTHREAD_CFLAGS, PTHREAD_LIBS): New variables.
+	(INTERNAL_CFLAGS_BASE): Use PTHREAD_CFLAGS.
+	(CLIBS): Use PTHREAD_LIBS.
+	(aclocal_m4_deps): Add ax_pthread.m4.
+	* config.in, configure: Rebuild.
+	* gdbsupport/common.m4 (GDB_AC_COMMON): Check for std::thread.
+
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* symtab.h (struct minimal_symbol) <name_set>: New member.
+	* minsyms.c (minimal_symbol_reader::record_full): Copy name.
+	Don't call symbol_set_names.
+	(minimal_symbol_reader::install): Call symbol_set_names.
+
+2019-11-26  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* python/python.c (gdbpy_enter::~gdbpy_enter): Release GIL after
+	restore_active_ext_lang, as GIL is needed for (indirectly)
+	called PyOS_InterruptOccurred.
+
+2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+
+	* sparc-nat.c (sparc_xfer_wcookie): Sync declaration with
+	definition.
+
+2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+
+	* remote-sim.c (simulator_command): Make static, remove
+	declaration.
+
+2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+
+	* unittests/array-view-selftests.c (check_ptr_size_ctor2): Make
+	static.
+	* unittests/basic_string_view/capacity/1.cc (test01): Likewise.
+	* unittests/basic_string_view/cons/char/1.cc (test01): Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/cons/char/2.cc (test03): Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/cons/char/3.cc (test05): Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/element_access/char/1.cc (test01):
+	Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/element_access/char/empty.cc (main):
+	Likewise.
+	* unittests/basic_string_view/element_access/char/front_back.cc
+	(test01): Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/inserters/char/2.cc (test05):
+	Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/modifiers/remove_prefix/char/1.cc
+	(test01): Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/modifiers/remove_suffix/char/1.cc
+	(test01): Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/modifiers/swap/char/1.cc (test01):
+	Likewise.
+	* unittests/basic_string_view/operations/compare/char/1.cc
+	(test01): Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/operations/compare/char/13650.cc
+	(test01): Likewise.
+	* unittests/basic_string_view/operations/copy/char/1.cc (test01):
+	Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/operations/data/char/1.cc (test01):
+	Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/operations/find/char/1.cc (test01):
+	Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/operations/find/char/2.cc (test02):
+	Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/operations/find/char/3.cc (test03):
+	Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/operations/find/char/4.cc (main):
+	Likewise.
+	* unittests/basic_string_view/operations/rfind/char/1.cc (test01):
+	Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/operations/rfind/char/2.cc (test02):
+	Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/operations/rfind/char/3.cc (test03):
+	Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/operations/substr/char/1.cc
+	(test01): Likewise.
+	(main): Likewise.
+	* unittests/basic_string_view/operators/char/2.cc (main):
+	Likewise.
+	* unittests/optional/assignment/1.cc (test): Likewise.
+	* unittests/optional/assignment/2.cc (test): Likewise.
+	* unittests/optional/assignment/3.cc (test): Likewise.
+	* unittests/optional/assignment/4.cc (test): Likewise.
+	* unittests/optional/assignment/5.cc (test): Likewise.
+	* unittests/optional/assignment/6.cc (test): Likewise.
+	* unittests/optional/assignment/7.cc (test): Likewise.
+	* unittests/optional/cons/copy.cc (test): Likewise.
+	* unittests/optional/cons/default.cc (test): Likewise.
+	* unittests/optional/cons/move.cc (test): Likewise.
+	* unittests/optional/cons/value.cc (test): Likewise.
+	* unittests/optional/in_place.cc (test): Likewise.
+	* unittests/optional/observers/1.cc (test): Likewise.
+	* unittests/optional/observers/2.cc (test): Likewise.
+
+2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+
+	* tui-win.h (tui_set_var_cmd): Remove.
+	* tui-win.c (tui_set_var_cmd): Make static.
+
+2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+
+	* breakpoint.h (hbreak_command_wrapper, thbreak_command_wrapper,
+	rbreak_command_wrapper): Remove.
+	* symtab.c (rbreak_command_wrapper): Remove.
+
+2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+
+	* inferior.h (info_terminal_command): Remove declaration.
+	* inflow.c (info_terminal_command): Make static.
+
+2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+
+	* inferior.c (exit_inferior_silent): Remove.
+
+2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dictionary.c (dict_empty, mdict_empty): Remove.
+	* dictionary.c (mdict_empty): Remove.
+
+2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+
+	 * arc-tdep.c (arc_insn_get_memory_base_reg): Make static.
+	 (arc_insn_get_memory_offset): Likewise.
+	 (arc_insn_dump): Likewise.
+	 * cp-support.c (test_cp_symbol_name_matches): Likewise.
+	 * csky-linux-tdep.c (csky_supply_fregset): Likewise.
+	 * dictionary.c (dict_iterator_next): Likewise.
+	 (dict_iter_match_first): Likewise.
+	 (dict_iter_match_next): Likewise.
+	 * f-lang.c (evaluate_subexp_f): Likewise.
+	 * hppa-tdep.c (hppa_read_pc): Likewise.
+	 * i386-tdep.c (i386_floatformat_for_type): Likewise.
+	 * parse.c (write_exp_elt_msym): Likewise.
+	 * ppc-linux-tdep.c (ppc_floatformat_for_type): Likewise.
+	 * remote.c (remote_packet_size): Likewise.
+	 (remote_notif_stop_parse): Likewise.
+	 * rs6000-aix-tdep.c (aix_sighandle_frame_sniffer): Likewise.
+	 * s12z-tdep.c (s12z_disassemble_info): Likewise.
+	 * source.c (prepare_path_for_appending): Likewise.
+	 * sparc64-linux-tdep.c
+	 (sparc64_linux_handle_segmentation_fault); Likewise.
+	 * stack.c (frame_selection_by_function_completer): Likewise.
+
+2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+
+	* completer.c (set_gdb_completion_word_break_characters):
+	Remove.
+
+2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf-index-write.c: Include dwarf-index-write.h.
+	* mi/mi-interp.c: Include mi/mi-interp.h.
+
+2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+
+	* aarch32-tdep.c: Include aarch32-tdep.h.
+	* aarch32-tdep.h: Forward-declare struct target_desc.
+
+2019-11-26  Christian Biesinger  <cbiesinger@google.com>
+
+	* linux-nat.c (detach_one_lwp): Call safe_strerror instead of
+	strerror.
+	* nto-procfs.c (nto_procfs_target::create_inferior): Likewise.
+	* windows-nat.c (windows_nat_target::create_inferior): Likewise.
+
 2019-11-25  Tom de Vries  <tdevries@suse.de>
 
 	* contrib/words.sh: Add -c option.
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.20191126/gdb/cli/cli-decode.c ./gdb/cli/cli-decode.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/cli/cli-decode.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/cli/cli-decode.c	2019-12-03 01:49:15.000000000 +0000
@@ -1372,7 +1372,7 @@ find_command_name_length (const char *te
   if (*p == '!' || *p == '|')
     return 1;
 
-  while (isalnum (*p) || *p == '-' || *p == '_'
+  while (valid_cmd_char_p (*p)
 	 /* Characters used by TUI specific commands.  */
 	 || *p == '+' || *p == '<' || *p == '>' || *p == '$')
     p++;
@@ -1380,9 +1380,18 @@ find_command_name_length (const char *te
   return p - text;
 }
 
-/* Return TRUE if NAME is a valid user-defined command name.
-   This is a stricter subset of all gdb commands,
-   see find_command_name_length.  */
+/* See command.h.  */
+
+bool
+valid_cmd_char_p (int c)
+{
+  /* Alas "42" is a legitimate user-defined command.
+     In the interests of not breaking anything we preserve that.  */
+
+  return isalnum (c) || c == '-' || c == '_' || c == '.';
+}
+
+/* See command.h.  */
 
 bool
 valid_user_defined_cmd_name_p (const char *name)
@@ -1392,14 +1401,9 @@ valid_user_defined_cmd_name_p (const cha
   if (*name == '\0')
     return false;
 
-  /* Alas "42" is a legitimate user-defined command.
-     In the interests of not breaking anything we preserve that.  */
-
   for (p = name; *p != '\0'; ++p)
     {
-      if (isalnum (*p)
-	  || *p == '-'
-	  || *p == '_')
+      if (valid_cmd_char_p (*p))
 	; /* Ok.  */
       else
 	return false;
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.20191126/gdb/cli/cli-decode.h ./gdb/cli/cli-decode.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/cli/cli-decode.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/cli/cli-decode.h	2019-12-03 01:49:15.000000000 +0000
@@ -55,6 +55,7 @@ struct cmd_list_element
 	deprecated_warn_user (0),
 	malloced_replacement (0),
 	doc_allocated (0),
+	name_allocated (0),
 	hook_in (0),
 	allow_unknown (0),
 	abbrev_flag (0),
@@ -69,6 +70,8 @@ struct cmd_list_element
     {
       if (doc && doc_allocated)
 	xfree ((char *) doc);
+      if (name_allocated)
+	xfree ((char *) name);
     }
 
     DISABLE_COPY_AND_ASSIGN (cmd_list_element);
@@ -109,6 +112,10 @@ struct cmd_list_element
 
     unsigned int doc_allocated : 1;
 
+    /* Set if the name field should be xfree'd.  */
+
+    unsigned int name_allocated : 1;
+
     /* Flag that specifies if this command is already running its hook.  */
     /* Prevents the possibility of hook recursion.  */
     unsigned int hook_in : 1;
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.20191126/gdb/cli/cli-script.c ./gdb/cli/cli-script.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/cli/cli-script.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/cli/cli-script.c	2019-12-03 01:49:15.000000000 +0000
@@ -29,6 +29,7 @@
 #include "cli/cli-cmds.h"
 #include "cli/cli-decode.h"
 #include "cli/cli-script.h"
+#include "cli/cli-style.h"
 
 #include "extension.h"
 #include "interps.h"
@@ -1341,7 +1342,7 @@ validate_comname (const char **comname)
   p = *comname;
   while (*p)
     {
-      if (!isalnum (*p) && *p != '-' && *p != '_')
+      if (!valid_cmd_char_p (*p))
 	error (_("Junk in argument list: \"%s\""), p);
       p++;
     }
@@ -1395,7 +1396,17 @@ do_define_command (const char *comname, 
       int q;
 
       if (c->theclass == class_user || c->theclass == class_alias)
-	q = query (_("Redefine command \"%s\"? "), c->name);
+	{
+	  /* if C is a prefix command that was previously defined,
+	     tell the user its subcommands will be kept, and ask
+	     if ok to redefine the command.  */
+	  if (c->prefixlist != nullptr)
+	    q = (c->user_commands.get () == nullptr
+		 || query (_("Keeping subcommands of prefix command \"%s\".\n"
+			     "Redefine command \"%s\"? "), c->name, c->name));
+	  else
+	    q = query (_("Redefine command \"%s\"? "), c->name);
+	}
       else
 	q = query (_("Really redefine built-in command \"%s\"? "), c->name);
       if (!q)
@@ -1416,7 +1427,7 @@ do_define_command (const char *comname, 
       hook_type      = CMD_POST_HOOK;
       hook_name_size = HOOK_POST_LEN;
     }
-   
+
   if (hook_type != CMD_NO_HOOK)
     {
       /* Look up cmd it hooks, and verify that we got an exact match.  */
@@ -1446,10 +1457,27 @@ do_define_command (const char *comname, 
   else
     cmds = *commands;
 
-  newc = add_cmd (comname, class_user, user_defined_command,
-		  (c && c->theclass == class_user)
-		  ? c->doc : xstrdup ("User-defined."), list);
-  newc->user_commands = std::move (cmds);
+  {
+    struct cmd_list_element **c_prefixlist
+      = c == nullptr ? nullptr : c->prefixlist;
+    const char *c_prefixname = c == nullptr ? nullptr : c->prefixname;
+
+    newc = add_cmd (comname, class_user, user_defined_command,
+		    (c != nullptr && c->theclass == class_user)
+		    ? c->doc : xstrdup ("User-defined."), list);
+    newc->user_commands = std::move (cmds);
+
+    /* If we define or re-define a command that was previously defined
+       as a prefix, keep the prefix information.  */
+    if (c_prefixlist != nullptr)
+      {
+	newc->prefixlist = c_prefixlist;
+	newc->prefixname = c_prefixname;
+	/* allow_unknown: see explanation in equivalent logic in
+	   define_prefix_command ().  */
+	newc->allow_unknown = newc->user_commands.get () != nullptr;
+    }
+  }
 
   /* If this new command is a hook, then mark both commands as being
      tied.  */
@@ -1524,6 +1552,54 @@ document_command (const char *comname, i
     c->doc = doc;
   }
 }
+
+/* Implementation of the "define-prefix" command.  */
+
+static void
+define_prefix_command (const char *comname, int from_tty)
+{
+  struct cmd_list_element *c, **list;
+  const char *tem;
+  const char *comfull;
+
+  comfull = comname;
+  list = validate_comname (&comname);
+
+  /* Look it up, and verify that we got an exact match.  */
+  tem = comname;
+  c = lookup_cmd (&tem, *list, "", -1, 1);
+  if (c != nullptr && strcmp (comname, c->name) != 0)
+    c = nullptr;
+
+  if (c != nullptr && c->theclass != class_user)
+    error (_("Command \"%s\" is built-in."), comfull);
+
+  if (c != nullptr && c->prefixlist != nullptr)
+    {
+      /* c is already a user defined prefix command.  */
+      return;
+    }
+
+  /* If the command does not exist at all, create it.  */
+  if (c == nullptr)
+    {
+      comname = xstrdup (comname);
+      c = add_cmd (comname, class_user, user_defined_command,
+		   xstrdup ("User-defined."), list);
+    }
+
+  /* Allocate the c->prefixlist, which marks the command as a prefix
+     command.  */
+  c->prefixlist = new struct cmd_list_element*;
+  *(c->prefixlist) = nullptr;
+  c->prefixname = xstrprintf ("%s ", comfull);
+  /* If the prefix command C is not a command, then it must be followed
+     by known subcommands.  Otherwise, if C is also a normal command,
+     it can be followed by C args that must not cause a 'subcommand'
+     not recognised error, and thus we must allow unknown.  */
+  c->allow_unknown = c->user_commands.get () != nullptr;
+}
+
 
 /* Used to implement source_command.  */
 
@@ -1564,7 +1640,21 @@ void
 show_user_1 (struct cmd_list_element *c, const char *prefix, const char *name,
 	     struct ui_file *stream)
 {
-  struct command_line *cmdlines;
+  if (cli_user_command_p (c))
+    {
+      struct command_line *cmdlines = c->user_commands.get ();
+
+      fprintf_filtered (stream, "User %scommand \"",
+			c->prefixlist == NULL ? "" : "prefix ");
+      fprintf_styled (stream, title_style.style (), "%s%s",
+		      prefix, name);
+      fprintf_filtered (stream, "\":\n");
+      if (cmdlines)
+	{
+	  print_command_lines (current_uiout, cmdlines, 1);
+	  fputs_filtered ("\n", stream);
+	}
+    }
 
   if (c->prefixlist != NULL)
     {
@@ -1573,25 +1663,23 @@ show_user_1 (struct cmd_list_element *c,
       for (c = *c->prefixlist; c != NULL; c = c->next)
 	if (c->theclass == class_user || c->prefixlist != NULL)
 	  show_user_1 (c, prefixname, c->name, gdb_stdout);
-      return;
     }
 
-  cmdlines = c->user_commands.get ();
-  fprintf_filtered (stream, "User command \"%s%s\":\n", prefix, name);
-
-  if (!cmdlines)
-    return;
-  print_command_lines (current_uiout, cmdlines, 1);
-  fputs_filtered ("\n", stream);
 }
 
 void
 _initialize_cli_script (void)
 {
-  add_com ("document", class_support, document_command, _("\
+  struct cmd_list_element *c;
+
+  /* "document", "define" and "define-prefix" use command_completer,
+     as this helps the user to either type the command name and/or
+     its prefixes.  */
+  c = add_com ("document", class_support, document_command, _("\
 Document a user-defined command.\n\
 Give command name as argument.  Give documentation on following lines.\n\
 End with a line of just \"end\"."));
+  set_cmd_completer (c, command_completer);
   define_cmd_element = add_com ("define", class_support, define_command, _("\
 Define a new command name.  Command name is argument.\n\
 Definition appears on following lines, one command per line.\n\
@@ -1600,6 +1688,14 @@ Use the \"document\" command to give doc
 Commands defined in this way may accept an unlimited number of arguments\n\
 accessed via $arg0 .. $argN.  $argc tells how many arguments have\n\
 been passed."));
+  set_cmd_completer (define_cmd_element, command_completer);
+  c = add_com ("define-prefix", class_support, define_prefix_command,
+	   _("\
+Define or mark a command as a user-defined prefix command.\n\
+User defined prefix commands can be used as prefix commands for\n\
+other user defined commands.\n\
+If the command already exists, it is changed to a prefix command."));
+  set_cmd_completer (c, command_completer);
 
   while_cmd_element = add_com ("while", class_support, while_command, _("\
 Execute nested commands WHILE the conditional expression is non zero.\n\
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.20191126/gdb/cli/cli-style.c ./gdb/cli/cli-style.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/cli/cli-style.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/cli/cli-style.c	2019-12-03 01:49:15.000000000 +0000
@@ -85,13 +85,23 @@ cli_style_option title_style ("title", u
 
 /* See cli-style.h.  */
 
+cli_style_option tui_border_style ("tui-border", ui_file_style::CYAN);
+
+/* See cli-style.h.  */
+
+cli_style_option tui_active_border_style ("tui-active-border",
+					  ui_file_style::CYAN);
+
+/* See cli-style.h.  */
+
 cli_style_option metadata_style ("metadata", ui_file_style::DIM);
 
 /* See cli-style.h.  */
 
 cli_style_option::cli_style_option (const char *name,
 				    ui_file_style::basic_color fg)
-  : m_name (name),
+  : changed (name),
+    m_name (name),
     m_foreground (cli_colors[fg - ui_file_style::NONE]),
     m_background (cli_colors[0]),
     m_intensity (cli_intensities[ui_file_style::NORMAL])
@@ -102,7 +112,8 @@ cli_style_option::cli_style_option (cons
 
 cli_style_option::cli_style_option (const char *name,
 				    ui_file_style::intensity i)
-  : m_name (name),
+  : changed (name),
+    m_name (name),
     m_foreground (cli_colors[0]),
     m_background (cli_colors[0]),
     m_intensity (cli_intensities[i])
@@ -143,6 +154,16 @@ cli_style_option::style () const
   return ui_file_style (fg, bg, intensity);
 }
 
+/* See cli-style.h.  */
+
+void
+cli_style_option::do_set_value (const char *ignore, int from_tty,
+				struct cmd_list_element *cmd)
+{
+  cli_style_option *cso = (cli_style_option *) get_cmd_context (cmd);
+  cso->changed.notify ();
+}
+
 /* Implements the cli_style_option::do_show_* functions.
    WHAT and VALUE are the property and value to show.
    The style for which WHAT is shown is retrieved from CMD context.  */
@@ -198,7 +219,8 @@ cli_style_option::add_setshow_commands (
 							int from_tty),
 					struct cmd_list_element **show_list,
 					void (*do_show) (const char *args,
-							 int from_tty))
+							 int from_tty),
+					bool skip_intensity)
 {
   m_set_prefix = std::string ("set style ") + m_name + " ";
   m_show_prefix = std::string ("show style ") + m_name + " ";
@@ -213,7 +235,7 @@ cli_style_option::add_setshow_commands (
 			_("Set the foreground color for this property."),
 			_("Show the foreground color for this property."),
 			nullptr,
-			nullptr,
+			do_set_value,
 			do_show_foreground,
 			&m_set_list, &m_show_list, (void *) this);
   add_setshow_enum_cmd ("background", theclass, cli_colors,
@@ -221,17 +243,18 @@ cli_style_option::add_setshow_commands (
 			_("Set the background color for this property."),
 			_("Show the background color for this property."),
 			nullptr,
-			nullptr,
+			do_set_value,
 			do_show_background,
 			&m_set_list, &m_show_list, (void *) this);
-  add_setshow_enum_cmd ("intensity", theclass, cli_intensities,
-			&m_intensity,
-			_("Set the display intensity for this property."),
-			_("Show the display intensity for this property."),
-			nullptr,
-			nullptr,
-			do_show_intensity,
-			&m_set_list, &m_show_list, (void *) this);
+  if (!skip_intensity)
+    add_setshow_enum_cmd ("intensity", theclass, cli_intensities,
+			  &m_intensity,
+			  _("Set the display intensity for this property."),
+			  _("Show the display intensity for this property."),
+			  nullptr,
+			  do_set_value,
+			  do_show_intensity,
+			  &m_set_list, &m_show_list, (void *) this);
 }
 
 static cmd_list_element *style_set_list;
@@ -323,7 +346,7 @@ it was not linked against GNU Source Hig
 			   ), set_style_enabled, show_style_sources,
 			   &style_set_list, &style_show_list);
 
-#define STYLE_ADD_SETSHOW_COMMANDS(STYLE, PREFIX_DOC)	  \
+#define STYLE_ADD_SETSHOW_COMMANDS(STYLE, PREFIX_DOC, SKIP)		\
   STYLE.add_setshow_commands (no_class, PREFIX_DOC,		\
 			      &style_set_list,				\
 			      [] (const char *args, int from_tty)	\
@@ -341,46 +364,60 @@ it was not linked against GNU Source Hig
 				  (STYLE.show_list (),			\
 				   from_tty,				\
 				   "");					\
-			      })
+			      }, SKIP)
 
   STYLE_ADD_SETSHOW_COMMANDS (file_name_style,
 			      _("\
 Filename display styling.\n\
-Configure filename colors and display intensity."));
+Configure filename colors and display intensity."), false);
 
   STYLE_ADD_SETSHOW_COMMANDS (function_name_style,
 			      _("\
 Function name display styling.\n\
-Configure function name colors and display intensity"));
+Configure function name colors and display intensity"), false);
 
   STYLE_ADD_SETSHOW_COMMANDS (variable_name_style,
 			      _("\
 Variable name display styling.\n\
-Configure variable name colors and display intensity"));
+Configure variable name colors and display intensity"), false);
 
   STYLE_ADD_SETSHOW_COMMANDS (address_style,
 			      _("\
 Address display styling.\n\
-Configure address colors and display intensity"));
+Configure address colors and display intensity"), false);
 
   STYLE_ADD_SETSHOW_COMMANDS (title_style,
 			      _("\
 Title display styling.\n\
 Configure title colors and display intensity\n\
 Some commands (such as \"apropos -v REGEXP\") use the title style to improve\n\
-readability."));
+readability."), false);
 
   STYLE_ADD_SETSHOW_COMMANDS (highlight_style,
 			      _("\
 Highlight display styling.\n\
 Configure highlight colors and display intensity\n\
 Some commands use the highlight style to draw the attention to a part\n\
-of their output."));
+of their output."), false);
 
   STYLE_ADD_SETSHOW_COMMANDS (metadata_style,
 			      _("\
 Metadata display styling.\n\
 Configure metadata colors and display intensity\n\
 The \"metadata\" style is used when GDB displays information about\n\
-your data, for example \"<unavailable>\""));
+your data, for example \"<unavailable>\""), false);
+
+  STYLE_ADD_SETSHOW_COMMANDS (tui_border_style,
+			      _("\
+TUI border display styling.\n\
+Configure TUI border colors\n\
+The \"tui-border\" style is used when GDB displays the border of a\n\
+TUI window that does not have the focus."), true);
+
+  STYLE_ADD_SETSHOW_COMMANDS (tui_active_border_style,
+			      _("\
+TUI active border display styling.\n\
+Configure TUI active border colors\n\
+The \"tui-active-border\" style is used when GDB displays the border of a\n\
+TUI window that does have the focus."), true);
 }
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.20191126/gdb/cli/cli-style.h ./gdb/cli/cli-style.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/cli/cli-style.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/cli/cli-style.h	2019-12-03 01:49:15.000000000 +0000
@@ -22,6 +22,7 @@
 
 #include "ui-file.h"
 #include "command.h"
+#include "gdbsupport/observable.h"
 
 /* A single CLI style option.  */
 class cli_style_option
@@ -47,7 +48,8 @@ public:
 			     struct cmd_list_element **set_list,
 			     void (*do_set) (const char *args, int from_tty),
 			     struct cmd_list_element **show_list,
-			     void (*do_show) (const char *args, int from_tty));
+			     void (*do_show) (const char *args, int from_tty),
+			     bool skip_intensity);
 
   /* Return the 'set style NAME' command list, that can be used
      to build a lambda DO_SET to call add_setshow_commands.  */
@@ -56,6 +58,9 @@ public:
   /* Same as SET_LIST but for the show command list.  */
   struct cmd_list_element *show_list () { return m_show_list; };
 
+  /* This style can be observed for any changes.  */
+  gdb::observers::observable<> changed;
+
 private:
 
   /* The style name.  */
@@ -76,6 +81,10 @@ private:
   struct cmd_list_element *m_set_list = nullptr;
   struct cmd_list_element *m_show_list = nullptr;
 
+  /* Callback to notify the observable.  */
+  static void do_set_value (const char *ignore, int from_tty,
+			    struct cmd_list_element *cmd);
+
   /* Callback to show the foreground.  */
   static void do_show_foreground (struct ui_file *file, int from_tty,
 				  struct cmd_list_element *cmd,
@@ -111,6 +120,12 @@ extern cli_style_option title_style;
 /* The metadata style.  */
 extern cli_style_option metadata_style;
 
+/* The border style of a TUI window that does not have the focus.  */
+extern cli_style_option tui_border_style;
+
+/* The border style of a TUI window that does have the focus.  */
+extern cli_style_option tui_active_border_style;
+
 /* True if source styling is enabled.  */
 extern bool source_styling;
 
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.20191126/gdb/coffread.c ./gdb/coffread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/coffread.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/coffread.c	2019-12-03 01:49:15.000000000 +0000
@@ -2106,7 +2106,7 @@ coff_read_enum_type (int index, int leng
 	  sym = allocate_symbol (objfile);
 
 	  name = obstack_strdup (&objfile->objfile_obstack, name);
-	  SYMBOL_SET_LINKAGE_NAME (sym, name);
+	  sym->set_linkage_name (name);
 	  SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
 	  SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
 	  SYMBOL_VALUE (sym) = ms->c_value;
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.20191126/gdb/command.h ./gdb/command.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/command.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/command.h	2019-12-03 01:49:15.000000000 +0000
@@ -133,8 +133,16 @@ extern struct cli_suppress_notification 
 
 /* API to the manipulation of command lists.  */
 
+/* Return TRUE if NAME is a valid user-defined command name.
+   This is a stricter subset of all gdb commands,
+   see find_command_name_length.  */
+
 extern bool valid_user_defined_cmd_name_p (const char *name);
 
+/* Return TRUE if C is a valid command character.  */
+
+extern bool valid_cmd_char_p (int c);
+
 /* Const-correct variant of the above.  */
 
 extern struct cmd_list_element *add_cmd (const char *, enum command_class,
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.20191126/gdb/completer.c ./gdb/completer.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/completer.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/completer.c	2019-12-03 01:49:15.000000000 +0000
@@ -102,13 +102,13 @@ enum explicit_location_match_type
 
 /* Variables which are necessary for fancy command line editing.  */
 
-/* When completing on command names, we remove '-' from the list of
+/* When completing on command names, we remove '-' and '.' from the list of
    word break characters, since we use it in command names.  If the
    readline library sees one in any of the current completion strings,
    it thinks that the string needs to be quoted and automatically
    supplies a leading quote.  */
 static const char gdb_completer_command_word_break_characters[] =
-" \t\n!@#$%^&*()+=|~`}{[]\"';:?/>.<,";
+" \t\n!@#$%^&*()+=|~`}{[]\"';:?/><,";
 
 /* When completing on file names, we remove from the list of word
    break characters any characters that are commonly used in file
@@ -1141,23 +1141,6 @@ set_rl_completer_word_break_characters (
   rl_completer_word_break_characters = (char *) break_chars;
 }
 
-/* See definition in completer.h.  */
-
-void
-set_gdb_completion_word_break_characters (completer_ftype *fn)
-{
-  const char *break_chars;
-
-  /* So far we are only interested in differentiating filename
-     completers from everything else.  */
-  if (fn == filename_completer)
-    break_chars = gdb_completer_file_name_break_characters;
-  else
-    break_chars = gdb_completer_command_word_break_characters;
-
-  set_rl_completer_word_break_characters (break_chars);
-}
-
 /* Complete on symbols.  */
 
 void
@@ -1301,7 +1284,7 @@ complete_line_internal_1 (completion_tra
      on command strings (as opposed to strings supplied by the
      individual command completer functions, which can be any string)
      then we will switch to the special word break set for command
-     strings, which leaves out the '-' character used in some
+     strings, which leaves out the '-' and '.' character used in some
      commands.  */
   set_rl_completer_word_break_characters
     (current_language->la_word_break_characters());
@@ -1364,7 +1347,7 @@ complete_line_internal_1 (completion_tra
       /* lookup_cmd_1 advances p up to the first ambiguous thing, but
 	 doesn't advance over that thing itself.  Do so now.  */
       q = p;
-      while (*q && (isalnum (*q) || *q == '-' || *q == '_'))
+      while (valid_cmd_char_p (*q))
 	++q;
       if (q != tmp_command + point)
 	{
@@ -1452,7 +1435,7 @@ complete_line_internal_1 (completion_tra
 	      q = p;
 	      while (q > tmp_command)
 		{
-		  if (isalnum (q[-1]) || q[-1] == '-' || q[-1] == '_')
+		  if (valid_cmd_char_p (q[-1]))
 		    --q;
 		  else
 		    break;
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.20191126/gdb/config.in ./gdb/config.in
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/config.in	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/config.in	2019-12-03 01:49:15.000000000 +0000
@@ -17,6 +17,9 @@
    */
 #undef CRAY_STACKSEG_END
 
+/* Define to 1 if std::thread works. */
+#undef CXX_STD_THREAD
+
 /* Define to 1 if using `alloca.c'. */
 #undef C_ALLOCA
 
@@ -336,6 +339,15 @@
 /* Define if <sys/procfs.h> has psaddr_t. */
 #undef HAVE_PSADDR_T
 
+/* Have PTHREAD_PRIO_INHERIT. */
+#undef HAVE_PTHREAD_PRIO_INHERIT
+
+/* Define to 1 if you have the `pthread_setname_np' function. */
+#undef HAVE_PTHREAD_SETNAME_NP
+
+/* Define to 1 if you have the `pthread_sigmask' function. */
+#undef HAVE_PTHREAD_SIGMASK
+
 /* Define to 1 if you have the `ptrace64' function. */
 #undef HAVE_PTRACE64
 
@@ -622,6 +634,10 @@
 /* Define to 1 if the "%ll" format works to print long longs. */
 #undef PRINTF_HAS_LONG_LONG
 
+/* Define to necessary symbol if this constant uses a non-standard name on
+   your system. */
+#undef PTHREAD_CREATE_JOINABLE
+
 /* Define to the type of arg 1 for ptrace. */
 #undef PTRACE_TYPE_ARG1
 
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.20191126/gdb/configure ./gdb/configure
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/configure	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/configure	2019-12-03 01:49:15.000000000 +0000
@@ -702,6 +702,11 @@ SYSTEM_GDBINIT
 TARGET_SYSTEM_ROOT
 CONFIG_LDFLAGS
 RDYNAMIC
+PTHREAD_CFLAGS
+PTHREAD_LIBS
+PTHREAD_CC
+ax_pthread_config
+SED
 ALLOCA
 LTLIBIPT
 LIBIPT
@@ -2515,6 +2520,73 @@ fi
   as_fn_set_status $ac_retval
 
 } # ac_fn_cxx_try_link
+
+# ac_fn_cxx_check_func LINENO FUNC VAR
+# ------------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_cxx_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_func
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
@@ -13126,6 +13198,75 @@ _ACEOF
 
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
@@ -13511,6 +13652,715 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
+  # Check for std::thread.  This does not work on some platforms, like
+  # mingw and DJGPP.
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ax_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on Tru64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
+        ax_pthread_save_CC="$CC"
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        if test "x$PTHREAD_CC" != "x"; then :
+  CC="$PTHREAD_CC"
+fi
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5
+$as_echo_n "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; }
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_join ();
+int
+main ()
+{
+return pthread_join ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_pthread_ok=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+$as_echo "$ax_pthread_ok" >&6; }
+        if test "x$ax_pthread_ok" = "xno"; then
+                PTHREAD_LIBS=""
+                PTHREAD_CFLAGS=""
+        fi
+        CC="$ax_pthread_save_CC"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
+fi
+
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
+
+# Create a list of thread flags to try.  Items starting with a "-" are
+# C compiler flags, and other items are library names, except for "none"
+# which indicates that we try without any flags at all, and "pthread-config"
+# which is a program returning the flags for the Pth emulation library.
+
+ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important.  Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+#       other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
+#           (Note: HP C rejects this with "bad form for `-t' option")
+# -pthreads: Solaris/gcc (Note: HP C also rejects)
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+#      doesn't hurt to check since this sometimes defines pthreads and
+#      -D_REENTRANT too), HP C (must be checked before -lpthread, which
+#      is present but should not be used directly; and before -mthreads,
+#      because the compiler interprets this as "-mt" + "-hreads")
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case $host_os in
+
+        freebsd*)
+
+        # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+        # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+
+        ax_pthread_flags="-kthread lthread $ax_pthread_flags"
+        ;;
+
+        hpux*)
+
+        # From the cc(1) man page: "[-mt] Sets various -D flags to enable
+        # multi-threading and also sets -lpthread."
+
+        ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
+        ;;
+
+        openedition*)
+
+        # IBM z/OS requires a feature-test macro to be defined in order to
+        # enable POSIX threads at all, so give the user a hint if this is
+        # not set. (We don't define these ourselves, as they can affect
+        # other portions of the system API in unpredictable ways.)
+
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#            if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
+             AX_PTHREAD_ZOS_MISSING
+#            endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5
+$as_echo "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;}
+fi
+rm -f conftest*
+
+        ;;
+
+        solaris*)
+
+        # On Solaris (at least, for some versions), libc contains stubbed
+        # (non-functional) versions of the pthreads routines, so link-based
+        # tests will erroneously succeed. (N.B.: The stubs are missing
+        # pthread_cleanup_push, or rather a function called by this macro,
+        # so we could check for that, but who knows whether they'll stub
+        # that too in a future libc.)  So we'll check first for the
+        # standard Solaris way of linking pthreads (-mt -lpthread).
+
+        ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
+        ;;
+esac
+
+# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
+
+if test "x$GCC" = "xyes"; then :
+  ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"
+fi
+
+# The presence of a feature test macro requesting re-entrant function
+# definitions is, on some systems, a strong hint that pthreads support is
+# correctly enabled
+
+case $host_os in
+        darwin* | hpux* | linux* | osf* | solaris*)
+        ax_pthread_check_macro="_REENTRANT"
+        ;;
+
+        aix*)
+        ax_pthread_check_macro="_THREAD_SAFE"
+        ;;
+
+        *)
+        ax_pthread_check_macro="--"
+        ;;
+esac
+if test "x$ax_pthread_check_macro" = "x--"; then :
+  ax_pthread_check_cond=0
+else
+  ax_pthread_check_cond="!defined($ax_pthread_check_macro)"
+fi
+
+# Are we compiling with Clang?
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5
+$as_echo_n "checking whether $CC is Clang... " >&6; }
+if ${ax_cv_PTHREAD_CLANG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_PTHREAD_CLANG=no
+     # Note that Autoconf sets GCC=yes for Clang as well as GCC
+     if test "x$GCC" = "xyes"; then
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
+#            if defined(__clang__) && defined(__llvm__)
+             AX_PTHREAD_CC_IS_CLANG
+#            endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1; then :
+  ax_cv_PTHREAD_CLANG=yes
+fi
+rm -f conftest*
+
+     fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5
+$as_echo "$ax_cv_PTHREAD_CLANG" >&6; }
+ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
+
+ax_pthread_clang_warning=no
+
+# Clang needs special handling, because older versions handle the -pthread
+# option in a rather... idiosyncratic way
+
+if test "x$ax_pthread_clang" = "xyes"; then
+
+        # Clang takes -pthread; it has never supported any other flag
+
+        # (Note 1: This will need to be revisited if a system that Clang
+        # supports has POSIX threads in a separate library.  This tends not
+        # to be the way of modern systems, but it's conceivable.)
+
+        # (Note 2: On some systems, notably Darwin, -pthread is not needed
+        # to get POSIX threads support; the API is always present and
+        # active.  We could reasonably leave PTHREAD_CFLAGS empty.  But
+        # -pthread does define _REENTRANT, and while the Darwin headers
+        # ignore this macro, third-party headers might not.)
+
+        PTHREAD_CFLAGS="-pthread"
+        PTHREAD_LIBS=
+
+        ax_pthread_ok=yes
+
+        # However, older versions of Clang make a point of warning the user
+        # that, in an invocation where only linking and no compilation is
+        # taking place, the -pthread option has no effect ("argument unused
+        # during compilation").  They expect -pthread to be passed in only
+        # when source code is being compiled.
+        #
+        # Problem is, this is at odds with the way Automake and most other
+        # C build frameworks function, which is that the same flags used in
+        # compilation (CFLAGS) are also used in linking.  Many systems
+        # supported by AX_PTHREAD require exactly this for POSIX threads
+        # support, and in fact it is often not straightforward to specify a
+        # flag that is used only in the compilation phase and not in
+        # linking.  Such a scenario is extremely rare in practice.
+        #
+        # Even though use of the -pthread flag in linking would only print
+        # a warning, this can be a nuisance for well-run software projects
+        # that build with -Werror.  So if the active version of Clang has
+        # this misfeature, we search for an option to squash it.
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5
+$as_echo_n "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; }
+if ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
+             # Create an alternate version of $ac_link that compiles and
+             # links in two steps (.c -> .o, .o -> exe) instead of one
+             # (.c -> exe), because the warning occurs only in the second
+             # step
+             ax_pthread_save_ac_link="$ac_link"
+             ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
+             ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
+             ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
+             ax_pthread_save_CFLAGS="$CFLAGS"
+             for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
+                if test "x$ax_pthread_try" = "xunknown"; then :
+  break
+fi
+                CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
+                ac_link="$ax_pthread_save_ac_link"
+                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main(void){return 0;}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_link="$ax_pthread_2step_ac_link"
+                     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main(void){return 0;}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+             done
+             ac_link="$ax_pthread_save_ac_link"
+             CFLAGS="$ax_pthread_save_CFLAGS"
+             if test "x$ax_pthread_try" = "x"; then :
+  ax_pthread_try=no
+fi
+             ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5
+$as_echo "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; }
+
+        case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
+                no | unknown) ;;
+                *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
+        esac
+
+fi # $ax_pthread_clang = yes
+
+if test "x$ax_pthread_ok" = "xno"; then
+for ax_pthread_try_flag in $ax_pthread_flags; do
+
+        case $ax_pthread_try_flag in
+                none)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5
+$as_echo_n "checking whether pthreads work without any flags... " >&6; }
+                ;;
+
+                -mt,pthread)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with -mt -lpthread" >&5
+$as_echo_n "checking whether pthreads work with -mt -lpthread... " >&6; }
+                PTHREAD_CFLAGS="-mt"
+                PTHREAD_LIBS="-lpthread"
+                ;;
+
+                -*)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5
+$as_echo_n "checking whether pthreads work with $ax_pthread_try_flag... " >&6; }
+                PTHREAD_CFLAGS="$ax_pthread_try_flag"
+                ;;
+
+                pthread-config)
+                # Extract the first word of "pthread-config", so it can be a program name with args.
+set dummy pthread-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ax_pthread_config+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ax_pthread_config"; then
+  ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ax_pthread_config="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no"
+fi
+fi
+ax_pthread_config=$ac_cv_prog_ax_pthread_config
+if test -n "$ax_pthread_config"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5
+$as_echo "$ax_pthread_config" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+                if test "x$ax_pthread_config" = "xno"; then :
+  continue
+fi
+                PTHREAD_CFLAGS="`pthread-config --cflags`"
+                PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+                ;;
+
+                *)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5
+$as_echo_n "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; }
+                PTHREAD_LIBS="-l$ax_pthread_try_flag"
+                ;;
+        esac
+
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+
+        # Check for various functions.  We must include pthread.h,
+        # since some functions may be macros.  (On the Sequent, we
+        # need a special flag -Kthread to make this header compile.)
+        # We check for pthread_join because it is in -lpthread on IRIX
+        # while pthread_create is in libc.  We check for pthread_attr_init
+        # due to DEC craziness with -lpthreads.  We check for
+        # pthread_cleanup_push because it is one of the few pthread
+        # functions on Solaris that doesn't have a non-functional libc stub.
+        # We try pthread_create on general principles.
+
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+#                       if $ax_pthread_check_cond
+#                        error "$ax_pthread_check_macro must be defined"
+#                       endif
+                        static void routine(void *a) { a = 0; }
+                        static void *start_routine(void *a) { return a; }
+int
+main ()
+{
+pthread_t th; pthread_attr_t attr;
+                        pthread_create(&th, 0, start_routine, 0);
+                        pthread_join(th, 0);
+                        pthread_attr_init(&attr);
+                        pthread_cleanup_push(routine, 0);
+                        pthread_cleanup_pop(0) /* ; */
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_pthread_ok=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+$as_echo "$ax_pthread_ok" >&6; }
+        if test "x$ax_pthread_ok" = "xyes"; then :
+  break
+fi
+
+        PTHREAD_LIBS=""
+        PTHREAD_CFLAGS=""
+done
+fi
+
+# Various other checks:
+if test "x$ax_pthread_ok" = "xyes"; then
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+
+        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5
+$as_echo_n "checking for joinable pthread attribute... " >&6; }
+if ${ax_cv_PTHREAD_JOINABLE_ATTR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_PTHREAD_JOINABLE_ATTR=unknown
+             for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+                 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+int
+main ()
+{
+int attr = $ax_pthread_attr; return attr /* ; */
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+             done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5
+$as_echo "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; }
+        if test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
+               test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
+               test "x$ax_pthread_joinable_attr_defined" != "xyes"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR
+_ACEOF
+
+               ax_pthread_joinable_attr_defined=yes
+
+fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5
+$as_echo_n "checking whether more special flags are required for pthreads... " >&6; }
+if ${ax_cv_PTHREAD_SPECIAL_FLAGS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_PTHREAD_SPECIAL_FLAGS=no
+             case $host_os in
+             solaris*)
+             ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
+             ;;
+             esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5
+$as_echo "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; }
+        if test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
+               test "x$ax_pthread_special_flags_added" != "xyes"; then :
+  PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
+               ax_pthread_special_flags_added=yes
+fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5
+$as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; }
+if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+int
+main ()
+{
+int i = PTHREAD_PRIO_INHERIT;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_cv_PTHREAD_PRIO_INHERIT=yes
+else
+  ax_cv_PTHREAD_PRIO_INHERIT=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5
+$as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; }
+        if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
+               test "x$ax_pthread_prio_inherit_defined" != "xyes"; then :
+
+$as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h
+
+               ax_pthread_prio_inherit_defined=yes
+
+fi
+
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
+
+        # More AIX lossage: compile with *_r variant
+        if test "x$GCC" != "xyes"; then
+            case $host_os in
+                aix*)
+                case "x/$CC" in #(
+  x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6) :
+    #handle absolute path differently from PATH based program lookup
+                     case "x$CC" in #(
+  x/*) :
+    if as_fn_executable_p ${CC}_r; then :
+  PTHREAD_CC="${CC}_r"
+fi ;; #(
+  *) :
+    for ac_prog in ${CC}_r
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PTHREAD_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PTHREAD_CC"; then
+  ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_PTHREAD_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+PTHREAD_CC=$ac_cv_prog_PTHREAD_CC
+if test -n "$PTHREAD_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5
+$as_echo "$PTHREAD_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$PTHREAD_CC" && break
+done
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+ ;;
+esac ;; #(
+  *) :
+     ;;
+esac
+                ;;
+            esac
+        fi
+fi
+
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+
+
+
+
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test "x$ax_pthread_ok" = "xyes"; then
+        threads=yes
+        :
+else
+        ax_pthread_ok=no
+        threads=no
+fi
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  if test "$threads" = "yes"; then
+    save_LIBS="$LIBS"
+    LIBS="$PTHREAD_LIBS $LIBS"
+    save_CXXFLAGS="$CXXFLAGS"
+    CXXFLAGS="$PTHREAD_CFLAGS $save_CXXFLAGS"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for std::thread" >&5
+$as_echo_n "checking for std::thread... " >&6; }
+if ${gdb_cv_cxx_std_thread+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <thread>
+      void callback() { }
+int
+main ()
+{
+std::thread t(callback);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  gdb_cv_cxx_std_thread=yes
+else
+  gdb_cv_cxx_std_thread=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_cxx_std_thread" >&5
+$as_echo "$gdb_cv_cxx_std_thread" >&6; }
+
+    # This check must be here, while LIBS includes any necessary
+    # threading library.
+    for ac_func in pthread_sigmask pthread_setname_np
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+    LIBS="$save_LIBS"
+    CXXFLAGS="$save_CXXFLAGS"
+  fi
+  if test $gdb_cv_cxx_std_thread = yes; then
+
+$as_echo "#define CXX_STD_THREAD 1" >>confdefs.h
+
+  fi
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigsetjmp" >&5
 $as_echo_n "checking for sigsetjmp... " >&6; }
 if ${gdb_cv_func_sigsetjmp+:} false; then :
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.20191126/gdb/cp-support.c ./gdb/cp-support.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/cp-support.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/cp-support.c	2019-12-03 01:49:15.000000000 +0000
@@ -37,6 +37,10 @@
 #include "gdbsupport/gdb_setjmp.h"
 #include "safe-ctype.h"
 #include "gdbsupport/selftest.h"
+#include "gdbsupport/gdb-sigmask.h"
+#include <atomic>
+#include "event-top.h"
+#include "run-on-main-thread.h"
 
 #define d_left(dc) (dc)->u.s_binary.left
 #define d_right(dc) (dc)->u.s_binary.right
@@ -1475,11 +1479,11 @@ static bool catch_demangler_crashes = tr
 
 /* Stack context and environment for demangler crash recovery.  */
 
-static SIGJMP_BUF gdb_demangle_jmp_buf;
+static thread_local SIGJMP_BUF *gdb_demangle_jmp_buf;
 
-/* If nonzero, attempt to dump core from the signal handler.  */
+/* If true, attempt to dump core from the signal handler.  */
 
-static int gdb_demangle_attempt_core_dump = 1;
+static std::atomic<bool> gdb_demangle_attempt_core_dump;
 
 /* Signal handler for gdb_demangle.  */
 
@@ -1491,10 +1495,46 @@ gdb_demangle_signal_handler (int signo)
       if (fork () == 0)
 	dump_core ();
 
-      gdb_demangle_attempt_core_dump = 0;
+      gdb_demangle_attempt_core_dump = false;
     }
 
-  SIGLONGJMP (gdb_demangle_jmp_buf, signo);
+  SIGLONGJMP (*gdb_demangle_jmp_buf, signo);
+}
+
+/* A helper for gdb_demangle that reports a demangling failure.  */
+
+static void
+report_failed_demangle (const char *name, bool core_dump_allowed,
+			int crash_signal)
+{
+  static bool error_reported = false;
+
+  if (!error_reported)
+    {
+      std::string short_msg
+	= string_printf (_("unable to demangle '%s' "
+			   "(demangler failed with signal %d)"),
+			 name, crash_signal);
+
+      std::string long_msg
+	= string_printf ("%s:%d: %s: %s", __FILE__, __LINE__,
+			 "demangler-warning", short_msg.c_str ());
+
+      target_terminal::scoped_restore_terminal_state term_state;
+      target_terminal::ours_for_output ();
+
+      begin_line ();
+      if (core_dump_allowed)
+	fprintf_unfiltered (gdb_stderr,
+			    _("%s\nAttempting to dump core.\n"),
+			    long_msg.c_str ());
+      else
+	warn_cant_dump_core (long_msg.c_str ());
+
+      demangler_warning (__FILE__, __LINE__, "%s", short_msg.c_str ());
+
+      error_reported = true;
+    }
 }
 
 #endif
@@ -1508,45 +1548,27 @@ gdb_demangle (const char *name, int opti
   int crash_signal = 0;
 
 #ifdef HAVE_WORKING_FORK
-#if defined (HAVE_SIGACTION) && defined (SA_RESTART)
-  struct sigaction sa, old_sa;
-#else
-  sighandler_t ofunc;
-#endif
-  static int core_dump_allowed = -1;
-
-  if (core_dump_allowed == -1)
-    {
-      core_dump_allowed = can_dump_core (LIMIT_CUR);
-
-      if (!core_dump_allowed)
-	gdb_demangle_attempt_core_dump = 0;
-    }
-
+  scoped_restore restore_segv
+    = make_scoped_restore (&thread_local_segv_handler,
+			   catch_demangler_crashes
+			   ? gdb_demangle_signal_handler
+			   : nullptr);
+
+  bool core_dump_allowed = gdb_demangle_attempt_core_dump;
+  SIGJMP_BUF jmp_buf;
+  scoped_restore restore_jmp_buf
+    = make_scoped_restore (&gdb_demangle_jmp_buf, &jmp_buf);
   if (catch_demangler_crashes)
     {
-#if defined (HAVE_SIGACTION) && defined (SA_RESTART)
-      sa.sa_handler = gdb_demangle_signal_handler;
-      sigemptyset (&sa.sa_mask);
-#ifdef HAVE_SIGALTSTACK
-      sa.sa_flags = SA_ONSTACK;
-#else
-      sa.sa_flags = 0;
-#endif
-      sigaction (SIGSEGV, &sa, &old_sa);
-#else
-      ofunc = signal (SIGSEGV, gdb_demangle_signal_handler);
-#endif
-
       /* The signal handler may keep the signal blocked when we longjmp out
          of it.  If we have sigprocmask, we can use it to unblock the signal
 	 afterwards and we can avoid the performance overhead of saving the
 	 signal mask just in case the signal gets triggered.  Otherwise, just
 	 tell sigsetjmp to save the mask.  */
 #ifdef HAVE_SIGPROCMASK
-      crash_signal = SIGSETJMP (gdb_demangle_jmp_buf, 0);
+      crash_signal = SIGSETJMP (*gdb_demangle_jmp_buf, 0);
 #else
-      crash_signal = SIGSETJMP (gdb_demangle_jmp_buf, 1);
+      crash_signal = SIGSETJMP (*gdb_demangle_jmp_buf, 1);
 #endif
     }
 #endif
@@ -1557,53 +1579,28 @@ gdb_demangle (const char *name, int opti
 #ifdef HAVE_WORKING_FORK
   if (catch_demangler_crashes)
     {
-#if defined (HAVE_SIGACTION) && defined (SA_RESTART)
-      sigaction (SIGSEGV, &old_sa, NULL);
-#else
-      signal (SIGSEGV, ofunc);
-#endif
-
       if (crash_signal != 0)
-	{
-	  static int error_reported = 0;
-
+        {
 #ifdef HAVE_SIGPROCMASK
 	  /* If we got the signal, SIGSEGV may still be blocked; restore it.  */
 	  sigset_t segv_sig_set;
 	  sigemptyset (&segv_sig_set);
 	  sigaddset (&segv_sig_set, SIGSEGV);
-	  sigprocmask (SIG_UNBLOCK, &segv_sig_set, NULL);
+	  gdb_sigmask (SIG_UNBLOCK, &segv_sig_set, NULL);
 #endif
 
-	  if (!error_reported)
-	    {
-	      std::string short_msg
-		= string_printf (_("unable to demangle '%s' "
-				   "(demangler failed with signal %d)"),
-				 name, crash_signal);
-
-	      std::string long_msg
-		= string_printf ("%s:%d: %s: %s", __FILE__, __LINE__,
-				 "demangler-warning", short_msg.c_str ());
-
-	      target_terminal::scoped_restore_terminal_state term_state;
-	      target_terminal::ours_for_output ();
-
-	      begin_line ();
-	      if (core_dump_allowed)
-		fprintf_unfiltered (gdb_stderr,
-				    _("%s\nAttempting to dump core.\n"),
-				    long_msg.c_str ());
-	      else
-		warn_cant_dump_core (long_msg.c_str ());
-
-	      demangler_warning (__FILE__, __LINE__, "%s", short_msg.c_str ());
-
-	      error_reported = 1;
-	    }
+	  /* If there was a failure, we can't report it here, because
+	     we might be in a background thread.  Instead, arrange for
+	     the reporting to happen on the main thread.  */
+          std::string copy = name;
+          run_on_main_thread ([=] ()
+            {
+              report_failed_demangle (copy.c_str (), core_dump_allowed,
+                                      crash_signal);
+            });
 
-	  result = NULL;
-	}
+          result = NULL;
+        }
     }
 #endif
 
@@ -1810,7 +1807,7 @@ cp_get_symbol_name_matcher (const lookup
 
 namespace selftests {
 
-void
+static void
 test_cp_symbol_name_matches ()
 {
 #define CHECK_MATCH(SYMBOL, INPUT)					\
@@ -2009,7 +2006,7 @@ static std::string
 quote (const char *str)
 {
   if (str != NULL)
-    return std::string (1, '\"') + str + '\"';
+    return std::string (1, '"') + str + '"';
   else
     return "<null>";
 }
@@ -2202,6 +2199,8 @@ display the offending symbol."),
 			   NULL,
 			   &maintenance_set_cmdlist,
 			   &maintenance_show_cmdlist);
+
+  gdb_demangle_attempt_core_dump = can_dump_core (LIMIT_CUR);
 #endif
 
 #if GDB_SELF_TEST
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.20191126/gdb/csky-linux-tdep.c ./gdb/csky-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/csky-linux-tdep.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/csky-linux-tdep.c	2019-12-03 01:49:15.000000000 +0000
@@ -106,7 +106,7 @@ csky_collect_gregset (const struct regse
 
 /* Implement the supply_regset hook for FP registers in core files.  */
 
-void
+static void
 csky_supply_fregset (const struct regset *regset,
 		     struct regcache *regcache, int regnum,
 		     const void *regs, size_t len)
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.20191126/gdb/dictionary.c ./gdb/dictionary.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/dictionary.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/dictionary.c	2019-12-03 01:49:15.000000000 +0000
@@ -465,7 +465,7 @@ dict_add_pending (struct dictionary *dic
 /* Initialize ITERATOR to point at the first symbol in DICT, and
    return that first symbol, or NULL if DICT is empty.  */
 
-struct symbol *
+static struct symbol *
 dict_iterator_first (const struct dictionary *dict,
 		     struct dict_iterator *iterator)
 {
@@ -475,14 +475,14 @@ dict_iterator_first (const struct dictio
 /* Advance ITERATOR, and return the next symbol, or NULL if there are
    no more symbols.  */
 
-struct symbol *
+static struct symbol *
 dict_iterator_next (struct dict_iterator *iterator)
 {
   return (DICT_VECTOR (DICT_ITERATOR_DICT (iterator)))
     ->iterator_next (iterator);
 }
 
-struct symbol *
+static struct symbol *
 dict_iter_match_first (const struct dictionary *dict,
 		       const lookup_name_info &name,
 		       struct dict_iterator *iterator)
@@ -490,7 +490,7 @@ dict_iter_match_first (const struct dict
   return (DICT_VECTOR (dict))->iter_match_first (dict, name, iterator);
 }
 
-struct symbol *
+static struct symbol *
 dict_iter_match_next (const lookup_name_info &name,
 		      struct dict_iterator *iterator)
 {
@@ -508,16 +508,6 @@ dict_size (const struct dictionary *dict
    implemented generically by means of the vtable.  Typically, they're
    rarely used.  */
 
-/* Test to see if DICT is empty.  */
-
-static int
-dict_empty (struct dictionary *dict)
-{
-  struct dict_iterator iter;
-
-  return (dict_iterator_first (dict, &iter) == NULL);
-}
-
 
 /* The functions implementing the dictionary interface.  */
 
@@ -1283,17 +1273,3 @@ mdict_size (const struct multidictionary
 
   return size;
 }
-
-/* See dictionary.h.  */
-
-bool
-mdict_empty (const struct multidictionary *mdict)
-{
-  for (unsigned short idx = 0; idx < mdict->n_allocated_dictionaries; ++idx)
-    {
-      if (!dict_empty (mdict->dictionaries[idx]))
-	return false;
-    }
-
-  return true;
-}
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.20191126/gdb/dictionary.h ./gdb/dictionary.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/dictionary.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/dictionary.h	2019-12-03 01:49:15.000000000 +0000
@@ -93,10 +93,6 @@ extern void mdict_add_symbol (struct mul
 extern void mdict_add_pending (struct multidictionary *mdict,
 			       const struct pending *symbol_list);
 
-/* Is the multidictionary empty?  */
-
-extern int mdict_empty (struct multidictionary *mdict);
-
 /* A type containing data that is used when iterating over all symbols
    in a dictionary.  Don't ever look at its innards; this type would
    be opaque if we didn't need to be able to allocate it on the
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.20191126/gdb/doc/ChangeLog ./gdb/doc/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/doc/ChangeLog	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/doc/ChangeLog	2019-12-03 01:49:15.000000000 +0000
@@ -1,3 +1,33 @@
+2019-12-01  Tom Tromey  <tom@tromey.com>
+
+	* gdb.texinfo (TUI Configuration): Mention TUI border styles.
+	(Output Styling): Document new settings.
+
+2019-12-01  Tom Tromey  <tom@tromey.com>
+
+	* gdb.texinfo (TUI Configuration): Document new setting.
+
+2019-11-30  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.texinfo (Define): Indicate that user-defined prefix can
+	be used in 'define' command.  Document 'define-prefix' command.
+
+2019-11-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* doc/gdb.texinfo (GDB/MI Symbol Query): Document new MI command
+	-symbol-info-modules.
+
+2019-11-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* doc/gdb.texinfo (GDB/MI Symbol Query): Document new MI command
+	-symbol-info-functions, -symbol-info-types, and
+	-symbol-info-variables.
+
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* gdb.texinfo (Maintenance Commands): Document new maint
+	commands.
+
 2019-11-25  Luis Machado  <luis.machado@linaro.org>
 
 	* gdb.texinfo (Debugging Output): Document set debug
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.20191126/gdb/doc/gcore.1 ./gdb/doc/gcore.1
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/doc/gcore.1	2019-11-26 01:53:29.000000000 +0000
+++ ./gdb/doc/gcore.1	2019-12-03 01:53:52.000000000 +0000
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GCORE 1"
-.TH GCORE 1 "2019-11-26" "gdb-9.0.50.20191126-git" "GNU Development Tools"
+.TH GCORE 1 "2019-12-03" "gdb-9.0.50.20191203-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.20191126/gdb/doc/gdb.1 ./gdb/doc/gdb.1
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/doc/gdb.1	2019-11-26 01:53:29.000000000 +0000
+++ ./gdb/doc/gdb.1	2019-12-03 01:53:51.000000000 +0000
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GDB 1"
-.TH GDB 1 "2019-11-26" "gdb-9.0.50.20191126-git" "GNU Development Tools"
+.TH GDB 1 "2019-12-03" "gdb-9.0.50.20191203-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.20191126/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.20191126/gdb/doc/gdb-add-index.1	2019-11-26 01:53:30.000000000 +0000
+++ ./gdb/doc/gdb-add-index.1	2019-12-03 01:53:52.000000000 +0000
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GDB-ADD-INDEX 1"
-.TH GDB-ADD-INDEX 1 "2019-11-26" "gdb-9.0.50.20191126-git" "GNU Development Tools"
+.TH GDB-ADD-INDEX 1 "2019-12-03" "gdb-9.0.50.20191203-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.20191126/gdb/doc/gdb.info ./gdb/doc/gdb.info
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/doc/gdb.info	2019-11-26 01:53:26.000000000 +0000
+++ ./gdb/doc/gdb.info	2019-12-03 01:53:48.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.20191126-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-git.
 
    Copyright (C) 1988-2019 Free Software Foundation, Inc.
 
@@ -42,10 +42,10 @@ gdb.info-1: 1716
 gdb.info-2: 302421
 gdb.info-3: 604551
 gdb.info-4: 902922
-gdb.info-5: 1210416
-gdb.info-6: 1508836
-gdb.info-7: 1817909
-gdb.info-8: 2207215
+gdb.info-5: 1212290
+gdb.info-6: 1511243
+gdb.info-7: 1832881
+gdb.info-8: 2222187
 
 Tag Table:
 (Indirect)
@@ -397,424 +397,428 @@ Node: Editing893574
 Node: Command History894884
 Node: Screen Size899190
 Node: Output Styling902922
-Node: Numbers906535
-Node: ABI908517
-Node: Auto-loading911690
-Ref: set auto-load off913065
-Ref: show auto-load913701
-Ref: info auto-load914480
-Node: Init File in the Current Directory917447
-Ref: set auto-load local-gdbinit918022
-Ref: show auto-load local-gdbinit918204
-Ref: info auto-load local-gdbinit918368
-Node: libthread_db.so.1 file918516
-Ref: set auto-load libthread-db919455
-Ref: show auto-load libthread-db919586
-Ref: info auto-load libthread-db919723
-Node: Auto-loading safe path919907
-Ref: set auto-load safe-path921213
-Ref: show auto-load safe-path921952
-Ref: add-auto-load-safe-path922075
-Node: Auto-loading verbose mode924977
-Ref: set debug auto-load926140
-Ref: show debug auto-load926241
-Node: Messages/Warnings926363
-Ref: confirmation requests927797
-Node: Debugging Output929001
-Node: Other Misc Settings939418
-Node: Extending GDB940442
-Node: Sequences942295
-Node: Define942956
-Node: Hooks947037
-Node: Command Files949403
-Node: Output954476
-Ref: eval959278
-Node: Auto-loading sequences959440
-Ref: set auto-load gdb-scripts959935
-Ref: show auto-load gdb-scripts960059
-Ref: info auto-load gdb-scripts960189
-Node: Python960420
-Node: Python Commands961706
-Node: Python API963820
-Node: Basic Python966425
-Ref: prompt_hook977462
-Node: Exception Handling978060
-Node: Values From Inferior980962
-Node: Types In Python998298
-Node: Pretty Printing API1008290
-Node: Selecting Pretty-Printers1012733
-Node: Writing a Pretty-Printer1015460
-Node: Type Printing API1020782
-Node: Frame Filter API1023398
-Node: Frame Decorator API1030710
-Ref: frame_args1034451
-Node: Writing a Frame Filter1037781
-Node: Unwinding Frames in Python1049255
-Node: Xmethods In Python1056894
-Node: Xmethod API1059790
-Node: Writing an Xmethod1063602
-Node: Inferiors In Python1069437
-Node: Events In Python1073196
-Node: Threads In Python1082404
-Node: Recordings In Python1085748
-Node: Commands In Python1093082
-Node: Parameters In Python1102495
-Node: Functions In Python1109433
-Node: Progspaces In Python1111650
-Node: Objfiles In Python1116555
-Node: Frames In Python1123217
-Node: Blocks In Python1130223
-Node: Symbols In Python1134890
-Node: Symbol Tables In Python1144879
-Node: Line Tables In Python1148100
-Node: Breakpoints In Python1150937
-Ref: python_breakpoint_thread1157260
-Node: Finish Breakpoints in Python1160293
-Node: Lazy Strings In Python1162399
-Node: Architectures In Python1164627
-Node: Python Auto-loading1166816
-Ref: set auto-load python-scripts1167445
-Ref: show auto-load python-scripts1167545
-Ref: info auto-load python-scripts1167651
-Node: Python modules1168785
-Node: gdb.printing1169171
-Node: gdb.types1170598
-Node: gdb.prompt1173610
-Node: Guile1175259
-Node: Guile Introduction1175918
-Node: Guile Commands1176789
-Node: Guile API1178643
-Node: Basic Guile1180640
-Node: Guile Configuration1186322
-Node: GDB Scheme Data Types1187298
-Node: Guile Exception Handling1189130
-Node: Values From Inferior In Guile1193164
-Node: Arithmetic In Guile1210416
-Node: Types In Guile1212047
-Ref: Fields of a type in Guile1219988
-Node: Guile Pretty Printing API1221376
-Node: Selecting Guile Pretty-Printers1227105
-Node: Writing a Guile Pretty-Printer1229481
-Node: Commands In Guile1234666
-Node: Parameters In Guile1245446
-Ref: Parameters In Guile-Footnote-11252327
-Node: Progspaces In Guile1252443
-Node: Objfiles In Guile1255031
-Node: Frames In Guile1257312
-Node: Blocks In Guile1263890
-Node: Symbols In Guile1268698
-Node: Symbol Tables In Guile1276033
-Node: Breakpoints In Guile1278996
-Node: Lazy Strings In Guile1289257
-Node: Architectures In Guile1291548
-Node: Disassembly In Guile1295855
-Node: I/O Ports in Guile1299057
-Node: Memory Ports in Guile1299613
-Node: Iterators In Guile1302879
-Node: Guile Auto-loading1307168
-Ref: set auto-load guile-scripts1307791
-Ref: show auto-load guile-scripts1307889
-Ref: info auto-load guile-scripts1307993
-Node: Guile Modules1308952
-Node: Guile Printing Module1309274
-Node: Guile Types Module1310093
-Node: Auto-loading extensions1311386
-Node: objfile-gdbdotext file1312584
-Ref: set auto-load scripts-directory1314020
-Ref: with-auto-load-dir1314396
-Ref: show auto-load scripts-directory1315214
-Ref: add-auto-load-scripts-directory1315294
-Node: dotdebug_gdb_scripts section1315770
-Node: Which flavor to choose?1319520
-Node: Multiple Extension Languages1321341
-Node: Aliases1322405
-Node: Interpreters1325270
-Node: TUI1328421
-Node: TUI Overview1329419
-Node: TUI Keys1331852
-Node: TUI Single Key Mode1334575
-Node: TUI Commands1335758
-Node: TUI Configuration1339525
-Node: Emacs1341014
-Node: GDB/MI1346451
-Node: GDB/MI General Design1348425
-Node: Context management1350945
-Node: Asynchronous and non-stop modes1354732
-Node: Thread groups1357705
-Node: GDB/MI Command Syntax1359983
-Node: GDB/MI Input Syntax1360226
-Node: GDB/MI Output Syntax1361776
-Node: GDB/MI Compatibility with CLI1365361
-Node: GDB/MI Development and Front Ends1366098
-Node: GDB/MI Output Records1369617
-Node: GDB/MI Result Records1370023
-Node: GDB/MI Stream Records1371373
-Node: GDB/MI Async Records1372638
-Node: GDB/MI Breakpoint Information1383075
-Node: GDB/MI Frame Information1388711
-Node: GDB/MI Thread Information1389993
-Node: GDB/MI Ada Exception Information1391463
-Node: GDB/MI Simple Examples1392013
-Node: GDB/MI Command Description Format1394249
-Node: GDB/MI Breakpoint Commands1395129
-Ref: -break-insert1402237
-Node: GDB/MI Catchpoint Commands1415811
-Node: Shared Library GDB/MI Catchpoint Commands1416224
-Node: Ada Exception GDB/MI Catchpoint Commands1417882
-Node: C++ Exception GDB/MI Catchpoint Commands1421432
-Node: GDB/MI Program Context1425448
-Node: GDB/MI Thread Commands1429716
-Node: GDB/MI Ada Tasking Commands1433017
-Node: GDB/MI Program Execution1435289
-Node: GDB/MI Stack Manipulation1447556
-Ref: -stack-list-arguments1449480
-Ref: -stack-list-frames1453310
-Ref: -stack-list-locals1457639
-Ref: -stack-list-variables1459129
-Node: GDB/MI Variable Objects1460663
-Ref: -var-set-format1470629
-Ref: -var-list-children1472010
-Ref: -var-update1480818
-Ref: -var-set-frozen1483816
-Ref: -var-set-update-range1484613
-Ref: -var-set-visualizer1485142
-Node: GDB/MI Data Manipulation1486632
-Node: GDB/MI Tracepoint Commands1508836
-Node: GDB/MI Symbol Query1520627
-Node: GDB/MI File Commands1521316
-Node: GDB/MI Target Manipulation1525750
-Node: GDB/MI File Transfer Commands1532408
-Node: GDB/MI Ada Exceptions Commands1533731
-Node: GDB/MI Support Commands1535084
-Node: GDB/MI Miscellaneous Commands1539803
-Ref: -interpreter-exec1550156
-Node: Annotations1554128
-Node: Annotations Overview1555047
-Node: Server Prefix1557510
-Node: Prompting1558244
-Node: Errors1559761
-Node: Invalidation1560657
-Node: Annotations for Running1561136
-Node: Source Annotations1562670
-Node: JIT Interface1563599
-Node: Declarations1565399
-Node: Registering Code1566786
-Node: Unregistering Code1567758
-Node: Custom Debug Info1568385
-Node: Using JIT Debug Info Readers1569681
-Node: Writing JIT Debug Info Readers1570693
-Node: In-Process Agent1572888
-Ref: Control Agent1574831
-Node: In-Process Agent Protocol1575698
-Node: IPA Protocol Objects1576489
-Ref: agent expression object1577487
-Ref: tracepoint action object1577692
-Ref: tracepoint object1577772
-Node: IPA Protocol Commands1580302
-Node: GDB Bugs1581772
-Node: Bug Criteria1582504
-Node: Bug Reporting1583381
-Node: Command Line Editing1591210
-Node: Introduction and Notation1591862
-Node: Readline Interaction1593483
-Node: Readline Bare Essentials1594672
-Node: Readline Movement Commands1596453
-Node: Readline Killing Commands1597411
-Node: Readline Arguments1599327
-Node: Searching1600369
-Node: Readline Init File1602519
-Node: Readline Init File Syntax1603670
-Node: Conditional Init Constructs1623826
-Node: Sample Init File1628020
-Node: Bindable Readline Commands1631135
-Node: Commands For Moving1632187
-Node: Commands For History1633751
-Node: Commands For Text1638013
-Node: Commands For Killing1641452
-Node: Numeric Arguments1643616
-Node: Commands For Completion1644753
-Node: Keyboard Macros1646719
-Node: Miscellaneous Commands1647404
-Node: Readline vi Mode1651323
-Node: Using History Interactively1652233
-Node: History Interaction1652748
-Node: Event Designators1654644
-Node: Word Designators1655781
-Node: Modifiers1657416
-Node: In Memoriam1658637
-Node: Formatting Documentation1659520
-Ref: Formatting Documentation-Footnote-11662896
-Node: Installing GDB1662992
-Node: Requirements1663564
-Ref: Expat1664265
-Ref: MPFR1667558
-Node: Running Configure1669179
-Node: Separate Objdir1672050
-Node: Config Names1675024
-Node: Configure Options1676501
-Node: System-wide configuration1685852
-Node: System-wide Configuration Scripts1688389
-Node: Maintenance Commands1689573
-Ref: maint info breakpoints1691228
-Ref: maint check libthread-db1699693
-Node: Remote Protocol1715753
-Node: Overview1716445
-Ref: Binary Data1718990
-Node: Packets1721515
-Ref: thread-id syntax1722415
-Ref: extended mode1723860
-Ref: ? packet1724118
-Ref: bc1725584
-Ref: bs1725794
-Ref: read registers packet1727411
-Ref: cycle step packet1729266
-Ref: write register packet1731977
-Ref: step with signal packet1732956
-Ref: vCont packet1734432
-Ref: vCtrlC packet1737666
-Ref: vKill packet1740084
-Ref: X packet1741618
-Ref: insert breakpoint or watchpoint packet1741987
-Node: Stop Reply Packets1746313
-Ref: swbreak stop reason1749564
-Ref: thread create event1753161
-Ref: thread exit event1754364
-Node: General Query Packets1756573
-Ref: qCRC packet1759403
-Ref: QEnvironmentHexEncoded1762556
-Ref: QEnvironmentUnset1763786
-Ref: QEnvironmentReset1764730
-Ref: QSetWorkingDir packet1765674
-Ref: QNonStop1772125
-Ref: QCatchSyscalls1772801
-Ref: QPassSignals1774338
-Ref: QProgramSignals1775545
-Ref: QThreadEvents1777112
-Ref: qSearch memory1779130
-Ref: QStartNoAckMode1779638
-Ref: qSupported1780170
-Ref: multiprocess extensions1795690
-Ref: install tracepoint in tracing1797720
-Ref: qXfer read1802243
-Ref: qXfer auxiliary vector read1803850
-Ref: qXfer btrace read1804198
-Ref: qXfer btrace-conf read1805263
-Ref: qXfer executable filename read1805614
-Ref: qXfer target description read1806229
-Ref: qXfer library list read1806663
-Ref: qXfer svr4 library list read1807319
-Ref: qXfer memory map read1809172
-Ref: qXfer sdata read1809559
-Ref: qXfer siginfo read1810025
-Ref: qXfer threads read1810421
-Ref: qXfer traceframe info read1810824
-Ref: qXfer unwind info block1811242
-Ref: qXfer fdpic loadmap read1811476
-Ref: qXfer osdata read1811892
-Ref: qXfer write1812046
-Ref: qXfer siginfo write1813138
-Ref: General Query Packets-Footnote-11815866
-Node: Architecture-Specific Protocol Details1817909
-Node: ARM-Specific Protocol Details1818418
-Node: ARM Breakpoint Kinds1818666
-Node: MIPS-Specific Protocol Details1818997
-Node: MIPS Register packet Format1819280
-Node: MIPS Breakpoint Kinds1820207
-Node: Tracepoint Packets1820625
-Ref: QTEnable1829939
-Ref: QTDisable1830135
-Ref: qTfSTM1835672
-Ref: qTsSTM1835672
-Ref: qTSTMat1836749
-Ref: QTBuffer-size1837900
-Node: Host I/O Packets1839873
-Node: Interrupts1845454
-Ref: interrupting remote targets1845598
-Node: Notification Packets1847766
-Node: Remote Non-Stop1853191
-Node: Packet Acknowledgment1856307
-Node: Examples1858422
-Node: File-I/O Remote Protocol Extension1859016
-Node: File-I/O Overview1859478
-Node: Protocol Basics1861677
-Node: The F Request Packet1863906
-Node: The F Reply Packet1864807
-Node: The Ctrl-C Message1865725
-Node: Console I/O1867351
-Node: List of Supported Calls1868567
-Node: open1868929
-Node: close1871437
-Node: read1871820
-Node: write1872429
-Node: lseek1873200
-Node: rename1874084
-Node: unlink1875491
-Node: stat/fstat1876438
-Node: gettimeofday1877331
-Node: isatty1877767
-Node: system1878363
-Node: Protocol-specific Representation of Datatypes1879905
-Node: Integral Datatypes1880282
-Node: Pointer Values1881089
-Node: Memory Transfer1881793
-Node: struct stat1882413
-Node: struct timeval1884615
-Node: Constants1885132
-Node: Open Flags1885581
-Node: mode_t Values1885922
-Node: Errno Values1886414
-Node: Lseek Flags1887224
-Node: Limits1887409
-Node: File-I/O Examples1887769
-Node: Library List Format1888857
-Node: Library List Format for SVR4 Targets1891639
-Node: Memory Map Format1894106
-Node: Thread List Format1896630
-Node: Traceframe Info Format1897634
-Node: Branch Trace Format1899320
-Node: Branch Trace Configuration Format1901020
-Node: Agent Expressions1902194
-Node: General Bytecode Design1905015
-Node: Bytecode Descriptions1909809
-Node: Using Agent Expressions1923276
-Node: Varying Target Capabilities1925253
-Node: Rationale1926414
-Node: Target Descriptions1933803
-Node: Retrieving Descriptions1935746
-Node: Target Description Format1936831
-Node: Predefined Target Types1946706
-Node: Enum Target Types1948151
-Node: Standard Target Features1949146
-Node: AArch64 Features1951146
-Node: ARC Features1951852
-Node: ARM Features1953913
-Node: i386 Features1955427
-Node: MicroBlaze Features1957642
-Node: MIPS Features1958219
-Node: M68K Features1959410
-Node: NDS32 Features1960071
-Node: Nios II Features1961095
-Node: OpenRISC 1000 Features1961500
-Node: PowerPC Features1961866
-Node: RISC-V Features1965836
-Node: RX Features1967526
-Node: S/390 and System z Features1967888
-Node: Sparc Features1970028
-Node: TIC6x Features1970933
-Node: Operating System Information1971482
-Node: Process list1972318
-Node: Trace File Format1973381
-Node: Index Section Format1976595
-Node: Man Pages1984521
-Node: gdb man1984991
-Node: gdbserver man1990965
-Node: gcore man1998362
-Node: gdbinit man1999484
-Node: gdb-add-index man2000677
-Ref: gdb-add-index2000786
-Node: Copying2001660
-Node: GNU Free Documentation License2039221
-Node: Concept Index2064368
-Node: Command and Variable Index2207215
+Node: Numbers907005
+Node: ABI908987
+Node: Auto-loading912160
+Ref: set auto-load off913535
+Ref: show auto-load914171
+Ref: info auto-load914950
+Node: Init File in the Current Directory917917
+Ref: set auto-load local-gdbinit918492
+Ref: show auto-load local-gdbinit918674
+Ref: info auto-load local-gdbinit918838
+Node: libthread_db.so.1 file918986
+Ref: set auto-load libthread-db919925
+Ref: show auto-load libthread-db920056
+Ref: info auto-load libthread-db920193
+Node: Auto-loading safe path920377
+Ref: set auto-load safe-path921683
+Ref: show auto-load safe-path922422
+Ref: add-auto-load-safe-path922545
+Node: Auto-loading verbose mode925447
+Ref: set debug auto-load926610
+Ref: show debug auto-load926711
+Node: Messages/Warnings926833
+Ref: confirmation requests928267
+Node: Debugging Output929471
+Node: Other Misc Settings939888
+Node: Extending GDB940912
+Node: Sequences942765
+Node: Define943426
+Node: Hooks948911
+Node: Command Files951277
+Node: Output956350
+Ref: eval961152
+Node: Auto-loading sequences961314
+Ref: set auto-load gdb-scripts961809
+Ref: show auto-load gdb-scripts961933
+Ref: info auto-load gdb-scripts962063
+Node: Python962294
+Node: Python Commands963580
+Node: Python API965694
+Node: Basic Python968299
+Ref: prompt_hook979336
+Node: Exception Handling979934
+Node: Values From Inferior982836
+Node: Types In Python1000172
+Node: Pretty Printing API1010164
+Node: Selecting Pretty-Printers1014607
+Node: Writing a Pretty-Printer1017334
+Node: Type Printing API1022656
+Node: Frame Filter API1025272
+Node: Frame Decorator API1032584
+Ref: frame_args1036325
+Node: Writing a Frame Filter1039655
+Node: Unwinding Frames in Python1051129
+Node: Xmethods In Python1058768
+Node: Xmethod API1061664
+Node: Writing an Xmethod1065476
+Node: Inferiors In Python1071311
+Node: Events In Python1075070
+Node: Threads In Python1084278
+Node: Recordings In Python1087622
+Node: Commands In Python1094956
+Node: Parameters In Python1104369
+Node: Functions In Python1111307
+Node: Progspaces In Python1113524
+Node: Objfiles In Python1118429
+Node: Frames In Python1125091
+Node: Blocks In Python1132097
+Node: Symbols In Python1136764
+Node: Symbol Tables In Python1146753
+Node: Line Tables In Python1149974
+Node: Breakpoints In Python1152811
+Ref: python_breakpoint_thread1159134
+Node: Finish Breakpoints in Python1162167
+Node: Lazy Strings In Python1164273
+Node: Architectures In Python1166501
+Node: Python Auto-loading1168690
+Ref: set auto-load python-scripts1169319
+Ref: show auto-load python-scripts1169419
+Ref: info auto-load python-scripts1169525
+Node: Python modules1170659
+Node: gdb.printing1171045
+Node: gdb.types1172472
+Node: gdb.prompt1175484
+Node: Guile1177133
+Node: Guile Introduction1177792
+Node: Guile Commands1178663
+Node: Guile API1180517
+Node: Basic Guile1182514
+Node: Guile Configuration1188196
+Node: GDB Scheme Data Types1189172
+Node: Guile Exception Handling1191004
+Node: Values From Inferior In Guile1195038
+Node: Arithmetic In Guile1212290
+Node: Types In Guile1213921
+Ref: Fields of a type in Guile1221862
+Node: Guile Pretty Printing API1223250
+Node: Selecting Guile Pretty-Printers1228979
+Node: Writing a Guile Pretty-Printer1231355
+Node: Commands In Guile1236540
+Node: Parameters In Guile1247320
+Ref: Parameters In Guile-Footnote-11254201
+Node: Progspaces In Guile1254317
+Node: Objfiles In Guile1256905
+Node: Frames In Guile1259186
+Node: Blocks In Guile1265764
+Node: Symbols In Guile1270572
+Node: Symbol Tables In Guile1277907
+Node: Breakpoints In Guile1280870
+Node: Lazy Strings In Guile1291131
+Node: Architectures In Guile1293422
+Node: Disassembly In Guile1297729
+Node: I/O Ports in Guile1300931
+Node: Memory Ports in Guile1301487
+Node: Iterators In Guile1304753
+Node: Guile Auto-loading1309042
+Ref: set auto-load guile-scripts1309665
+Ref: show auto-load guile-scripts1309763
+Ref: info auto-load guile-scripts1309867
+Node: Guile Modules1310826
+Node: Guile Printing Module1311148
+Node: Guile Types Module1311967
+Node: Auto-loading extensions1313260
+Node: objfile-gdbdotext file1314458
+Ref: set auto-load scripts-directory1315894
+Ref: with-auto-load-dir1316270
+Ref: show auto-load scripts-directory1317088
+Ref: add-auto-load-scripts-directory1317168
+Node: dotdebug_gdb_scripts section1317644
+Node: Which flavor to choose?1321394
+Node: Multiple Extension Languages1323215
+Node: Aliases1324279
+Node: Interpreters1327144
+Node: TUI1330295
+Node: TUI Overview1331293
+Node: TUI Keys1333726
+Node: TUI Single Key Mode1336449
+Node: TUI Commands1337632
+Node: TUI Configuration1341399
+Node: Emacs1343421
+Node: GDB/MI1348858
+Node: GDB/MI General Design1350832
+Node: Context management1353352
+Node: Asynchronous and non-stop modes1357139
+Node: Thread groups1360112
+Node: GDB/MI Command Syntax1362390
+Node: GDB/MI Input Syntax1362633
+Node: GDB/MI Output Syntax1364183
+Node: GDB/MI Compatibility with CLI1367768
+Node: GDB/MI Development and Front Ends1368505
+Node: GDB/MI Output Records1372024
+Node: GDB/MI Result Records1372430
+Node: GDB/MI Stream Records1373780
+Node: GDB/MI Async Records1375045
+Node: GDB/MI Breakpoint Information1385482
+Node: GDB/MI Frame Information1391118
+Node: GDB/MI Thread Information1392400
+Node: GDB/MI Ada Exception Information1393870
+Node: GDB/MI Simple Examples1394420
+Node: GDB/MI Command Description Format1396656
+Node: GDB/MI Breakpoint Commands1397536
+Ref: -break-insert1404644
+Node: GDB/MI Catchpoint Commands1418218
+Node: Shared Library GDB/MI Catchpoint Commands1418631
+Node: Ada Exception GDB/MI Catchpoint Commands1420289
+Node: C++ Exception GDB/MI Catchpoint Commands1423839
+Node: GDB/MI Program Context1427855
+Node: GDB/MI Thread Commands1432123
+Node: GDB/MI Ada Tasking Commands1435424
+Node: GDB/MI Program Execution1437696
+Node: GDB/MI Stack Manipulation1449963
+Ref: -stack-list-arguments1451887
+Ref: -stack-list-frames1455717
+Ref: -stack-list-locals1460046
+Ref: -stack-list-variables1461536
+Node: GDB/MI Variable Objects1463070
+Ref: -var-set-format1473036
+Ref: -var-list-children1474417
+Ref: -var-update1483225
+Ref: -var-set-frozen1486223
+Ref: -var-set-update-range1487020
+Ref: -var-set-visualizer1487549
+Node: GDB/MI Data Manipulation1489039
+Node: GDB/MI Tracepoint Commands1511243
+Node: GDB/MI Symbol Query1523034
+Ref: -symbol-info-functions1523303
+Ref: -symbol-info-modules1527541
+Ref: -symbol-info-types1529189
+Ref: -symbol-info-variables1530928
+Node: GDB/MI File Commands1535694
+Node: GDB/MI Target Manipulation1540128
+Node: GDB/MI File Transfer Commands1546786
+Node: GDB/MI Ada Exceptions Commands1548109
+Node: GDB/MI Support Commands1549462
+Node: GDB/MI Miscellaneous Commands1554181
+Ref: -interpreter-exec1564534
+Node: Annotations1568506
+Node: Annotations Overview1569425
+Node: Server Prefix1571888
+Node: Prompting1572622
+Node: Errors1574139
+Node: Invalidation1575035
+Node: Annotations for Running1575514
+Node: Source Annotations1577048
+Node: JIT Interface1577977
+Node: Declarations1579777
+Node: Registering Code1581164
+Node: Unregistering Code1582136
+Node: Custom Debug Info1582763
+Node: Using JIT Debug Info Readers1584059
+Node: Writing JIT Debug Info Readers1585071
+Node: In-Process Agent1587266
+Ref: Control Agent1589209
+Node: In-Process Agent Protocol1590076
+Node: IPA Protocol Objects1590867
+Ref: agent expression object1591865
+Ref: tracepoint action object1592070
+Ref: tracepoint object1592150
+Node: IPA Protocol Commands1594680
+Node: GDB Bugs1596150
+Node: Bug Criteria1596882
+Node: Bug Reporting1597759
+Node: Command Line Editing1605588
+Node: Introduction and Notation1606240
+Node: Readline Interaction1607861
+Node: Readline Bare Essentials1609050
+Node: Readline Movement Commands1610831
+Node: Readline Killing Commands1611789
+Node: Readline Arguments1613705
+Node: Searching1614747
+Node: Readline Init File1616897
+Node: Readline Init File Syntax1618048
+Node: Conditional Init Constructs1638204
+Node: Sample Init File1642398
+Node: Bindable Readline Commands1645513
+Node: Commands For Moving1646565
+Node: Commands For History1648129
+Node: Commands For Text1652391
+Node: Commands For Killing1655830
+Node: Numeric Arguments1657994
+Node: Commands For Completion1659131
+Node: Keyboard Macros1661097
+Node: Miscellaneous Commands1661782
+Node: Readline vi Mode1665701
+Node: Using History Interactively1666611
+Node: History Interaction1667126
+Node: Event Designators1669022
+Node: Word Designators1670159
+Node: Modifiers1671794
+Node: In Memoriam1673015
+Node: Formatting Documentation1673898
+Ref: Formatting Documentation-Footnote-11677274
+Node: Installing GDB1677370
+Node: Requirements1677942
+Ref: Expat1678643
+Ref: MPFR1681936
+Node: Running Configure1683557
+Node: Separate Objdir1686428
+Node: Config Names1689402
+Node: Configure Options1690879
+Node: System-wide configuration1700230
+Node: System-wide Configuration Scripts1702767
+Node: Maintenance Commands1703951
+Ref: maint info breakpoints1705606
+Ref: maint check libthread-db1714071
+Node: Remote Protocol1730725
+Node: Overview1731417
+Ref: Binary Data1733962
+Node: Packets1736487
+Ref: thread-id syntax1737387
+Ref: extended mode1738832
+Ref: ? packet1739090
+Ref: bc1740556
+Ref: bs1740766
+Ref: read registers packet1742383
+Ref: cycle step packet1744238
+Ref: write register packet1746949
+Ref: step with signal packet1747928
+Ref: vCont packet1749404
+Ref: vCtrlC packet1752638
+Ref: vKill packet1755056
+Ref: X packet1756590
+Ref: insert breakpoint or watchpoint packet1756959
+Node: Stop Reply Packets1761285
+Ref: swbreak stop reason1764536
+Ref: thread create event1768133
+Ref: thread exit event1769336
+Node: General Query Packets1771545
+Ref: qCRC packet1774375
+Ref: QEnvironmentHexEncoded1777528
+Ref: QEnvironmentUnset1778758
+Ref: QEnvironmentReset1779702
+Ref: QSetWorkingDir packet1780646
+Ref: QNonStop1787097
+Ref: QCatchSyscalls1787773
+Ref: QPassSignals1789310
+Ref: QProgramSignals1790517
+Ref: QThreadEvents1792084
+Ref: qSearch memory1794102
+Ref: QStartNoAckMode1794610
+Ref: qSupported1795142
+Ref: multiprocess extensions1810662
+Ref: install tracepoint in tracing1812692
+Ref: qXfer read1817215
+Ref: qXfer auxiliary vector read1818822
+Ref: qXfer btrace read1819170
+Ref: qXfer btrace-conf read1820235
+Ref: qXfer executable filename read1820586
+Ref: qXfer target description read1821201
+Ref: qXfer library list read1821635
+Ref: qXfer svr4 library list read1822291
+Ref: qXfer memory map read1824144
+Ref: qXfer sdata read1824531
+Ref: qXfer siginfo read1824997
+Ref: qXfer threads read1825393
+Ref: qXfer traceframe info read1825796
+Ref: qXfer unwind info block1826214
+Ref: qXfer fdpic loadmap read1826448
+Ref: qXfer osdata read1826864
+Ref: qXfer write1827018
+Ref: qXfer siginfo write1828110
+Ref: General Query Packets-Footnote-11830838
+Node: Architecture-Specific Protocol Details1832881
+Node: ARM-Specific Protocol Details1833390
+Node: ARM Breakpoint Kinds1833638
+Node: MIPS-Specific Protocol Details1833969
+Node: MIPS Register packet Format1834252
+Node: MIPS Breakpoint Kinds1835179
+Node: Tracepoint Packets1835597
+Ref: QTEnable1844911
+Ref: QTDisable1845107
+Ref: qTfSTM1850644
+Ref: qTsSTM1850644
+Ref: qTSTMat1851721
+Ref: QTBuffer-size1852872
+Node: Host I/O Packets1854845
+Node: Interrupts1860426
+Ref: interrupting remote targets1860570
+Node: Notification Packets1862738
+Node: Remote Non-Stop1868163
+Node: Packet Acknowledgment1871279
+Node: Examples1873394
+Node: File-I/O Remote Protocol Extension1873988
+Node: File-I/O Overview1874450
+Node: Protocol Basics1876649
+Node: The F Request Packet1878878
+Node: The F Reply Packet1879779
+Node: The Ctrl-C Message1880697
+Node: Console I/O1882323
+Node: List of Supported Calls1883539
+Node: open1883901
+Node: close1886409
+Node: read1886792
+Node: write1887401
+Node: lseek1888172
+Node: rename1889056
+Node: unlink1890463
+Node: stat/fstat1891410
+Node: gettimeofday1892303
+Node: isatty1892739
+Node: system1893335
+Node: Protocol-specific Representation of Datatypes1894877
+Node: Integral Datatypes1895254
+Node: Pointer Values1896061
+Node: Memory Transfer1896765
+Node: struct stat1897385
+Node: struct timeval1899587
+Node: Constants1900104
+Node: Open Flags1900553
+Node: mode_t Values1900894
+Node: Errno Values1901386
+Node: Lseek Flags1902196
+Node: Limits1902381
+Node: File-I/O Examples1902741
+Node: Library List Format1903829
+Node: Library List Format for SVR4 Targets1906611
+Node: Memory Map Format1909078
+Node: Thread List Format1911602
+Node: Traceframe Info Format1912606
+Node: Branch Trace Format1914292
+Node: Branch Trace Configuration Format1915992
+Node: Agent Expressions1917166
+Node: General Bytecode Design1919987
+Node: Bytecode Descriptions1924781
+Node: Using Agent Expressions1938248
+Node: Varying Target Capabilities1940225
+Node: Rationale1941386
+Node: Target Descriptions1948775
+Node: Retrieving Descriptions1950718
+Node: Target Description Format1951803
+Node: Predefined Target Types1961678
+Node: Enum Target Types1963123
+Node: Standard Target Features1964118
+Node: AArch64 Features1966118
+Node: ARC Features1966824
+Node: ARM Features1968885
+Node: i386 Features1970399
+Node: MicroBlaze Features1972614
+Node: MIPS Features1973191
+Node: M68K Features1974382
+Node: NDS32 Features1975043
+Node: Nios II Features1976067
+Node: OpenRISC 1000 Features1976472
+Node: PowerPC Features1976838
+Node: RISC-V Features1980808
+Node: RX Features1982498
+Node: S/390 and System z Features1982860
+Node: Sparc Features1985000
+Node: TIC6x Features1985905
+Node: Operating System Information1986454
+Node: Process list1987290
+Node: Trace File Format1988353
+Node: Index Section Format1991567
+Node: Man Pages1999493
+Node: gdb man1999963
+Node: gdbserver man2005937
+Node: gcore man2013334
+Node: gdbinit man2014456
+Node: gdb-add-index man2015649
+Ref: gdb-add-index2015758
+Node: Copying2016632
+Node: GNU Free Documentation License2054193
+Node: Concept Index2079340
+Node: Command and Variable Index2222187
 
 End Tag 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.20191126/gdb/doc/gdb.info-1 ./gdb/doc/gdb.info-1
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/doc/gdb.info-1	2019-11-26 01:53:13.000000000 +0000
+++ ./gdb/doc/gdb.info-1	2019-12-03 01:53:34.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.20191126-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-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.20191126-git.
+   This is the Tenth Edition, for GDB (GDB) Version 9.0.50.20191203-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.20191126-git, Copyright 1999 Free Software Foundation, Inc...
+     GDB 9.0.50.20191203-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.20191126/gdb/doc/gdb.info-2 ./gdb/doc/gdb.info-2
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/doc/gdb.info-2	2019-11-26 01:53:15.000000000 +0000
+++ ./gdb/doc/gdb.info-2	2019-12-03 01:53:35.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.20191126-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-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.20191126/gdb/doc/gdb.info-3 ./gdb/doc/gdb.info-3
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/doc/gdb.info-3	2019-11-26 01:53:17.000000000 +0000
+++ ./gdb/doc/gdb.info-3	2019-12-03 01:53:37.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.20191126-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-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.20191126/gdb/doc/gdb.info-4 ./gdb/doc/gdb.info-4
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/doc/gdb.info-4	2019-11-26 01:53:19.000000000 +0000
+++ ./gdb/doc/gdb.info-4	2019-12-03 01:53:40.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.20191126-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-git.
 
    Copyright (C) 1988-2019 Free Software Foundation, Inc.
 
@@ -126,6 +126,17 @@ each style.
      For example, the command 'apropos -v REGEXP' uses the highlight
      style to mark the documentation parts matching REGEXP.
 
+'tui-border'
+     Control the styling of the TUI border.  Note that, unlike other
+     styling options, only the color of the border can be controlled via
+     'set style'.  This was done for compatibility reasons, as TUI
+     controls to set the border's intensity predated the addition of
+     general styling to GDB.  *Note TUI Configuration::.
+
+'tui-active-border'
+     Control the styling of the active TUI border; that is, the TUI
+     window that has the focus.
+
 
 File: gdb.info,  Node: Numbers,  Next: ABI,  Prev: Output Styling,  Up: Controlling GDB
 
@@ -1029,9 +1040,10 @@ process a variable number of arguments:
      Define a command named COMMANDNAME.  If there is already a command
      by that name, you are asked to confirm that you want to redefine
      it.  The argument COMMANDNAME may be a bare command name consisting
-     of letters, numbers, dashes, and underscores.  It may also start
-     with any predefined prefix command.  For example, 'define target
-     my-target' creates a user-defined 'target my-target' command.
+     of letters, numbers, dashes, dots, and underscores.  It may also
+     start with any predefined or user-defined prefix command.  For
+     example, 'define target my-target' creates a user-defined 'target
+     my-target' command.
 
      The definition of the command is made up of other GDB command
      lines, which are given following the 'define' command.  The end of
@@ -1049,6 +1061,42 @@ process a variable number of arguments:
      documentation of a command.  Redefining the command with 'define'
      does not change the documentation.
 
+'define-prefix COMMANDNAME'
+     Define or mark the command COMMANDNAME as a user-defined prefix
+     command.  Once marked, COMMANDNAME can be used as prefix command by
+     the 'define' command.  Note that 'define-prefix' can be used with a
+     not yet defined COMMANDNAME.  In such a case, COMMANDNAME is
+     defined as an empty user-defined command.  In case you redefine a
+     command that was marked as a user-defined prefix command, the
+     subcommands of the redefined command are kept (and GDB indicates so
+     to the user).
+
+     Example:
+          (gdb) define-prefix abc
+          (gdb) define-prefix abc def
+          (gdb) define abc def
+          Type commands for definition of "abc def".
+          End with a line saying just "end".
+          >echo command initial def\n
+          >end
+          (gdb) define abc def ghi
+          Type commands for definition of "abc def ghi".
+          End with a line saying just "end".
+          >echo command ghi\n
+          >end
+          (gdb) define abc def
+          Keeping subcommands of prefix command "def".
+          Redefine command "def"? (y or n) y
+          Type commands for definition of "abc def".
+          End with a line saying just "end".
+          >echo command def\n
+          >end
+          (gdb) abc def ghi
+          command ghi
+          (gdb) abc def
+          command def
+          (gdb)
+
 'dont-repeat'
      Used inside a user-defined command, this tells GDB that this
      command should not be repeated when the user hits <RET> (*note
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.20191126/gdb/doc/gdb.info-5 ./gdb/doc/gdb.info-5
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/doc/gdb.info-5	2019-11-26 01:53:21.000000000 +0000
+++ ./gdb/doc/gdb.info-5	2019-12-03 01:53:43.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.20191126-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-git.
 
    Copyright (C) 1988-2019 Free Software Foundation, Inc.
 
@@ -3445,6 +3445,17 @@ Several configuration variables control 
      affects the display of TAB characters in the source and assembly
      windows.
 
+'set tui compact-source [on|off]'
+     Set whether the TUI source window is displayed in "compact" form.
+     The default display uses more space for line numbers and starts the
+     source text at the next tab stop; the compact display uses only as
+     much space as is needed for the line numbers in the current file,
+     and only a single space to separate the line numbers from the
+     source.
+
+   Note that the colors of the TUI borders can be controlled using the
+appropriate 'set style' commands.  *Note Output Styling::.
+
 
 File: gdb.info,  Node: Emacs,  Next: GDB/MI,  Prev: TUI,  Up: Top
 
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.20191126/gdb/doc/gdb.info-6 ./gdb/doc/gdb.info-6
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/doc/gdb.info-6	2019-11-26 01:53:23.000000000 +0000
+++ ./gdb/doc/gdb.info-6	2019-12-03 01:53:46.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.20191126-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-git.
 
    Copyright (C) 1988-2019 Free Software Foundation, Inc.
 
@@ -410,6 +410,299 @@ File: gdb.info,  Node: GDB/MI Symbol Que
 27.18 GDB/MI Symbol Query Commands
 ==================================
 
+The '-symbol-info-functions' Command
+------------------------------------
+
+Synopsis
+........
+
+      -symbol-info-functions [--include-nondebug]
+                             [--type TYPE_REGEXP]
+                             [--name NAME_REGEXP]
+
+Return a list containing the names and types for all global functions
+taken from the debug information.  The functions are grouped by source
+file, and shown with the line number on which each function is defined.
+
+   The '--include-nondebug' option causes the output to include code
+symbols from the symbol table.
+
+   The options '--type' and '--name' allow the symbols returned to be
+filtered based on either the name of the function, or the type signature
+of the function.
+
+GDB Command
+...........
+
+The corresponding GDB command is 'info functions'.
+
+Example
+.......
+
+     (gdb)
+     -symbol-info-functions
+     ^done,symbols=
+       {debug=
+         [{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+           symbols=[{line="36", name="f4", type="void (int *)",
+                     description="void f4(int *);"},
+                    {line="42", name="main", type="int ()",
+                     description="int main();"},
+                    {line="30", name="f1", type="my_int_t (int, int)",
+                     description="static my_int_t f1(int, int);"}]},
+          {filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+           symbols=[{line="33", name="f2", type="float (another_float_t)",
+                     description="float f2(another_float_t);"},
+                    {line="39", name="f3", type="int (another_int_t)",
+                     description="int f3(another_int_t);"},
+                    {line="27", name="f1", type="another_float_t (int)",
+                     description="static another_float_t f1(int);"}]}]}
+     (gdb)
+     -symbol-info-functions --name f1
+     ^done,symbols=
+       {debug=
+         [{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+           symbols=[{line="30", name="f1", type="my_int_t (int, int)",
+                     description="static my_int_t f1(int, int);"}]},
+          {filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+           symbols=[{line="27", name="f1", type="another_float_t (int)",
+                     description="static another_float_t f1(int);"}]}]}
+     (gdb)
+     -symbol-info-functions --type void
+     ^done,symbols=
+       {debug=
+         [{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+           symbols=[{line="36", name="f4", type="void (int *)",
+                     description="void f4(int *);"}]}]}
+     (gdb)
+     -symbol-info-functions --include-nondebug
+     ^done,symbols=
+       {debug=
+         [{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+           symbols=[{line="36", name="f4", type="void (int *)",
+                     description="void f4(int *);"},
+                    {line="42", name="main", type="int ()",
+                     description="int main();"},
+                    {line="30", name="f1", type="my_int_t (int, int)",
+                     description="static my_int_t f1(int, int);"}]},
+          {filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+           symbols=[{line="33", name="f2", type="float (another_float_t)",
+                     description="float f2(another_float_t);"},
+                    {line="39", name="f3", type="int (another_int_t)",
+                     description="int f3(another_int_t);"},
+                    {line="27", name="f1", type="another_float_t (int)",
+                     description="static another_float_t f1(int);"}]}],
+        nondebug=
+         [{address="0x0000000000400398",name="_init"},
+          {address="0x00000000004003b0",name="_start"},
+           ...
+         ]}
+
+The '-symbol-info-modules' Command
+----------------------------------
+
+Synopsis
+........
+
+      -symbol-info-modules [--name NAME_REGEXP]
+
+Return a list containing the names of all known Fortran modules.  The
+modules are grouped by source file, and shown with the line number on
+which each modules is defined.
+
+   The option '--name' allows the modules returned to be filtered based
+the name of the module.
+
+GDB Command
+...........
+
+The corresponding GDB command is 'info modules'.
+
+Example
+.......
+
+     (gdb)
+     -symbol-info-modules
+     ^done,symbols=
+       {debug=
+         [{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90",
+           symbols=[{line="16",name="mod1"},
+                    {line="22",name="mod2"}]},
+          {filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90",
+           symbols=[{line="16",name="mod3"},
+                    {line="22",name="modmany"},
+                    {line="26",name="moduse"}]}]}
+     (gdb)
+     -symbol-info-modules --name mod[123]
+     ^done,symbols=
+       {debug=
+         [{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90",
+           symbols=[{line="16",name="mod1"},
+                    {line="22",name="mod2"}]},
+          {filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90",
+           symbols=[{line="16",name="mod3"}]}]}
+
+The '-symbol-info-types' Command
+--------------------------------
+
+Synopsis
+........
+
+      -symbol-info-types [--name NAME_REGEXP]
+
+Return a list of all defined types.  The types are grouped by source
+file, and shown with the line number on which each user defined type is
+defined.  Some base types are not defined in the source code but are
+added to the debug information by the compiler, for example 'int',
+'float', etc.; these types do not have an associated line number.
+
+   The option '--name' allows the list of types returned to be filtered
+by name.
+
+GDB Command
+...........
+
+The corresponding GDB command is 'info types'.
+
+Example
+.......
+
+     (gdb)
+     -symbol-info-types
+     ^done,symbols=
+       {debug=
+          [{filename="gdb.mi/mi-sym-info-1.c",
+            fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+            symbols=[{name="float"},
+                     {name="int"},
+                     {line="27",name="typedef int my_int_t;"}]},
+           {filename="gdb.mi/mi-sym-info-2.c",
+            fullname="/project/gdb.mi/mi-sym-info-2.c",
+            symbols=[{line="24",name="typedef float another_float_t;"},
+                     {line="23",name="typedef int another_int_t;"},
+                     {name="float"},
+                     {name="int"}]}]}
+     (gdb)
+     -symbol-info-types --name _int_
+     ^done,symbols=
+       {debug=
+          [{filename="gdb.mi/mi-sym-info-1.c",
+            fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+            symbols=[{line="27",name="typedef int my_int_t;"}]},
+           {filename="gdb.mi/mi-sym-info-2.c",
+            fullname="/project/gdb.mi/mi-sym-info-2.c",
+            symbols=[{line="23",name="typedef int another_int_t;"}]}]}
+
+The '-symbol-info-variables' Command
+------------------------------------
+
+Synopsis
+........
+
+      -symbol-info-variables [--include-nondebug]
+                             [--type TYPE_REGEXP]
+                             [--name NAME_REGEXP]
+
+Return a list containing the names and types for all global variables
+taken from the debug information.  The variables are grouped by source
+file, and shown with the line number on which each variable is defined.
+
+   The '--include-nondebug' option causes the output to include data
+symbols from the symbol table.
+
+   The options '--type' and '--name' allow the symbols returned to be
+filtered based on either the name of the variable, or the type of the
+variable.
+
+GDB Command
+...........
+
+The corresponding GDB command is 'info variables'.
+
+Example
+.......
+
+     (gdb)
+     -symbol-info-variables
+     ^done,symbols=
+       {debug=
+         [{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+           symbols=[{line="25",name="global_f1",type="float",
+                     description="static float global_f1;"},
+                    {line="24",name="global_i1",type="int",
+                     description="static int global_i1;"}]},
+          {filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+           symbols=[{line="21",name="global_f2",type="int",
+                     description="int global_f2;"},
+                    {line="20",name="global_i2",type="int",
+                     description="int global_i2;"},
+                    {line="19",name="global_f1",type="float",
+                     description="static float global_f1;"},
+                    {line="18",name="global_i1",type="int",
+                     description="static int global_i1;"}]}]}
+     (gdb)
+     -symbol-info-variables --name f1
+     ^done,symbols=
+       {debug=
+         [{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+           symbols=[{line="25",name="global_f1",type="float",
+                     description="static float global_f1;"}]},
+          {filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+           symbols=[{line="19",name="global_f1",type="float",
+                     description="static float global_f1;"}]}]}
+     (gdb)
+     -symbol-info-variables --type float
+     ^done,symbols=
+       {debug=
+         [{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+           symbols=[{line="25",name="global_f1",type="float",
+                     description="static float global_f1;"}]},
+          {filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+           symbols=[{line="19",name="global_f1",type="float",
+                     description="static float global_f1;"}]}]}
+     (gdb)
+     -symbol-info-variables --include-nondebug
+     ^done,symbols=
+       {debug=
+         [{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+           symbols=[{line="25",name="global_f1",type="float",
+                     description="static float global_f1;"},
+                    {line="24",name="global_i1",type="int",
+                     description="static int global_i1;"}]},
+          {filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+           fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+           symbols=[{line="21",name="global_f2",type="int",
+                     description="int global_f2;"},
+                    {line="20",name="global_i2",type="int",
+                     description="int global_i2;"},
+                    {line="19",name="global_f1",type="float",
+                     description="static float global_f1;"},
+                    {line="18",name="global_i1",type="int",
+                     description="static int global_i1;"}]}],
+        nondebug=
+         [{address="0x00000000004005d0",name="_IO_stdin_used"},
+          {address="0x00000000004005d8",name="__dso_handle"}
+           ...
+         ]}
+
 The '-symbol-list-lines' Command
 --------------------------------
 
@@ -4256,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.20191126-git/gdb/gdb.info', and it refers to subordinate
+'gdb-9.0.50.20191203-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'
@@ -4266,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.20191126-git', in the case of version
-9.0.50.20191126-git), you can make the Info file by typing:
+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:
 
      cd gdb
      make gdb.info
@@ -4292,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.20191126-git/gdb')
+main source directory (for example, to 'gdb-9.0.50.20191203-git/gdb')
 and type:
 
      make gdb.dvi
@@ -4301,8 +4594,8 @@ and type:
 
    ---------- Footnotes ----------
 
-   (1) In 'gdb-9.0.50.20191126-git/gdb/refcard.ps' of the version
-9.0.50.20191126-git release.
+   (1) In 'gdb-9.0.50.20191203-git/gdb/refcard.ps' of the version
+9.0.50.20191203-git release.
 
 
 File: gdb.info,  Node: Installing GDB,  Next: Maintenance Commands,  Prev: Formatting Documentation,  Up: Top
@@ -4453,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.20191126-git distribution is in
-the 'gdb-9.0.50.20191126-git' directory.  That directory contains:
+   For example, the GDB version 9.0.50.20191203-git distribution is in
+the 'gdb-9.0.50.20191203-git' directory.  That directory contains:
 
-'gdb-9.0.50.20191126-git/configure (and supporting files)'
+'gdb-9.0.50.20191203-git/configure (and supporting files)'
      script for configuring GDB and all its supporting libraries
 
-'gdb-9.0.50.20191126-git/gdb'
+'gdb-9.0.50.20191203-git/gdb'
      the source specific to GDB itself
 
-'gdb-9.0.50.20191126-git/bfd'
+'gdb-9.0.50.20191203-git/bfd'
      source for the Binary File Descriptor library
 
-'gdb-9.0.50.20191126-git/include'
+'gdb-9.0.50.20191203-git/include'
      GNU include files
 
-'gdb-9.0.50.20191126-git/libiberty'
+'gdb-9.0.50.20191203-git/libiberty'
      source for the '-liberty' free software library
 
-'gdb-9.0.50.20191126-git/opcodes'
+'gdb-9.0.50.20191203-git/opcodes'
      source for the library of opcode tables and disassemblers
 
-'gdb-9.0.50.20191126-git/readline'
+'gdb-9.0.50.20191203-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.20191126-git' directory.
+the 'gdb-9.0.50.20191203-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
@@ -4489,7 +4782,7 @@ platform on which GDB will run as an arg
 
    For example:
 
-     cd gdb-9.0.50.20191126-git
+     cd gdb-9.0.50.20191203-git
      ./configure
      make
 
@@ -4537,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.20191126-git, you can build GDB in a
+   For example, with version 9.0.50.20191203-git, you can build GDB in a
 separate directory for a Sun 4 like this:
 
-     cd gdb-9.0.50.20191126-git
+     cd gdb-9.0.50.20191203-git
      mkdir ../gdb-sun4
      cd ../gdb-sun4
-     ../gdb-9.0.50.20191126-git/configure
+     ../gdb-9.0.50.20191203-git/configure
      make
 
    When 'configure' builds a configuration using a remote source
@@ -4554,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.20191126-git/gdb/configure', you are configuring only one
+'../gdb-9.0.50.20191203-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'.
 
@@ -4570,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.20191126-git' (or in a separate configured directory
-configured with '--srcdir=DIRNAME/gdb-9.0.50.20191126-git'), you will
+'gdb-9.0.50.20191203-git' (or in a separate configured directory
+configured with '--srcdir=DIRNAME/gdb-9.0.50.20191203-git'), you will
 build all the required libraries, and then build GDB.
 
    When you have multiple hosts or targets configured in separate
@@ -4616,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.20191126-git', for version 9.0.50.20191126-git).
+('gdb-9.0.50.20191203-git', for version 9.0.50.20191203-git).
 
 
 File: gdb.info,  Node: Configure Options,  Next: System-wide configuration,  Prev: Config Names,  Up: Installing GDB
@@ -5335,6 +5628,18 @@ commands that turn on debugging messages
      If DWARF frame unwinders are not supported for a particular target
      architecture, then enabling this flag does not cause them to be
      used.
+
+'maint set worker-threads'
+'maint show worker-threads'
+     Control the number of worker threads that may be used by GDB.  On
+     capable hosts, GDB may use multiple threads to speed up certain
+     CPU-intensive operations, such as demangling symbol names.  While
+     the number of threads used by GDB may vary, this command can be
+     used to set an upper bound on this number.  The default is
+     'unlimited', which lets GDB choose a reasonable number.  Note that
+     this only controls worker threads started by GDB itself; libraries
+     used by GDB may start threads of their own.
+
 'maint set profile'
 'maint show profile'
      Control profiling of 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.20191126/gdb/doc/gdb.info-7 ./gdb/doc/gdb.info-7
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/doc/gdb.info-7	2019-11-26 01:53:26.000000000 +0000
+++ ./gdb/doc/gdb.info-7	2019-12-03 01:53:48.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.20191126-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-git.
 
    Copyright (C) 1988-2019 Free Software Foundation, Inc.
 
@@ -6625,7 +6625,7 @@ Concept Index
 * do not print frame arguments:          Print Settings.     (line  154)
 * documentation:                         Formatting Documentation.
                                                              (line   22)
-* don't repeat command:                  Define.             (line   74)
+* don't repeat command:                  Define.             (line  111)
 * don't repeat Guile command:            Commands In Guile.  (line   67)
 * don't repeat Python command:           Commands In Python. (line   42)
 * DOS file-name semantics of file names.: Files.             (line  476)
@@ -6881,7 +6881,7 @@ Concept Index
 * handling signals:                      Signals.            (line   27)
 * hardware breakpoints:                  Set Breaks.         (line   61)
 * hardware debug registers:              Maintenance Commands.
-                                                             (line  442)
+                                                             (line  454)
 * hardware watchpoints:                  Set Watchpoints.    (line   31)
 * hash mark while downloading:           Target Commands.    (line   98)
 * heuristic-fence-post (Alpha, MIPS):    MIPS.               (line   14)
@@ -6924,7 +6924,7 @@ Concept Index
 * inferior tty:                          Input/Output.       (line   44)
 * inferiors in Python:                   Inferiors In Python.
                                                              (line    6)
-* infinite recursion in user-defined commands: Define.       (line   91)
+* infinite recursion in user-defined commands: Define.       (line  128)
 * info for known .debug_gdb_scripts-loaded scripts: Maintenance Commands.
                                                              (line  321)
 * info for known object files:           Maintenance Commands.
@@ -7092,7 +7092,7 @@ Concept Index
 * memory tracing:                        Breakpoints.        (line   17)
 * memory transfer, in file-i/o protocol: Memory Transfer.    (line    6)
 * memory used by commands:               Maintenance Commands.
-                                                             (line  543)
+                                                             (line  555)
 * memory used for symbol tables:         Files.              (line  315)
 * memory, alignment and size of remote accesses: Packets.    (line  247)
 * memory, viewing as typed object:       Expressions.        (line   41)
@@ -7327,7 +7327,7 @@ Concept Index
 * procfs API calls:                      Process Information.
                                                              (line  105)
 * profiling GDB:                         Maintenance Commands.
-                                                             (line  425)
+                                                             (line  438)
 * program counter register:              Registers.          (line   31)
 * program entry point:                   Backtrace.          (line  155)
 * programming in guile:                  Guile API.          (line    6)
@@ -7550,7 +7550,7 @@ Concept Index
 * reset environment, remote request:     General Query Packets.
                                                              (line  197)
 * resources used by commands:            Maintenance Commands.
-                                                             (line  497)
+                                                             (line  509)
 * response time, MIPS debugging:         MIPS.               (line   10)
 * restart:                               Checkpoint/Restart. (line    6)
 * restore data from a file:              Dump/Restore Files. (line    6)
@@ -7875,9 +7875,9 @@ Concept Index
 * threads, continuing:                   Thread Stops.       (line    6)
 * threads, stopped:                      Thread Stops.       (line    6)
 * time of command execution:             Maintenance Commands.
-                                                             (line  547)
+                                                             (line  559)
 * timeout for commands:                  Maintenance Commands.
-                                                             (line  598)
+                                                             (line  610)
 * timeout for serial communications:     Remote Configuration.
                                                              (line   72)
 * timeout, for remote target connection: Remote Configuration.
@@ -7994,7 +7994,7 @@ Concept Index
 * vStopped packet:                       Packets.            (line  544)
 * VTBL display:                          Print Settings.     (line  567)
 * watchdog timer:                        Maintenance Commands.
-                                                             (line  598)
+                                                             (line  610)
 * watchpoints:                           Breakpoints.        (line   17)
 * watchpoints and threads:               Set Watchpoints.    (line  179)
 * where to look for shared libraries:    Files.              (line  381)
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.20191126/gdb/doc/gdb.info-8 ./gdb/doc/gdb.info-8
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/doc/gdb.info-8	2019-11-26 01:53:26.000000000 +0000
+++ ./gdb/doc/gdb.info-8	2019-12-03 01:53:48.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.20191126-git.
+Source-Level Debugger' for GDB (GDB) Version 9.0.50.20191203-git.
 
    Copyright (C) 1988-2019 Free Software Foundation, Inc.
 
@@ -254,7 +254,11 @@ Command, Variable, and Function Index
                                                               (line 351)
 * -stack-select-frame:                   GDB/MI Stack Manipulation.
                                                               (line 379)
-* -symbol-list-lines:                    GDB/MI Symbol Query. (line   9)
+* -symbol-info-functions:                GDB/MI Symbol Query. (line   9)
+* -symbol-info-modules:                  GDB/MI Symbol Query. (line 104)
+* -symbol-info-types:                    GDB/MI Symbol Query. (line 152)
+* -symbol-info-variables:                GDB/MI Symbol Query. (line 203)
+* -symbol-list-lines:                    GDB/MI Symbol Query. (line 302)
 * -target-attach:                        GDB/MI Target Manipulation.
                                                               (line   9)
 * -target-detach:                        GDB/MI Target Manipulation.
@@ -743,6 +747,7 @@ Command, Variable, and Function Index
 * default-visualizer:                    Guile Pretty Printing API.
                                                               (line 129)
 * define:                                Define.              (line  50)
+* define-prefix:                         Define.              (line  75)
 * delete:                                Delete Breaks.       (line  41)
 * delete checkpoint CHECKPOINT-ID:       Checkpoint/Restart.  (line  53)
 * delete display:                        Auto Display.        (line  45)
@@ -788,9 +793,9 @@ Command, Variable, and Function Index
 * do (down):                             Selection.           (line  74)
 * do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands.
                                                               (line  14)
-* document:                              Define.              (line  62)
+* document:                              Define.              (line  63)
 * dont-repeat:                           Commands In Guile.   (line  67)
-* dont-repeat <1>:                       Define.              (line  74)
+* dont-repeat <1>:                       Define.              (line 111)
 * down:                                  Selection.           (line  74)
 * Down:                                  TUI Keys.            (line  70)
 * down-silently:                         Selection.           (line 106)
@@ -838,7 +843,7 @@ Command, Variable, and Function Index
 * enabled of type_printer:               Type Printing API.   (line  13)
 * end (breakpoint commands):             Break Commands.      (line  11)
 * end (if/else/while commands):          Command Files.       (line 103)
-* end (user-defined commands):           Define.              (line  62)
+* end (user-defined commands):           Define.              (line  63)
 * end-kbd-macro (C-x )):                 Keyboard Macros.     (line   9)
 * end-of-file (usually C-d):             Commands For Text.   (line   6)
 * end-of-history (M->):                  Commands For History.
@@ -1234,7 +1239,7 @@ Command, Variable, and Function Index
 * help:                                  Help.                (line   6)
 * help function:                         Convenience Funs.    (line 228)
 * help target:                           Target Commands.     (line  19)
-* help user-defined:                     Define.              (line  79)
+* help user-defined:                     Define.              (line 116)
 * history-append!:                       Basic Guile.         (line 105)
 * history-preserve-point:                Readline Init File Syntax.
                                                               (line 162)
@@ -1604,7 +1609,7 @@ Command, Variable, and Function Index
 * maint set catch-demangler-crashes:     Maintenance Commands.
                                                               (line 146)
 * maint set check-libthread-db:          Maintenance Commands.
-                                                              (line 534)
+                                                              (line 546)
 * maint set demangler-warning:           Maintenance Commands.
                                                               (line 197)
 * maint set dwarf always-disassemble:    Maintenance Commands.
@@ -1618,29 +1623,31 @@ Command, Variable, and Function Index
 * maint set internal-warning:            Maintenance Commands.
                                                               (line 197)
 * maint set per-command:                 Maintenance Commands.
-                                                              (line 495)
+                                                              (line 507)
 * maint set profile:                     Maintenance Commands.
-                                                              (line 425)
+                                                              (line 438)
 * maint set show-all-tib:                Maintenance Commands.
-                                                              (line 450)
+                                                              (line 462)
 * maint set show-debug-regs:             Maintenance Commands.
-                                                              (line 442)
+                                                              (line 454)
 * maint set symbol-cache-size:           Symbols.             (line 698)
 * maint set target-async:                Maintenance Commands.
-                                                              (line 456)
+                                                              (line 468)
 * maint set target-non-stop MODE [on|off|auto]: Maintenance Commands.
-                                                              (line 464)
+                                                              (line 476)
 * maint set test-settings:               Maintenance Commands.
-                                                              (line 583)
+                                                              (line 595)
 * maint set tui-resize-message:          Maintenance Commands.
-                                                              (line 484)
+                                                              (line 496)
+* maint set worker-threads:              Maintenance Commands.
+                                                              (line 427)
 * maint show bfd-sharing:                File Caching.        (line  14)
 * maint show btrace pt skip-pad:         Maintenance Commands.
                                                               (line 108)
 * maint show catch-demangler-crashes:    Maintenance Commands.
                                                               (line 146)
 * maint show check-libthread-db:         Maintenance Commands.
-                                                              (line 534)
+                                                              (line 546)
 * maint show demangler-warning:          Maintenance Commands.
                                                               (line 197)
 * maint show dwarf always-disassemble:   Maintenance Commands.
@@ -1654,36 +1661,38 @@ Command, Variable, and Function Index
 * maint show internal-warning:           Maintenance Commands.
                                                               (line 197)
 * maint show per-command:                Maintenance Commands.
-                                                              (line 495)
+                                                              (line 507)
 * maint show profile:                    Maintenance Commands.
-                                                              (line 425)
+                                                              (line 438)
 * maint show show-all-tib:               Maintenance Commands.
-                                                              (line 450)
+                                                              (line 462)
 * maint show show-debug-regs:            Maintenance Commands.
-                                                              (line 442)
+                                                              (line 454)
 * maint show symbol-cache-size:          Symbols.             (line 703)
 * maint show target-async:               Maintenance Commands.
-                                                              (line 456)
+                                                              (line 468)
 * maint show target-non-stop:            Maintenance Commands.
-                                                              (line 464)
+                                                              (line 476)
 * maint show test-options-completion-result: Maintenance Commands.
-                                                              (line 578)
+                                                              (line 590)
 * maint show test-settings:              Maintenance Commands.
-                                                              (line 583)
+                                                              (line 595)
 * maint show tui-resize-message:         Maintenance Commands.
-                                                              (line 484)
+                                                              (line 496)
+* maint show worker-threads:             Maintenance Commands.
+                                                              (line 427)
 * maint space:                           Maintenance Commands.
-                                                              (line 543)
+                                                              (line 555)
 * maint test-options:                    Maintenance Commands.
-                                                              (line 564)
+                                                              (line 576)
 * maint time:                            Maintenance Commands.
-                                                              (line 547)
+                                                              (line 559)
 * maint translate-address:               Maintenance Commands.
-                                                              (line 551)
+                                                              (line 563)
 * maint undeprecate:                     Maintenance Commands.
                                                               (line 160)
 * maint with:                            Maintenance Commands.
-                                                              (line 589)
+                                                              (line 601)
 * make:                                  Shell Commands.      (line  21)
 * make-block-symbols-iterator:           Blocks In Guile.     (line 105)
 * make-breakpoint:                       Breakpoints In Guile.
@@ -2250,7 +2259,7 @@ Command, Variable, and Function Index
 * set logging:                           Logging Output.      (line   9)
 * set mach-exceptions:                   Darwin.              (line  27)
 * set max-completions:                   Completion.          (line  70)
-* set max-user-call-depth:               Define.              (line  91)
+* set max-user-call-depth:               Define.              (line 128)
 * set max-value-size:                    Value Sizes.         (line  12)
 * set may-call-functions:                Calling.             (line  59)
 * set mem inaccessible-by-default:       Memory Region Attributes.
@@ -2352,6 +2361,7 @@ Command, Variable, and Function Index
 * set tui active-border-mode:            TUI Configuration.   (line  24)
 * set tui border-kind:                   TUI Configuration.   (line   9)
 * set tui border-mode:                   TUI Configuration.   (line  23)
+* set tui compact-source:                TUI Configuration.   (line  54)
 * set tui tab-width:                     TUI Configuration.   (line  49)
 * set unwind-on-terminating-exception:   Calling.             (line  47)
 * set unwindonsignal:                    Calling.             (line  36)
@@ -2361,7 +2371,7 @@ Command, Variable, and Function Index
 * set varsize-limit:                     Ada Settings.        (line   6)
 * set verbose:                           Messages/Warnings.   (line  15)
 * set watchdog:                          Maintenance Commands.
-                                                              (line 598)
+                                                              (line 610)
 * set width:                             Screen Size.         (line  22)
 * set write:                             Patching.            (line  15)
 * set-breakpoint-condition!:             Breakpoints In Guile.
@@ -2507,7 +2517,7 @@ Command, Variable, and Function Index
 * show logging:                          Logging Output.      (line  26)
 * show mach-exceptions:                  Darwin.              (line  34)
 * show max-completions:                  Completion.          (line  78)
-* show max-user-call-depth:              Define.              (line  91)
+* show max-user-call-depth:              Define.              (line 128)
 * show max-value-size:                   Value Sizes.         (line  36)
 * show may-call-functions:               Calling.             (line  73)
 * show mem inaccessible-by-default:      Memory Region Attributes.
@@ -2592,7 +2602,7 @@ Command, Variable, and Function Index
                                                               (line 124)
 * show unwind-on-terminating-exception:  Calling.             (line  55)
 * show unwindonsignal:                   Calling.             (line  43)
-* show user:                             Define.              (line  84)
+* show user:                             Define.              (line 121)
 * show values:                           Value History.       (line  47)
 * show varsize-limit:                    Ada Settings.        (line  26)
 * show verbose:                          Messages/Warnings.   (line  21)
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.20191126/gdb/doc/gdbinit.5 ./gdb/doc/gdbinit.5
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/doc/gdbinit.5	2019-11-26 01:53:30.000000000 +0000
+++ ./gdb/doc/gdbinit.5	2019-12-03 01:53:52.000000000 +0000
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GDBINIT 5"
-.TH GDBINIT 5 "2019-11-26" "gdb-9.0.50.20191126-git" "GNU Development Tools"
+.TH GDBINIT 5 "2019-12-03" "gdb-9.0.50.20191203-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.20191126/gdb/doc/gdbserver.1 ./gdb/doc/gdbserver.1
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/doc/gdbserver.1	2019-11-26 01:53:29.000000000 +0000
+++ ./gdb/doc/gdbserver.1	2019-12-03 01:53:51.000000000 +0000
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GDBSERVER 1"
-.TH GDBSERVER 1 "2019-11-26" "gdb-9.0.50.20191126-git" "GNU Development Tools"
+.TH GDBSERVER 1 "2019-12-03" "gdb-9.0.50.20191203-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.20191126/gdb/doc/gdb.texinfo ./gdb/doc/gdb.texinfo
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/doc/gdb.texinfo	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/doc/gdb.texinfo	2019-12-03 01:49:15.000000000 +0000
@@ -25449,6 +25449,17 @@ the user attention to some specific part
 the command @command{apropos -v REGEXP} uses the highlight style to
 mark the documentation parts matching @var{regexp}.
 
+@item tui-border
+Control the styling of the TUI border.  Note that, unlike other
+styling options, only the color of the border can be controlled via
+@code{set style}.  This was done for compatibility reasons, as TUI
+controls to set the border's intensity predated the addition of
+general styling to @value{GDBN}.  @xref{TUI Configuration}.
+
+@item tui-active-border
+Control the styling of the active TUI border; that is, the TUI window
+that has the focus.
+
 @end table
 
 @node Numbers
@@ -26525,8 +26536,9 @@ end
 Define a command named @var{commandname}.  If there is already a command
 by that name, you are asked to confirm that you want to redefine it.
 The argument @var{commandname} may be a bare command name consisting of letters,
-numbers, dashes, and underscores.  It may also start with any predefined
-prefix command.  For example, @samp{define target my-target} creates
+numbers, dashes, dots, and underscores.  It may also start with any
+predefined or user-defined prefix command.
+For example, @samp{define target my-target} creates
 a user-defined @samp{target my-target} command.
 
 The definition of the command is made up of other @value{GDBN} command lines,
@@ -26547,6 +26559,46 @@ You may use the @code{document} command 
 documentation of a command.  Redefining the command with @code{define}
 does not change the documentation.
 
+@kindex define-prefix
+@item define-prefix @var{commandname}
+Define or mark the command @var{commandname} as a user-defined prefix
+command.  Once marked, @var{commandname} can be used as prefix command
+by the  @code{define} command.
+Note that @code{define-prefix} can be used with a not yet defined
+@var{commandname}.  In such a case, @var{commandname} is defined as
+an empty user-defined command.
+In case you redefine a command that was marked as a user-defined
+prefix command, the subcommands of the redefined command are kept
+(and @value{GDBN} indicates so to the user).
+
+Example:
+@example
+(gdb) define-prefix abc
+(gdb) define-prefix abc def
+(gdb) define abc def
+Type commands for definition of "abc def".
+End with a line saying just "end".
+>echo command initial def\n
+>end
+(gdb) define abc def ghi
+Type commands for definition of "abc def ghi".
+End with a line saying just "end".
+>echo command ghi\n
+>end
+(gdb) define abc def
+Keeping subcommands of prefix command "def".
+Redefine command "def"? (y or n) y
+Type commands for definition of "abc def".
+End with a line saying just "end".
+>echo command def\n
+>end
+(gdb) abc def ghi
+command ghi
+(gdb) abc def
+command def
+(gdb)
+@end example
+
 @kindex dont-repeat
 @cindex don't repeat command
 @item dont-repeat
@@ -27976,8 +28028,19 @@ Use extra bright or bold and standout mo
 Set the width of tab stops to be @var{nchars} characters.  This
 setting affects the display of TAB characters in the source and
 assembly windows.
+
+@item set tui compact-source @r{[}on@r{|}off@r{]}
+@kindex set tui compact-source
+Set whether the TUI source window is displayed in ``compact'' form.
+The default display uses more space for line numbers and starts the
+source text at the next tab stop; the compact display uses only as
+much space as is needed for the line numbers in the current file, and
+only a single space to separate the line numbers from the source.
 @end table
 
+Note that the colors of the TUI borders can be controlled using the
+appropriate @code{set style} commands.  @xref{Output Styling}.
+
 @node Emacs
 @chapter Using @value{GDBN} under @sc{gnu} Emacs
 
@@ -33887,27 +33950,337 @@ There's no equivalent @value{GDBN} comma
 
 @subsubheading Example
 N.A.
+@end ignore
+
+@subheading The @code{-symbol-info-functions} Command
+@findex -symbol-info-functions
+@anchor{-symbol-info-functions}
+
+@subsubheading Synopsis
+
+@smallexample
+ -symbol-info-functions [--include-nondebug]
+                        [--type @var{type_regexp}]
+                        [--name @var{name_regexp}]
+@end smallexample
+
+@noindent
+Return a list containing the names and types for all global functions
+taken from the debug information.  The functions are grouped by source
+file, and shown with the line number on which each function is
+defined.
 
+The @code{--include-nondebug} option causes the output to include
+code symbols from the symbol table.
+
+The options @code{--type} and @code{--name} allow the symbols returned
+to be filtered based on either the name of the function, or the type
+signature of the function.
+
+@subsubheading @value{GDBN} Command
+
+The corresponding @value{GDBN} command is @samp{info functions}.
+
+@subsubheading Example
+@smallexample
+@group
+(gdb)
+-symbol-info-functions
+^done,symbols=
+  @{debug=
+    [@{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+      symbols=[@{line="36", name="f4", type="void (int *)",
+                description="void f4(int *);"@},
+               @{line="42", name="main", type="int ()",
+                description="int main();"@},
+               @{line="30", name="f1", type="my_int_t (int, int)",
+                description="static my_int_t f1(int, int);"@}]@},
+     @{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+      symbols=[@{line="33", name="f2", type="float (another_float_t)",
+                description="float f2(another_float_t);"@},
+               @{line="39", name="f3", type="int (another_int_t)",
+                description="int f3(another_int_t);"@},
+               @{line="27", name="f1", type="another_float_t (int)",
+                description="static another_float_t f1(int);"@}]@}]@}
+@end group
+@group
+(gdb)
+-symbol-info-functions --name f1
+^done,symbols=
+  @{debug=
+    [@{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+      symbols=[@{line="30", name="f1", type="my_int_t (int, int)",
+                description="static my_int_t f1(int, int);"@}]@},
+     @{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+      symbols=[@{line="27", name="f1", type="another_float_t (int)",
+                description="static another_float_t f1(int);"@}]@}]@}
+@end group
+@group
+(gdb)
+-symbol-info-functions --type void
+^done,symbols=
+  @{debug=
+    [@{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+      symbols=[@{line="36", name="f4", type="void (int *)",
+                description="void f4(int *);"@}]@}]@}
+@end group
+@group
+(gdb)
+-symbol-info-functions --include-nondebug
+^done,symbols=
+  @{debug=
+    [@{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+      symbols=[@{line="36", name="f4", type="void (int *)",
+                description="void f4(int *);"@},
+               @{line="42", name="main", type="int ()",
+                description="int main();"@},
+               @{line="30", name="f1", type="my_int_t (int, int)",
+                description="static my_int_t f1(int, int);"@}]@},
+     @{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+      symbols=[@{line="33", name="f2", type="float (another_float_t)",
+                description="float f2(another_float_t);"@},
+               @{line="39", name="f3", type="int (another_int_t)",
+                description="int f3(another_int_t);"@},
+               @{line="27", name="f1", type="another_float_t (int)",
+                description="static another_float_t f1(int);"@}]@}],
+   nondebug=
+    [@{address="0x0000000000400398",name="_init"@},
+     @{address="0x00000000004003b0",name="_start"@},
+      ...
+    ]@}
+@end group
+@end smallexample
 
-@subheading The @code{-symbol-info-function} Command
-@findex -symbol-info-function
+@subheading The @code{-symbol-info-modules} Command
+@findex -symbol-info-modules
+@anchor{-symbol-info-modules}
 
 @subsubheading Synopsis
 
 @smallexample
- -symbol-info-function
+ -symbol-info-modules [--name @var{name_regexp}]
 @end smallexample
 
-Show which function the symbol lives in.
+@noindent
+Return a list containing the names of all known Fortran modules.  The
+modules are grouped by source file, and shown with the line number on
+which each modules is defined.
+
+The option @code{--name} allows the modules returned to be filtered
+based the name of the module.
 
 @subsubheading @value{GDBN} Command
 
-@samp{gdb_get_function} in @code{gdbtk}.
+The corresponding @value{GDBN} command is @samp{info modules}.
 
 @subsubheading Example
-N.A.
+@smallexample
+@group
+(gdb)
+-symbol-info-modules
+^done,symbols=
+  @{debug=
+    [@{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90",
+      symbols=[@{line="16",name="mod1"@},
+               @{line="22",name="mod2"@}]@},
+     @{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90",
+      symbols=[@{line="16",name="mod3"@},
+               @{line="22",name="modmany"@},
+               @{line="26",name="moduse"@}]@}]@}
+@end group
+@group
+(gdb)
+-symbol-info-modules --name mod[123]
+^done,symbols=
+  @{debug=
+    [@{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90",
+      symbols=[@{line="16",name="mod1"@},
+               @{line="22",name="mod2"@}]@},
+     @{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90",
+      symbols=[@{line="16",name="mod3"@}]@}]@}
+@end group
+@end smallexample
 
+@subheading The @code{-symbol-info-types} Command
+@findex -symbol-info-types
+@anchor{-symbol-info-types}
 
+@subsubheading Synopsis
+
+@smallexample
+ -symbol-info-types [--name @var{name_regexp}]
+@end smallexample
+
+@noindent
+Return a list of all defined types.  The types are grouped by source
+file, and shown with the line number on which each user defined type
+is defined.  Some base types are not defined in the source code but
+are added to the debug information by the compiler, for example
+@code{int}, @code{float}, etc.; these types do not have an associated
+line number.
+
+The option @code{--name} allows the list of types returned to be
+filtered by name.
+
+@subsubheading @value{GDBN} Command
+
+The corresponding @value{GDBN} command is @samp{info types}.
+
+@subsubheading Example
+@smallexample
+@group
+(gdb)
+-symbol-info-types
+^done,symbols=
+  @{debug=
+     [@{filename="gdb.mi/mi-sym-info-1.c",
+       fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+       symbols=[@{name="float"@},
+                @{name="int"@},
+                @{line="27",name="typedef int my_int_t;"@}]@},
+      @{filename="gdb.mi/mi-sym-info-2.c",
+       fullname="/project/gdb.mi/mi-sym-info-2.c",
+       symbols=[@{line="24",name="typedef float another_float_t;"@},
+                @{line="23",name="typedef int another_int_t;"@},
+                @{name="float"@},
+                @{name="int"@}]@}]@}
+@end group
+@group
+(gdb)
+-symbol-info-types --name _int_
+^done,symbols=
+  @{debug=
+     [@{filename="gdb.mi/mi-sym-info-1.c",
+       fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+       symbols=[@{line="27",name="typedef int my_int_t;"@}]@},
+      @{filename="gdb.mi/mi-sym-info-2.c",
+       fullname="/project/gdb.mi/mi-sym-info-2.c",
+       symbols=[@{line="23",name="typedef int another_int_t;"@}]@}]@}
+@end group
+@end smallexample
+
+@subheading The @code{-symbol-info-variables} Command
+@findex -symbol-info-variables
+@anchor{-symbol-info-variables}
+
+@subsubheading Synopsis
+
+@smallexample
+ -symbol-info-variables [--include-nondebug]
+                        [--type @var{type_regexp}]
+                        [--name @var{name_regexp}]
+@end smallexample
+
+@noindent
+Return a list containing the names and types for all global variables
+taken from the debug information.  The variables are grouped by source
+file, and shown with the line number on which each variable is
+defined.
+
+The @code{--include-nondebug} option causes the output to include
+data symbols from the symbol table.
+
+The options @code{--type} and @code{--name} allow the symbols returned
+to be filtered based on either the name of the variable, or the type
+of the variable.
+
+@subsubheading @value{GDBN} Command
+
+The corresponding @value{GDBN} command is @samp{info variables}.
+
+@subsubheading Example
+@smallexample
+@group
+(gdb)
+-symbol-info-variables
+^done,symbols=
+  @{debug=
+    [@{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+      symbols=[@{line="25",name="global_f1",type="float",
+                description="static float global_f1;"@},
+               @{line="24",name="global_i1",type="int",
+                description="static int global_i1;"@}]@},
+     @{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+      symbols=[@{line="21",name="global_f2",type="int",
+                description="int global_f2;"@},
+               @{line="20",name="global_i2",type="int",
+                description="int global_i2;"@},
+               @{line="19",name="global_f1",type="float",
+                description="static float global_f1;"@},
+               @{line="18",name="global_i1",type="int",
+                description="static int global_i1;"@}]@}]@}
+@end group
+@group
+(gdb)
+-symbol-info-variables --name f1
+^done,symbols=
+  @{debug=
+    [@{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+      symbols=[@{line="25",name="global_f1",type="float",
+                description="static float global_f1;"@}]@},
+     @{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+      symbols=[@{line="19",name="global_f1",type="float",
+                description="static float global_f1;"@}]@}]@}
+@end group
+@group
+(gdb)
+-symbol-info-variables --type float
+^done,symbols=
+  @{debug=
+    [@{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+      symbols=[@{line="25",name="global_f1",type="float",
+                description="static float global_f1;"@}]@},
+     @{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+      symbols=[@{line="19",name="global_f1",type="float",
+                description="static float global_f1;"@}]@}]@}
+@end group
+@group
+(gdb)
+-symbol-info-variables --include-nondebug
+^done,symbols=
+  @{debug=
+    [@{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c",
+      symbols=[@{line="25",name="global_f1",type="float",
+                description="static float global_f1;"@},
+               @{line="24",name="global_i1",type="int",
+                description="static int global_i1;"@}]@},
+     @{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+      fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c",
+      symbols=[@{line="21",name="global_f2",type="int",
+                description="int global_f2;"@},
+               @{line="20",name="global_i2",type="int",
+                description="int global_i2;"@},
+               @{line="19",name="global_f1",type="float",
+                description="static float global_f1;"@},
+               @{line="18",name="global_i1",type="int",
+                description="static int global_i1;"@}]@}],
+   nondebug=
+    [@{address="0x00000000004005d0",name="_IO_stdin_used"@},
+     @{address="0x00000000004005d8",name="__dso_handle"@}
+      ...
+    ]@}
+@end group
+@end smallexample
+
+@ignore
 @subheading The @code{-symbol-info-line} Command
 @findex -symbol-info-line
 
@@ -37876,6 +38249,21 @@ with the DWARF frame unwinders enabled.
 
 If DWARF frame unwinders are not supported for a particular target
 architecture, then enabling this flag does not cause them to be used.
+
+@kindex maint set worker-threads
+@kindex maint show worker-threads
+@item maint set worker-threads
+@item maint show worker-threads
+Control the number of worker threads that may be used by @value{GDBN}.
+On capable hosts, @value{GDBN} may use multiple threads to speed up
+certain CPU-intensive operations, such as demangling symbol names.
+While the number of threads used by @value{GDBN} may vary, this
+command can be used to set an upper bound on this number.  The default
+is @code{unlimited}, which lets @value{GDBN} choose a reasonable
+number.  Note that this only controls worker threads started by
+@value{GDBN} itself; libraries used by @value{GDBN} may start threads
+of their own.
+
 @kindex maint set profile
 @kindex maint show profile
 @cindex profiling 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.20191126/gdb/dwarf2read.c ./gdb/dwarf2read.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/dwarf2read.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/dwarf2read.c	2019-12-03 01:49:15.000000000 +0000
@@ -1910,6 +1910,9 @@ static void process_queue (struct dwarf2
 static struct type *dwarf2_per_cu_addr_type (struct dwarf2_per_cu_data *per_cu);
 static struct type *dwarf2_per_cu_addr_sized_int_type
 	(struct dwarf2_per_cu_data *per_cu, bool unsigned_p);
+static struct type *dwarf2_per_cu_int_type
+	(struct dwarf2_per_cu_data *per_cu, int size_in_bytes,
+	 bool unsigned_p);
 
 /* Class, the destructor of which frees all allocated queue entries.  This
    will only have work to do if an error was thrown while processing the
@@ -13697,6 +13700,9 @@ inherit_abstract_dies (struct die_info *
       origin_child_die = sibling_die (origin_child_die);
     }
   origin_cu->list_in_scope = origin_previous_list_in_scope;
+
+  if (cu != origin_cu)
+    compute_delayed_physnames (origin_cu);
 }
 
 static void
@@ -15249,13 +15255,18 @@ dwarf2_add_field (struct field_info *fip
 
       /* Normally a DW_TAG_variant_part won't have a size, but our
 	 representation requires one, so set it to the maximum of the
-	 child sizes.  */
+	 child sizes, being sure to account for the offset at which
+	 each child is seen.  */
       if (TYPE_LENGTH (fp->type) == 0)
 	{
 	  unsigned max = 0;
 	  for (int i = 0; i < TYPE_NFIELDS (fp->type); ++i)
-	    if (TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)) > max)
-	      max = TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i));
+	    {
+	      unsigned len = ((TYPE_FIELD_BITPOS (fp->type, i) + 7) / 8
+			      + TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)));
+	      if (len > max)
+		max = len;
+	    }
 	  TYPE_LENGTH (fp->type) = max;
 	}
     }
@@ -17312,29 +17323,90 @@ read_tag_string_type (struct die_info *d
   struct gdbarch *gdbarch = get_objfile_arch (objfile);
   struct type *type, *range_type, *index_type, *char_type;
   struct attribute *attr;
-  unsigned int length;
+  struct dynamic_prop prop;
+  bool length_is_constant = true;
+  LONGEST length;
+
+  /* There are a couple of places where bit sizes might be made use of
+     when parsing a DW_TAG_string_type, however, no producer that we know
+     of make use of these.  Handling bit sizes that are a multiple of the
+     byte size is easy enough, but what about other bit sizes?  Lets deal
+     with that problem when we have to.  Warn about these attributes being
+     unsupported, then parse the type and ignore them like we always
+     have.  */
+  if (dwarf2_attr (die, DW_AT_bit_size, cu) != nullptr
+      || dwarf2_attr (die, DW_AT_string_length_bit_size, cu) != nullptr)
+    {
+      static bool warning_printed = false;
+      if (!warning_printed)
+	{
+	  warning (_("DW_AT_bit_size and DW_AT_string_length_bit_size not "
+		     "currently supported on DW_TAG_string_type."));
+	  warning_printed = true;
+	}
+    }
 
   attr = dwarf2_attr (die, DW_AT_string_length, cu);
-  if (attr != nullptr)
+  if (attr != nullptr && !attr_form_is_constant (attr))
+    {
+      /* The string length describes the location at which the length of
+	 the string can be found.  The size of the length field can be
+	 specified with one of the attributes below.  */
+      struct type *prop_type;
+      struct attribute *len
+	= dwarf2_attr (die, DW_AT_string_length_byte_size, cu);
+      if (len == nullptr)
+	len = dwarf2_attr (die, DW_AT_byte_size, cu);
+      if (len != nullptr && attr_form_is_constant (len))
+	{
+	  /* Pass 0 as the default as we know this attribute is constant
+	     and the default value will not be returned.  */
+	  LONGEST sz = dwarf2_get_attr_constant_value (len, 0);
+	  prop_type = dwarf2_per_cu_int_type (cu->per_cu, sz, true);
+	}
+      else
+	{
+	  /* If the size is not specified then we assume it is the size of
+	     an address on this target.  */
+	  prop_type = dwarf2_per_cu_addr_sized_int_type (cu->per_cu, true);
+	}
+
+      /* Convert the attribute into a dynamic property.  */
+      if (!attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
+	length = 1;
+      else
+	length_is_constant = false;
+    }
+  else if (attr != nullptr)
+    {
+      /* This DW_AT_string_length just contains the length with no
+	 indirection.  There's no need to create a dynamic property in this
+	 case.  Pass 0 for the default value as we know it will not be
+	 returned in this case.  */
+      length = dwarf2_get_attr_constant_value (attr, 0);
+    }
+  else if ((attr = dwarf2_attr (die, DW_AT_byte_size, cu)) != nullptr)
     {
-      length = DW_UNSND (attr);
+      /* We don't currently support non-constant byte sizes for strings.  */
+      length = dwarf2_get_attr_constant_value (attr, 1);
     }
   else
     {
-      /* Check for the DW_AT_byte_size attribute.  */
-      attr = dwarf2_attr (die, DW_AT_byte_size, cu);
-      if (attr != nullptr)
-        {
-          length = DW_UNSND (attr);
-        }
-      else
-        {
-          length = 1;
-        }
+      /* Use 1 as a fallback length if we have nothing else.  */
+      length = 1;
     }
 
   index_type = objfile_type (objfile)->builtin_int;
-  range_type = create_static_range_type (NULL, index_type, 1, length);
+  if (length_is_constant)
+    range_type = create_static_range_type (NULL, index_type, 1, length);
+  else
+    {
+      struct dynamic_prop low_bound;
+
+      low_bound.kind = PROP_CONST;
+      low_bound.data.const_val = 1;
+      range_type = create_range_type (NULL, index_type, &low_bound, &prop, 0);
+    }
   char_type = language_string_char_type (cu->language_defn, gdbarch);
   type = create_string_type (NULL, char_type, range_type);
 
@@ -17795,7 +17867,15 @@ attr_to_dynamic_prop (const struct attri
       baton->locexpr.per_cu = cu->per_cu;
       baton->locexpr.size = DW_BLOCK (attr)->size;
       baton->locexpr.data = DW_BLOCK (attr)->data;
-      baton->locexpr.is_reference = false;
+      switch (attr->name)
+	{
+	case DW_AT_string_length:
+	  baton->locexpr.is_reference = true;
+	  break;
+	default:
+	  baton->locexpr.is_reference = false;
+	  break;
+	}
       prop->data.baton = baton;
       prop->kind = PROP_LOCEXPR;
       gdb_assert (prop->data.baton != NULL);
@@ -17879,24 +17959,22 @@ attr_to_dynamic_prop (const struct attri
   return 1;
 }
 
-/* Find an integer type the same size as the address size given in the
-   compilation unit header for PER_CU.  UNSIGNED_P controls if the integer
-   is unsigned or not.  */
+/* Find an integer type SIZE_IN_BYTES bytes in size and return it.
+   UNSIGNED_P controls if the integer is unsigned or not.  */
 
 static struct type *
-dwarf2_per_cu_addr_sized_int_type (struct dwarf2_per_cu_data *per_cu,
-				   bool unsigned_p)
+dwarf2_per_cu_int_type (struct dwarf2_per_cu_data *per_cu,
+			int size_in_bytes, bool unsigned_p)
 {
   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
-  int addr_size = dwarf2_per_cu_addr_size (per_cu);
   struct type *int_type;
 
   /* Helper macro to examine the various builtin types.  */
-#define TRY_TYPE(F)						\
-  int_type = (unsigned_p					\
-	      ? objfile_type (objfile)->builtin_unsigned_ ## F	\
-	      : objfile_type (objfile)->builtin_ ## F);		\
-  if (int_type != NULL && TYPE_LENGTH (int_type) == addr_size)	\
+#define TRY_TYPE(F)							\
+  int_type = (unsigned_p						\
+	      ? objfile_type (objfile)->builtin_unsigned_ ## F		\
+	      : objfile_type (objfile)->builtin_ ## F);			\
+  if (int_type != NULL && TYPE_LENGTH (int_type) == size_in_bytes)	\
     return int_type
 
   TRY_TYPE (char);
@@ -17910,6 +17988,18 @@ dwarf2_per_cu_addr_sized_int_type (struc
   gdb_assert_not_reached ("unable to find suitable integer type");
 }
 
+/* Find an integer type the same size as the address size given in the
+   compilation unit header for PER_CU.  UNSIGNED_P controls if the integer
+   is unsigned or not.  */
+
+static struct type *
+dwarf2_per_cu_addr_sized_int_type (struct dwarf2_per_cu_data *per_cu,
+				   bool unsigned_p)
+{
+  int addr_size = dwarf2_per_cu_addr_size (per_cu);
+  return dwarf2_per_cu_int_type (per_cu, addr_size, unsigned_p);
+}
+
 /* Read the DW_AT_type attribute for a sub-range.  If this attribute is not
    present (which is valid) then compute the default type based on the
    compilation units address size.  */
@@ -18057,7 +18147,52 @@ read_subrange_type (struct die_info *die
       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
     high.data.const_val |= negative_mask;
 
-  range_type = create_range_type (NULL, orig_base_type, &low, &high, bias);
+  /* Check for bit and byte strides.  */
+  struct dynamic_prop byte_stride_prop;
+  attribute *attr_byte_stride = dwarf2_attr (die, DW_AT_byte_stride, cu);
+  if (attr_byte_stride != nullptr)
+    {
+      struct type *prop_type
+	= dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
+      attr_to_dynamic_prop (attr_byte_stride, die, cu, &byte_stride_prop,
+			    prop_type);
+    }
+
+  struct dynamic_prop bit_stride_prop;
+  attribute *attr_bit_stride = dwarf2_attr (die, DW_AT_bit_stride, cu);
+  if (attr_bit_stride != nullptr)
+    {
+      /* It only makes sense to have either a bit or byte stride.  */
+      if (attr_byte_stride != nullptr)
+	{
+	  complaint (_("Found DW_AT_bit_stride and DW_AT_byte_stride "
+		       "- DIE at %s [in module %s]"),
+		     sect_offset_str (die->sect_off),
+		     objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
+	  attr_bit_stride = nullptr;
+	}
+      else
+	{
+	  struct type *prop_type
+	    = dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
+	  attr_to_dynamic_prop (attr_bit_stride, die, cu, &bit_stride_prop,
+				prop_type);
+	}
+    }
+
+  if (attr_byte_stride != nullptr
+      || attr_bit_stride != nullptr)
+    {
+      bool byte_stride_p = (attr_byte_stride != nullptr);
+      struct dynamic_prop *stride
+	= byte_stride_p ? &byte_stride_prop : &bit_stride_prop;
+
+      range_type
+	= create_range_type_with_stride (NULL, orig_base_type, &low,
+					 &high, bias, stride, byte_stride_p);
+    }
+  else
+    range_type = create_range_type (NULL, orig_base_type, &low, &high, bias);
 
   if (high_bound_is_count)
     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
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.20191126/gdb/dwarf2read.h ./gdb/dwarf2read.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/dwarf2read.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/dwarf2read.h	2019-12-03 01:49:15.000000000 +0000
@@ -259,8 +259,8 @@ public:
 
   /* Mapping from abstract origin DIE to concrete DIEs that reference it as
      DW_AT_abstract_origin.  */
-  std::unordered_map<sect_offset, std::vector<sect_offset>, \
-		     gdb::hash_enum<sect_offset>> \
+  std::unordered_map<sect_offset, std::vector<sect_offset>,
+		     gdb::hash_enum<sect_offset>>
     abstract_to_concrete;
 };
 
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.20191126/gdb/dwarf-index-write.c ./gdb/dwarf-index-write.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/dwarf-index-write.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/dwarf-index-write.c	2019-12-03 01:49:15.000000000 +0000
@@ -19,6 +19,8 @@
 
 #include "defs.h"
 
+#include "dwarf-index-write.h"
+
 #include "addrmap.h"
 #include "cli/cli-decode.h"
 #include "gdbsupport/byte-vector.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.20191126/gdb/event-top.c ./gdb/event-top.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/event-top.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/event-top.c	2019-12-03 01:49:15.000000000 +0000
@@ -40,6 +40,7 @@
 #include "gdbsupport/buffer.h"
 #include "ser-event.h"
 #include "gdb_select.h"
+#include "gdbsupport/gdb-sigmask.h"
 
 /* readline include files.  */
 #include "readline/readline.h"
@@ -847,6 +848,45 @@ gdb_readline_no_editing_callback (gdb_cl
 }
 
 
+/* See event-top.h.  */
+
+thread_local void (*thread_local_segv_handler) (int);
+
+static void handle_sigsegv (int sig);
+
+/* Install the SIGSEGV handler.  */
+static void
+install_handle_sigsegv ()
+{
+#if defined (HAVE_SIGACTION)
+  struct sigaction sa;
+  sa.sa_handler = handle_sigsegv;
+  sigemptyset (&sa.sa_mask);
+#ifdef HAVE_SIGALTSTACK
+  sa.sa_flags = SA_ONSTACK;
+#else
+  sa.sa_flags = 0;
+#endif
+  sigaction (SIGSEGV, &sa, nullptr);
+#else
+  signal (SIGSEGV, handle_sigsegv);
+#endif
+}
+
+/* Handler for SIGSEGV.  */
+
+static void
+handle_sigsegv (int sig)
+{
+  install_handle_sigsegv ();
+
+  if (thread_local_segv_handler == nullptr)
+    abort ();
+  thread_local_segv_handler (sig);
+}
+
+
+
 /* The serial event associated with the QUIT flag.  set_quit_flag sets
    this, and check_quit_flag clears it.  Used by interruptible_select
    to be able to do interruptible I/O with no race with the SIGINT
@@ -914,6 +954,8 @@ async_init_signals (void)
   sigtstp_token =
     create_async_signal_handler (async_sigtstp_handler, NULL);
 #endif
+
+  install_handle_sigsegv ();
 }
 
 /* See defs.h.  */
@@ -1127,7 +1169,7 @@ async_sigtstp_handler (gdb_client_data a
     sigset_t zero;
 
     sigemptyset (&zero);
-    sigprocmask (SIG_SETMASK, &zero, 0);
+    gdb_sigmask (SIG_SETMASK, &zero, 0);
   }
 #elif HAVE_SIGSETMASK
   sigsetmask (0);
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.20191126/gdb/event-top.h ./gdb/event-top.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/event-top.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/event-top.h	2019-12-03 01:49:15.000000000 +0000
@@ -70,4 +70,10 @@ extern void gdb_rl_callback_handler_inst
    currently installed.  */
 extern void gdb_rl_callback_handler_reinstall (void);
 
+/* The SIGSEGV handler for this thread, or NULL if there is none.  GDB
+   always installs a global SIGSEGV handler, and then lets threads
+   indicate their interest in handling the signal by setting this
+   thread-local variable.  */
+extern thread_local void (*thread_local_segv_handler) (int);
+
 #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.20191126/gdb/f-lang.c ./gdb/f-lang.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/f-lang.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/f-lang.c	2019-12-03 01:49:15.000000000 +0000
@@ -243,7 +243,8 @@ f_collect_symbol_completion_matches (com
 }
 
 /* Special expression evaluation cases for Fortran.  */
-struct value *
+
+static struct value *
 evaluate_subexp_f (struct type *expect_type, struct expression *exp,
 		   int *pos, enum noside noside)
 {
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.20191126/gdb/f-valprint.c ./gdb/f-valprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/f-valprint.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/f-valprint.c	2019-12-03 01:49:15.000000000 +0000
@@ -34,6 +34,7 @@
 #include "block.h"
 #include "dictionary.h"
 #include "cli/cli-style.h"
+#include "gdbarch.h"
 
 static void f77_get_dynamic_length_of_aggregate (struct type *);
 
@@ -120,7 +121,12 @@ f77_print_array_1 (int nss, int ndimensi
 
   if (nss != ndimensions)
     {
-      size_t dim_size = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
+      struct gdbarch *gdbarch = get_type_arch (type);
+      size_t dim_size = type_length_units (TYPE_TARGET_TYPE (type));
+      int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
+      size_t byte_stride = TYPE_ARRAY_BIT_STRIDE (type) / (unit_size * 8);
+      if (byte_stride == 0)
+	byte_stride = dim_size;
       size_t offs = 0;
 
       for (i = lowerbound;
@@ -137,7 +143,7 @@ f77_print_array_1 (int nss, int ndimensi
 			     value_embedded_offset (subarray),
 			     value_address (subarray),
 			     stream, recurse, subarray, options, elts);
-	  offs += dim_size;
+	  offs += byte_stride;
 	  fprintf_filtered (stream, ") ");
 	}
       if (*elts >= options->print_max && i < upperbound)
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.20191126/gdb/gdbserver/acinclude.m4 ./gdb/gdbserver/acinclude.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbserver/acinclude.m4	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/gdbserver/acinclude.m4	2019-12-03 01:49:15.000000000 +0000
@@ -31,6 +31,8 @@ m4_include(../ax_cxx_compile_stdcxx.m4)
 dnl For GDB_AC_SELFTEST.
 m4_include(../selftest.m4)
 
+m4_include([../../config/ax_pthread.m4])
+
 dnl Check for existence of a type $1 in libthread_db.h
 dnl Based on BFD_HAVE_SYS_PROCFS_TYPE in bfd/bfd.m4.
 
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.20191126/gdb/gdbserver/ChangeLog ./gdb/gdbserver/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbserver/ChangeLog	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/gdbserver/ChangeLog	2019-12-03 01:49:15.000000000 +0000
@@ -1,7 +1,40 @@
-2019-11-22  Tom Tromey  <tromey@adacore.com>
+2019-11-26  Tom Tromey  <tom@tromey.com>
 
-	* gdb.ada/tasks.exp: Add -ada-task-info regression test.
-	* gdb.ada/tasks/foo.adb: Add another stopping location.
+	* configure, config.in: Rebuild.
+
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* remote-utils.c (block_unblock_async_io): Use gdb_sigmask.
+	* linux-low.c (linux_wait_for_event_filtered, linux_async): Use
+	gdb_sigmask.
+	* configure, config.in: Rebuild.
+
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* Makefile.in (PTHREAD_CFLAGS, PTHREAD_LIBS): New variables.
+	(INTERNAL_CFLAGS_BASE): Use PTHREAD_CFLAGS.
+	(GDBSERVER_LIBS): Use PTHREAD_LIBS.
+	* acinclude.m4: Include ax_pthread.m4.
+	* config.in, configure: Rebuild.
+
+2019-11-26  Christian Biesinger  <cbiesinger@google.com>
+
+	* debug.c (debug_set_output): Call safe_strerror instead of
+	strerror.
+	* linux-low.c (attach_proc_task_lwp_callback): Likewise.
+	(linux_kill_one_lwp): Likewise.
+	(linux_detach_one_lwp): Likewise.
+	(linux_wait_for_event_filtered): Likewise.
+	(store_register): Likewise.
+	* lynx-low.c (lynx_attach): Likewise.
+	* mem-break.c (insert_memory_breakpoint): Likewise.
+	(remove_memory_breakpoint): Likewise.
+	(delete_fast_tracepoint_jump): Likewise.
+	(set_fast_tracepoint_jump): Likewise.
+	(uninsert_fast_tracepoint_jumps_at): Likewise.
+	(reinsert_fast_tracepoint_jumps_at): Likewise.
+	* nto-low.c (nto_xfer_memory): Likewise.
+	(nto_resume): Likewise.
 
 2019-11-20  Luis Machado  <luis.machado@linaro.org>
 
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.20191126/gdb/gdbserver/config.in ./gdb/gdbserver/config.in
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbserver/config.in	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/gdbserver/config.in	2019-12-03 01:49:15.000000000 +0000
@@ -5,6 +5,9 @@
    */
 #undef CRAY_STACKSEG_END
 
+/* Define to 1 if std::thread works. */
+#undef CXX_STD_THREAD
+
 /* Define to 1 if using `alloca.c'. */
 #undef C_ALLOCA
 
@@ -189,6 +192,15 @@
 /* Define if <thread_db.h> has psaddr_t. */
 #undef HAVE_PSADDR_T
 
+/* Have PTHREAD_PRIO_INHERIT. */
+#undef HAVE_PTHREAD_PRIO_INHERIT
+
+/* Define to 1 if you have the `pthread_setname_np' function. */
+#undef HAVE_PTHREAD_SETNAME_NP
+
+/* Define to 1 if you have the `pthread_sigmask' function. */
+#undef HAVE_PTHREAD_SIGMASK
+
 /* Define if the target supports PTRACE_GETFPXREGS for extended register
    access. */
 #undef HAVE_PTRACE_GETFPXREGS
@@ -334,6 +346,10 @@
 /* Additional package description */
 #undef PKGVERSION
 
+/* Define to necessary symbol if this constant uses a non-standard name on
+   your system. */
+#undef PTHREAD_CREATE_JOINABLE
+
 /* Define to the type of arg 1 for ptrace. */
 #undef PTRACE_TYPE_ARG1
 
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.20191126/gdb/gdbserver/configure ./gdb/gdbserver/configure
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbserver/configure	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/gdbserver/configure	2019-12-03 01:49:15.000000000 +0000
@@ -636,6 +636,11 @@ WERROR_CFLAGS
 WARN_CFLAGS
 ustinc
 ustlibs
+PTHREAD_CFLAGS
+PTHREAD_LIBS
+PTHREAD_CC
+ax_pthread_config
+SED
 ALLOCA
 CCDEPMODE
 CONFIG_SRC_SUBDIR
@@ -1967,6 +1972,119 @@ eval ac_res=\$$3
 
 } # ac_fn_c_check_decl
 
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_link
+
+# ac_fn_cxx_check_func LINENO FUNC VAR
+# ------------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_cxx_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_func
+
 # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
 # --------------------------------------------
 # Tries to find the compile-time value of EXPR in a program that includes
@@ -6472,6 +6590,75 @@ _ACEOF
 
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
@@ -6857,6 +7044,715 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
+  # Check for std::thread.  This does not work on some platforms, like
+  # mingw and DJGPP.
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ax_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on Tru64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
+        ax_pthread_save_CC="$CC"
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        if test "x$PTHREAD_CC" != "x"; then :
+  CC="$PTHREAD_CC"
+fi
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5
+$as_echo_n "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; }
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_join ();
+int
+main ()
+{
+return pthread_join ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_pthread_ok=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+$as_echo "$ax_pthread_ok" >&6; }
+        if test "x$ax_pthread_ok" = "xno"; then
+                PTHREAD_LIBS=""
+                PTHREAD_CFLAGS=""
+        fi
+        CC="$ax_pthread_save_CC"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
+fi
+
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
+
+# Create a list of thread flags to try.  Items starting with a "-" are
+# C compiler flags, and other items are library names, except for "none"
+# which indicates that we try without any flags at all, and "pthread-config"
+# which is a program returning the flags for the Pth emulation library.
+
+ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important.  Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+#       other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
+#           (Note: HP C rejects this with "bad form for `-t' option")
+# -pthreads: Solaris/gcc (Note: HP C also rejects)
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+#      doesn't hurt to check since this sometimes defines pthreads and
+#      -D_REENTRANT too), HP C (must be checked before -lpthread, which
+#      is present but should not be used directly; and before -mthreads,
+#      because the compiler interprets this as "-mt" + "-hreads")
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case $host_os in
+
+        freebsd*)
+
+        # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+        # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+
+        ax_pthread_flags="-kthread lthread $ax_pthread_flags"
+        ;;
+
+        hpux*)
+
+        # From the cc(1) man page: "[-mt] Sets various -D flags to enable
+        # multi-threading and also sets -lpthread."
+
+        ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
+        ;;
+
+        openedition*)
+
+        # IBM z/OS requires a feature-test macro to be defined in order to
+        # enable POSIX threads at all, so give the user a hint if this is
+        # not set. (We don't define these ourselves, as they can affect
+        # other portions of the system API in unpredictable ways.)
+
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#            if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
+             AX_PTHREAD_ZOS_MISSING
+#            endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5
+$as_echo "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;}
+fi
+rm -f conftest*
+
+        ;;
+
+        solaris*)
+
+        # On Solaris (at least, for some versions), libc contains stubbed
+        # (non-functional) versions of the pthreads routines, so link-based
+        # tests will erroneously succeed. (N.B.: The stubs are missing
+        # pthread_cleanup_push, or rather a function called by this macro,
+        # so we could check for that, but who knows whether they'll stub
+        # that too in a future libc.)  So we'll check first for the
+        # standard Solaris way of linking pthreads (-mt -lpthread).
+
+        ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
+        ;;
+esac
+
+# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
+
+if test "x$GCC" = "xyes"; then :
+  ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"
+fi
+
+# The presence of a feature test macro requesting re-entrant function
+# definitions is, on some systems, a strong hint that pthreads support is
+# correctly enabled
+
+case $host_os in
+        darwin* | hpux* | linux* | osf* | solaris*)
+        ax_pthread_check_macro="_REENTRANT"
+        ;;
+
+        aix*)
+        ax_pthread_check_macro="_THREAD_SAFE"
+        ;;
+
+        *)
+        ax_pthread_check_macro="--"
+        ;;
+esac
+if test "x$ax_pthread_check_macro" = "x--"; then :
+  ax_pthread_check_cond=0
+else
+  ax_pthread_check_cond="!defined($ax_pthread_check_macro)"
+fi
+
+# Are we compiling with Clang?
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5
+$as_echo_n "checking whether $CC is Clang... " >&6; }
+if ${ax_cv_PTHREAD_CLANG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_PTHREAD_CLANG=no
+     # Note that Autoconf sets GCC=yes for Clang as well as GCC
+     if test "x$GCC" = "xyes"; then
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
+#            if defined(__clang__) && defined(__llvm__)
+             AX_PTHREAD_CC_IS_CLANG
+#            endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1; then :
+  ax_cv_PTHREAD_CLANG=yes
+fi
+rm -f conftest*
+
+     fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5
+$as_echo "$ax_cv_PTHREAD_CLANG" >&6; }
+ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
+
+ax_pthread_clang_warning=no
+
+# Clang needs special handling, because older versions handle the -pthread
+# option in a rather... idiosyncratic way
+
+if test "x$ax_pthread_clang" = "xyes"; then
+
+        # Clang takes -pthread; it has never supported any other flag
+
+        # (Note 1: This will need to be revisited if a system that Clang
+        # supports has POSIX threads in a separate library.  This tends not
+        # to be the way of modern systems, but it's conceivable.)
+
+        # (Note 2: On some systems, notably Darwin, -pthread is not needed
+        # to get POSIX threads support; the API is always present and
+        # active.  We could reasonably leave PTHREAD_CFLAGS empty.  But
+        # -pthread does define _REENTRANT, and while the Darwin headers
+        # ignore this macro, third-party headers might not.)
+
+        PTHREAD_CFLAGS="-pthread"
+        PTHREAD_LIBS=
+
+        ax_pthread_ok=yes
+
+        # However, older versions of Clang make a point of warning the user
+        # that, in an invocation where only linking and no compilation is
+        # taking place, the -pthread option has no effect ("argument unused
+        # during compilation").  They expect -pthread to be passed in only
+        # when source code is being compiled.
+        #
+        # Problem is, this is at odds with the way Automake and most other
+        # C build frameworks function, which is that the same flags used in
+        # compilation (CFLAGS) are also used in linking.  Many systems
+        # supported by AX_PTHREAD require exactly this for POSIX threads
+        # support, and in fact it is often not straightforward to specify a
+        # flag that is used only in the compilation phase and not in
+        # linking.  Such a scenario is extremely rare in practice.
+        #
+        # Even though use of the -pthread flag in linking would only print
+        # a warning, this can be a nuisance for well-run software projects
+        # that build with -Werror.  So if the active version of Clang has
+        # this misfeature, we search for an option to squash it.
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5
+$as_echo_n "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; }
+if ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
+             # Create an alternate version of $ac_link that compiles and
+             # links in two steps (.c -> .o, .o -> exe) instead of one
+             # (.c -> exe), because the warning occurs only in the second
+             # step
+             ax_pthread_save_ac_link="$ac_link"
+             ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
+             ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
+             ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
+             ax_pthread_save_CFLAGS="$CFLAGS"
+             for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
+                if test "x$ax_pthread_try" = "xunknown"; then :
+  break
+fi
+                CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
+                ac_link="$ax_pthread_save_ac_link"
+                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main(void){return 0;}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_link="$ax_pthread_2step_ac_link"
+                     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main(void){return 0;}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+             done
+             ac_link="$ax_pthread_save_ac_link"
+             CFLAGS="$ax_pthread_save_CFLAGS"
+             if test "x$ax_pthread_try" = "x"; then :
+  ax_pthread_try=no
+fi
+             ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5
+$as_echo "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; }
+
+        case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
+                no | unknown) ;;
+                *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
+        esac
+
+fi # $ax_pthread_clang = yes
+
+if test "x$ax_pthread_ok" = "xno"; then
+for ax_pthread_try_flag in $ax_pthread_flags; do
+
+        case $ax_pthread_try_flag in
+                none)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5
+$as_echo_n "checking whether pthreads work without any flags... " >&6; }
+                ;;
+
+                -mt,pthread)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with -mt -lpthread" >&5
+$as_echo_n "checking whether pthreads work with -mt -lpthread... " >&6; }
+                PTHREAD_CFLAGS="-mt"
+                PTHREAD_LIBS="-lpthread"
+                ;;
+
+                -*)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5
+$as_echo_n "checking whether pthreads work with $ax_pthread_try_flag... " >&6; }
+                PTHREAD_CFLAGS="$ax_pthread_try_flag"
+                ;;
+
+                pthread-config)
+                # Extract the first word of "pthread-config", so it can be a program name with args.
+set dummy pthread-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ax_pthread_config+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ax_pthread_config"; then
+  ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ax_pthread_config="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no"
+fi
+fi
+ax_pthread_config=$ac_cv_prog_ax_pthread_config
+if test -n "$ax_pthread_config"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5
+$as_echo "$ax_pthread_config" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+                if test "x$ax_pthread_config" = "xno"; then :
+  continue
+fi
+                PTHREAD_CFLAGS="`pthread-config --cflags`"
+                PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+                ;;
+
+                *)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5
+$as_echo_n "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; }
+                PTHREAD_LIBS="-l$ax_pthread_try_flag"
+                ;;
+        esac
+
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+
+        # Check for various functions.  We must include pthread.h,
+        # since some functions may be macros.  (On the Sequent, we
+        # need a special flag -Kthread to make this header compile.)
+        # We check for pthread_join because it is in -lpthread on IRIX
+        # while pthread_create is in libc.  We check for pthread_attr_init
+        # due to DEC craziness with -lpthreads.  We check for
+        # pthread_cleanup_push because it is one of the few pthread
+        # functions on Solaris that doesn't have a non-functional libc stub.
+        # We try pthread_create on general principles.
+
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+#                       if $ax_pthread_check_cond
+#                        error "$ax_pthread_check_macro must be defined"
+#                       endif
+                        static void routine(void *a) { a = 0; }
+                        static void *start_routine(void *a) { return a; }
+int
+main ()
+{
+pthread_t th; pthread_attr_t attr;
+                        pthread_create(&th, 0, start_routine, 0);
+                        pthread_join(th, 0);
+                        pthread_attr_init(&attr);
+                        pthread_cleanup_push(routine, 0);
+                        pthread_cleanup_pop(0) /* ; */
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_pthread_ok=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+$as_echo "$ax_pthread_ok" >&6; }
+        if test "x$ax_pthread_ok" = "xyes"; then :
+  break
+fi
+
+        PTHREAD_LIBS=""
+        PTHREAD_CFLAGS=""
+done
+fi
+
+# Various other checks:
+if test "x$ax_pthread_ok" = "xyes"; then
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+
+        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5
+$as_echo_n "checking for joinable pthread attribute... " >&6; }
+if ${ax_cv_PTHREAD_JOINABLE_ATTR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_PTHREAD_JOINABLE_ATTR=unknown
+             for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+                 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+int
+main ()
+{
+int attr = $ax_pthread_attr; return attr /* ; */
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+             done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5
+$as_echo "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; }
+        if test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
+               test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
+               test "x$ax_pthread_joinable_attr_defined" != "xyes"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR
+_ACEOF
+
+               ax_pthread_joinable_attr_defined=yes
+
+fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5
+$as_echo_n "checking whether more special flags are required for pthreads... " >&6; }
+if ${ax_cv_PTHREAD_SPECIAL_FLAGS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_PTHREAD_SPECIAL_FLAGS=no
+             case $host_os in
+             solaris*)
+             ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
+             ;;
+             esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5
+$as_echo "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; }
+        if test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
+               test "x$ax_pthread_special_flags_added" != "xyes"; then :
+  PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
+               ax_pthread_special_flags_added=yes
+fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5
+$as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; }
+if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+int
+main ()
+{
+int i = PTHREAD_PRIO_INHERIT;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_cv_PTHREAD_PRIO_INHERIT=yes
+else
+  ax_cv_PTHREAD_PRIO_INHERIT=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5
+$as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; }
+        if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
+               test "x$ax_pthread_prio_inherit_defined" != "xyes"; then :
+
+$as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h
+
+               ax_pthread_prio_inherit_defined=yes
+
+fi
+
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
+
+        # More AIX lossage: compile with *_r variant
+        if test "x$GCC" != "xyes"; then
+            case $host_os in
+                aix*)
+                case "x/$CC" in #(
+  x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6) :
+    #handle absolute path differently from PATH based program lookup
+                     case "x$CC" in #(
+  x/*) :
+    if as_fn_executable_p ${CC}_r; then :
+  PTHREAD_CC="${CC}_r"
+fi ;; #(
+  *) :
+    for ac_prog in ${CC}_r
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PTHREAD_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PTHREAD_CC"; then
+  ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_PTHREAD_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+PTHREAD_CC=$ac_cv_prog_PTHREAD_CC
+if test -n "$PTHREAD_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5
+$as_echo "$PTHREAD_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$PTHREAD_CC" && break
+done
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+ ;;
+esac ;; #(
+  *) :
+     ;;
+esac
+                ;;
+            esac
+        fi
+fi
+
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+
+
+
+
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test "x$ax_pthread_ok" = "xyes"; then
+        threads=yes
+        :
+else
+        ax_pthread_ok=no
+        threads=no
+fi
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  if test "$threads" = "yes"; then
+    save_LIBS="$LIBS"
+    LIBS="$PTHREAD_LIBS $LIBS"
+    save_CXXFLAGS="$CXXFLAGS"
+    CXXFLAGS="$PTHREAD_CFLAGS $save_CXXFLAGS"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for std::thread" >&5
+$as_echo_n "checking for std::thread... " >&6; }
+if ${gdb_cv_cxx_std_thread+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <thread>
+      void callback() { }
+int
+main ()
+{
+std::thread t(callback);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  gdb_cv_cxx_std_thread=yes
+else
+  gdb_cv_cxx_std_thread=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_cxx_std_thread" >&5
+$as_echo "$gdb_cv_cxx_std_thread" >&6; }
+
+    # This check must be here, while LIBS includes any necessary
+    # threading library.
+    for ac_func in pthread_sigmask pthread_setname_np
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+    LIBS="$save_LIBS"
+    CXXFLAGS="$save_CXXFLAGS"
+  fi
+  if test $gdb_cv_cxx_std_thread = yes; then
+
+$as_echo "#define CXX_STD_THREAD 1" >>confdefs.h
+
+  fi
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigsetjmp" >&5
 $as_echo_n "checking for sigsetjmp... " >&6; }
 if ${gdb_cv_func_sigsetjmp+:} false; then :
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.20191126/gdb/gdbserver/debug.c ./gdb/gdbserver/debug.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbserver/debug.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/gdbserver/debug.c	2019-12-03 01:49:15.000000000 +0000
@@ -55,7 +55,7 @@ debug_set_output (const char *new_debug_
   if (fptr == nullptr)
     {
       debug_printf ("Cannot open %s for writing. %s. Switching to stderr.\n",
-		    new_debug_file, strerror (errno));
+		    new_debug_file, safe_strerror (errno));
       return;
     }
 
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.20191126/gdb/gdbserver/linux-low.c ./gdb/gdbserver/linux-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbserver/linux-low.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/gdbserver/linux-low.c	2019-12-03 01:49:15.000000000 +0000
@@ -50,6 +50,7 @@
 #include "gdbsupport/common-inferior.h"
 #include "nat/fork-inferior.h"
 #include "gdbsupport/environ.h"
+#include "gdbsupport/gdb-sigmask.h"
 #include "gdbsupport/scoped_restore.h"
 #ifndef ELFMAG0
 /* Don't include <linux/elf.h> here.  If it got included by gdb_proc_service.h
@@ -1159,7 +1160,7 @@ attach_proc_task_lwp_callback (ptid_t pt
 	    {
 	      debug_printf ("Cannot attach to lwp %d: "
 			    "thread is gone (%d: %s)\n",
-			    lwpid, err, strerror (err));
+			    lwpid, err, safe_strerror (err));
 	    }
 	}
       else if (err != 0)
@@ -1303,7 +1304,7 @@ linux_kill_one_lwp (struct lwp_info *lwp
 
       debug_printf ("LKL:  kill_lwp (SIGKILL) %s, 0, 0 (%s)\n",
 		    target_pid_to_str (ptid_of (thr)),
-		    save_errno ? strerror (save_errno) : "OK");
+		    save_errno ? safe_strerror (save_errno) : "OK");
     }
 
   errno = 0;
@@ -1314,7 +1315,7 @@ linux_kill_one_lwp (struct lwp_info *lwp
 
       debug_printf ("LKL:  PTRACE_KILL %s, 0, 0 (%s)\n",
 		    target_pid_to_str (ptid_of (thr)),
-		    save_errno ? strerror (save_errno) : "OK");
+		    save_errno ? safe_strerror (save_errno) : "OK");
     }
 }
 
@@ -1560,7 +1561,7 @@ linux_detach_one_lwp (struct lwp_info *l
 	  if (ret == -1)
 	    {
 	      warning (_("Couldn't reap LWP %d while detaching: %s"),
-		       lwpid, strerror (errno));
+		       lwpid, safe_strerror (errno));
 	    }
 	  else if (!WIFEXITED (status) && !WIFSIGNALED (status))
 	    {
@@ -1573,7 +1574,7 @@ linux_detach_one_lwp (struct lwp_info *l
 	{
 	  error (_("Can't detach %s: %s"),
 		 target_pid_to_str (ptid_of (thread)),
-		 strerror (save_errno));
+		 safe_strerror (save_errno));
 	}
     }
   else if (debug_threads)
@@ -2689,7 +2690,7 @@ linux_wait_for_event_filtered (ptid_t wa
   /* Make sure SIGCHLD is blocked until the sigsuspend below.  Block
      all signals while here.  */
   sigfillset (&block_mask);
-  sigprocmask (SIG_BLOCK, &block_mask, &prev_mask);
+  gdb_sigmask (SIG_BLOCK, &block_mask, &prev_mask);
 
   /* Always pull all events out of the kernel.  We'll randomly select
      an event LWP out of all that have events, to prevent
@@ -2715,7 +2716,7 @@ linux_wait_for_event_filtered (ptid_t wa
 
       if (debug_threads)
 	debug_printf ("LWFE: waitpid(-1, ...) returned %d, %s\n",
-		      ret, errno ? strerror (errno) : "ERRNO-OK");
+		      ret, errno ? safe_strerror (errno) : "ERRNO-OK");
 
       if (ret > 0)
 	{
@@ -2775,7 +2776,7 @@ linux_wait_for_event_filtered (ptid_t wa
 	{
 	  if (debug_threads)
 	    debug_printf ("LLW: exit (no unwaited-for LWP)\n");
-	  sigprocmask (SIG_SETMASK, &prev_mask, NULL);
+	  gdb_sigmask (SIG_SETMASK, &prev_mask, NULL);
 	  return -1;
 	}
 
@@ -2785,7 +2786,7 @@ linux_wait_for_event_filtered (ptid_t wa
 	  if (debug_threads)
 	    debug_printf ("WNOHANG set, no event found\n");
 
-	  sigprocmask (SIG_SETMASK, &prev_mask, NULL);
+	  gdb_sigmask (SIG_SETMASK, &prev_mask, NULL);
 	  return 0;
 	}
 
@@ -2794,11 +2795,11 @@ linux_wait_for_event_filtered (ptid_t wa
 	debug_printf ("sigsuspend'ing\n");
 
       sigsuspend (&prev_mask);
-      sigprocmask (SIG_SETMASK, &prev_mask, NULL);
+      gdb_sigmask (SIG_SETMASK, &prev_mask, NULL);
       goto retry;
     }
 
-  sigprocmask (SIG_SETMASK, &prev_mask, NULL);
+  gdb_sigmask (SIG_SETMASK, &prev_mask, NULL);
 
   current_thread = event_thread;
 
@@ -5593,7 +5594,7 @@ store_register (const struct usrregs_inf
 	    return;
 
 	  if ((*the_low_target.cannot_store_register) (regno) == 0)
-	    error ("writing register %d: %s", regno, strerror (errno));
+	    error ("writing register %d: %s", regno, safe_strerror (errno));
 	}
       regaddr += sizeof (PTRACE_XFER_TYPE);
     }
@@ -6215,7 +6216,7 @@ linux_async (int enable)
       sigemptyset (&mask);
       sigaddset (&mask, SIGCHLD);
 
-      sigprocmask (SIG_BLOCK, &mask, NULL);
+      gdb_sigmask (SIG_BLOCK, &mask, NULL);
 
       if (enable)
 	{
@@ -6223,7 +6224,7 @@ linux_async (int enable)
 	    {
 	      linux_event_pipe[0] = -1;
 	      linux_event_pipe[1] = -1;
-	      sigprocmask (SIG_UNBLOCK, &mask, NULL);
+	      gdb_sigmask (SIG_UNBLOCK, &mask, NULL);
 
 	      warning ("creating event pipe failed.");
 	      return previous;
@@ -6249,7 +6250,7 @@ linux_async (int enable)
 	  linux_event_pipe[1] = -1;
 	}
 
-      sigprocmask (SIG_UNBLOCK, &mask, NULL);
+      gdb_sigmask (SIG_UNBLOCK, &mask, NULL);
     }
 
   return previous;
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.20191126/gdb/gdbserver/lynx-low.c ./gdb/gdbserver/lynx-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbserver/lynx-low.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/gdbserver/lynx-low.c	2019-12-03 01:49:15.000000000 +0000
@@ -316,7 +316,7 @@ lynx_attach (unsigned long pid)
 
   if (lynx_ptrace (PTRACE_ATTACH, ptid, 0, 0, 0) != 0)
     error ("Cannot attach to process %lu: %s (%d)\n", pid,
-	   strerror (errno), errno);
+	   safe_strerror (errno), errno);
 
   lynx_add_process (pid, 1);
   lynx_add_threads_after_attach (pid);
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.20191126/gdb/gdbserver/Makefile.in ./gdb/gdbserver/Makefile.in
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbserver/Makefile.in	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/gdbserver/Makefile.in	2019-12-03 01:49:15.000000000 +0000
@@ -139,9 +139,12 @@ CFLAGS = @CFLAGS@
 CXXFLAGS = @CXXFLAGS@
 CPPFLAGS = @CPPFLAGS@
 
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+
 # INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros.
 INTERNAL_CFLAGS_BASE = ${CXXFLAGS} ${GLOBAL_CFLAGS} \
-	${PROFILE_CFLAGS} ${INCLUDE_CFLAGS} ${CPPFLAGS}
+	${PROFILE_CFLAGS} ${INCLUDE_CFLAGS} ${CPPFLAGS} $(PTHREAD_CFLAGS)
 INTERNAL_WARN_CFLAGS = ${INTERNAL_CFLAGS_BASE} $(WARN_CFLAGS)
 INTERNAL_CFLAGS = ${INTERNAL_WARN_CFLAGS} $(WERROR_CFLAGS) -DGDBSERVER
 
@@ -305,7 +308,7 @@ GDBREPLAY_OBS = \
 	utils.o \
 	version.o
 
-GDBSERVER_LIBS = @GDBSERVER_LIBS@
+GDBSERVER_LIBS = @GDBSERVER_LIBS@ $(PTHREAD_LIBS)
 XM_CLIBS = @LIBS@
 CDEPS = $(srcdir)/proc-service.list
 
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.20191126/gdb/gdbserver/mem-break.c ./gdb/gdbserver/mem-break.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbserver/mem-break.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/gdbserver/mem-break.c	2019-12-03 01:49:15.000000000 +0000
@@ -374,7 +374,7 @@ insert_memory_breakpoint (struct raw_bre
       if (debug_threads)
 	debug_printf ("Failed to read shadow memory of"
 		      " breakpoint at 0x%s (%s).\n",
-		      paddress (bp->pc), strerror (err));
+		      paddress (bp->pc), safe_strerror (err));
     }
   else
     {
@@ -386,7 +386,7 @@ insert_memory_breakpoint (struct raw_bre
 	{
 	  if (debug_threads)
 	    debug_printf ("Failed to insert breakpoint at 0x%s (%s).\n",
-			  paddress (bp->pc), strerror (err));
+			  paddress (bp->pc), safe_strerror (err));
 	}
     }
   return err != 0 ? -1 : 0;
@@ -415,7 +415,7 @@ remove_memory_breakpoint (struct raw_bre
       if (debug_threads)
 	debug_printf ("Failed to uninsert raw breakpoint "
 		      "at 0x%s (%s) while deleting it.\n",
-		      paddress (bp->pc), strerror (err));
+		      paddress (bp->pc), safe_strerror (err));
     }
   return err != 0 ? -1 : 0;
 }
@@ -597,7 +597,7 @@ delete_fast_tracepoint_jump (struct fast
 		  if (debug_threads)
 		    debug_printf ("Failed to uninsert fast tracepoint jump "
 				  "at 0x%s (%s) while deleting it.\n",
-				  paddress (bp->pc), strerror (ret));
+				  paddress (bp->pc), safe_strerror (ret));
 		  return ret;
 		}
 
@@ -660,7 +660,7 @@ set_fast_tracepoint_jump (CORE_ADDR wher
       if (debug_threads)
 	debug_printf ("Failed to read shadow memory of"
 		      " fast tracepoint at 0x%s (%s).\n",
-		      paddress (where), strerror (err));
+		      paddress (where), safe_strerror (err));
       free (jp);
       return NULL;
     }
@@ -684,7 +684,7 @@ set_fast_tracepoint_jump (CORE_ADDR wher
     {
       if (debug_threads)
 	debug_printf ("Failed to insert fast tracepoint jump at 0x%s (%s).\n",
-		      paddress (where), strerror (err));
+		      paddress (where), safe_strerror (err));
 
       /* Unlink it.  */
       proc->fast_tracepoint_jumps = jp->next;
@@ -739,7 +739,7 @@ uninsert_fast_tracepoint_jumps_at (CORE_
 	  if (debug_threads)
 	    debug_printf ("Failed to uninsert fast tracepoint jump at"
 			  " 0x%s (%s).\n",
-			  paddress (pc), strerror (err));
+			  paddress (pc), safe_strerror (err));
 	}
     }
 }
@@ -786,7 +786,7 @@ reinsert_fast_tracepoint_jumps_at (CORE_
       if (debug_threads)
 	debug_printf ("Failed to reinsert fast tracepoint jump at"
 		      " 0x%s (%s).\n",
-		      paddress (where), strerror (err));
+		      paddress (where), safe_strerror (err));
     }
 }
 
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.20191126/gdb/gdbserver/nto-low.c ./gdb/gdbserver/nto-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbserver/nto-low.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/gdbserver/nto-low.c	2019-12-03 01:49:15.000000000 +0000
@@ -247,7 +247,7 @@ nto_xfer_memory (off_t memaddr, unsigned
   if (nbytes == 0)
     {
       int e = errno;
-      TRACE ("Error in %s : errno=%d (%s)\n", __func__, e, strerror (e));
+      TRACE ("Error in %s : errno=%d (%s)\n", __func__, e, safe_strerror (e));
     }
   return nbytes;
 }
@@ -505,7 +505,7 @@ nto_resume (struct thread_resume *resume
 
   err = devctl (nto_inferior.ctl_fd, DCMD_PROC_RUN, &run, sizeof (run), 0);
   if (err != EOK)
-    TRACE ("Error: %d \"%s\"\n", err, strerror (err));
+    TRACE ("Error: %d \"%s\"\n", err, safe_strerror (err));
 }
 
 /* Wait for inferior's event.  
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.20191126/gdb/gdbserver/remote-utils.c ./gdb/gdbserver/remote-utils.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbserver/remote-utils.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/gdbserver/remote-utils.c	2019-12-03 01:49:15.000000000 +0000
@@ -28,6 +28,7 @@
 #include "gdbsupport/rsp-low.h"
 #include "gdbsupport/netstuff.h"
 #include "gdbsupport/filestuff.h"
+#include "gdbsupport/gdb-sigmask.h"
 #include <ctype.h>
 #if HAVE_SYS_IOCTL_H
 #include <sys/ioctl.h>
@@ -807,7 +808,7 @@ block_unblock_async_io (int block)
 
   sigemptyset (&sigio_set);
   sigaddset (&sigio_set, SIGIO);
-  sigprocmask (block ? SIG_BLOCK : SIG_UNBLOCK, &sigio_set, NULL);
+  gdb_sigmask (block ? SIG_BLOCK : SIG_UNBLOCK, &sigio_set, NULL);
 #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.20191126/gdb/gdbsupport/alt-stack.h ./gdb/gdbsupport/alt-stack.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbsupport/alt-stack.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/gdbsupport/alt-stack.h	2019-12-03 01:49:15.000000000 +0000
@@ -0,0 +1,70 @@
+/* Temporarily install an alternate signal stack
+
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef GDBSUPPORT_ALT_STACK_H
+#define GDBSUPPORT_ALT_STACK_H
+
+#include <signal.h>
+
+namespace gdb
+{
+
+/* Try to set up an alternate signal stack for SIGSEGV handlers.
+   This allows us to handle SIGSEGV signals generated when the
+   normal process stack is exhausted.  If this stack is not set
+   up (sigaltstack is unavailable or fails) and a SIGSEGV is
+   generated when the normal stack is exhausted then the program
+   will behave as though no SIGSEGV handler was installed.  */
+class alternate_signal_stack
+{
+public:
+  alternate_signal_stack ()
+  {
+#ifdef HAVE_SIGALTSTACK
+    m_stack.reset ((char *) xmalloc (SIGSTKSZ));
+
+    stack_t stack;
+    stack.ss_sp = m_stack.get ();
+    stack.ss_size = SIGSTKSZ;
+    stack.ss_flags = 0;
+
+    sigaltstack (&stack, &m_old_stack);
+#endif
+  }
+
+  ~alternate_signal_stack ()
+  {
+#ifdef HAVE_SIGALTSTACK
+    sigaltstack (&m_old_stack, nullptr);
+#endif
+  }
+
+  DISABLE_COPY_AND_ASSIGN (alternate_signal_stack);
+
+private:
+
+#ifdef HAVE_SIGALTSTACK
+  gdb::unique_xmalloc_ptr<char> m_stack;
+  stack_t m_old_stack;
+#endif
+};
+
+}
+
+#endif /* GDBSUPPORT_ALT_STACK_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.20191126/gdb/gdbsupport/block-signals.h ./gdb/gdbsupport/block-signals.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbsupport/block-signals.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/gdbsupport/block-signals.h	2019-12-03 01:49:15.000000000 +0000
@@ -0,0 +1,67 @@
+/* Block signals used by gdb
+
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef GDBSUPPORT_BLOCK_SIGNALS_H
+#define GDBSUPPORT_BLOCK_SIGNALS_H
+
+#include <signal.h>
+
+#include "gdbsupport/gdb-sigmask.h"
+
+namespace gdb
+{
+
+/* This is an RAII class that temporarily blocks the signals needed by
+   gdb.  This can be used before starting a new thread to ensure that
+   this thread starts with the appropriate signals blocked.  */
+class block_signals
+{
+public:
+  block_signals ()
+  {
+#ifdef HAVE_SIGPROCMASK
+    sigset_t mask;
+    sigemptyset (&mask);
+    sigaddset (&mask, SIGINT);
+    sigaddset (&mask, SIGCHLD);
+    sigaddset (&mask, SIGALRM);
+    sigaddset (&mask, SIGWINCH);
+    gdb_sigmask (SIG_BLOCK, &mask, &m_old_mask);
+#endif
+  }
+
+  ~block_signals ()
+  {
+#ifdef HAVE_SIGPROCMASK
+    gdb_sigmask (SIG_SETMASK, &m_old_mask, nullptr);
+#endif
+  }
+
+  DISABLE_COPY_AND_ASSIGN (block_signals);
+
+private:
+
+#ifdef HAVE_SIGPROCMASK
+  sigset_t m_old_mask;
+#endif
+};
+
+}
+
+#endif /* GDBSUPPORT_BLOCK_SIGNALS_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.20191126/gdb/gdbsupport/common.m4 ./gdb/gdbsupport/common.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbsupport/common.m4	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/gdbsupport/common.m4	2019-12-03 01:49:15.000000000 +0000
@@ -37,6 +37,37 @@ AC_DEFUN([GDB_AC_COMMON], [
 
   AC_CHECK_DECLS([strerror, strstr])
 
+  # Check for std::thread.  This does not work on some platforms, like
+  # mingw and DJGPP.
+  AC_LANG_PUSH([C++])
+  AX_PTHREAD([threads=yes], [threads=no])
+  if test "$threads" = "yes"; then
+    save_LIBS="$LIBS"
+    LIBS="$PTHREAD_LIBS $LIBS"
+    save_CXXFLAGS="$CXXFLAGS"
+    CXXFLAGS="$PTHREAD_CFLAGS $save_CXXFLAGS"
+    AC_CACHE_CHECK([for std::thread],
+		   gdb_cv_cxx_std_thread,
+		   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+    [[#include <thread>
+      void callback() { }]],
+    [[std::thread t(callback);]])],
+				  gdb_cv_cxx_std_thread=yes,
+				  gdb_cv_cxx_std_thread=no)])
+
+    # This check must be here, while LIBS includes any necessary
+    # threading library.
+    AC_CHECK_FUNCS([pthread_sigmask pthread_setname_np])
+
+    LIBS="$save_LIBS"
+    CXXFLAGS="$save_CXXFLAGS"
+  fi
+  if test $gdb_cv_cxx_std_thread = yes; then
+    AC_DEFINE(CXX_STD_THREAD, 1,
+	      [Define to 1 if std::thread works.])
+  fi
+  AC_LANG_POP
+
   dnl Check if sigsetjmp is available.  Using AC_CHECK_FUNCS won't
   dnl do since sigsetjmp might only be defined as a macro.
 AC_CACHE_CHECK([for sigsetjmp], gdb_cv_func_sigsetjmp,
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.20191126/gdb/gdbsupport/gdb-sigmask.h ./gdb/gdbsupport/gdb-sigmask.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbsupport/gdb-sigmask.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/gdbsupport/gdb-sigmask.h	2019-12-03 01:49:15.000000000 +0000
@@ -0,0 +1,45 @@
+/* sigprocmask wrapper for gdb
+
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef GDBSUPPORT_GDB_SIGMASK_H
+#define GDBSUPPORT_GDB_SIGMASK_H
+
+#include <signal.h>
+
+#ifdef HAVE_SIGPROCMASK
+
+#ifdef HAVE_PTHREAD_SIGMASK
+#define gdb_sigmask pthread_sigmask
+#else
+#define gdb_sigmask sigprocmask
+#endif
+
+#else /* HAVE_SIGPROCMASK */
+
+/* Other code checks HAVE_SIGPROCMASK, but if there happened to be a
+   system that only had pthread_sigmask, we could still use it with
+   some extra changes.  */
+#ifdef HAVE_PTHREAD_SIGMASK
+#error pthead_sigmask available without sigprocmask - please report
+#endif
+
+#endif /* HAVE_SIGPROCMASK */
+
+
+#endif /* GDBSUPPORT_GDB_SIGMASK_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.20191126/gdb/gdbsupport/parallel-for.h ./gdb/gdbsupport/parallel-for.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbsupport/parallel-for.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/gdbsupport/parallel-for.h	2019-12-03 01:49:15.000000000 +0000
@@ -0,0 +1,86 @@
+/* Parallel for loops
+
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef GDBSUPPORT_PARALLEL_FOR_H
+#define GDBSUPPORT_PARALLEL_FOR_H
+
+#include <algorithm>
+#if CXX_STD_THREAD
+#include <thread>
+#include "gdbsupport/thread-pool.h"
+#endif
+
+namespace gdb
+{
+
+/* A very simple "parallel for".  This splits the range of iterators
+   into subranges, and then passes each subrange to the callback.  The
+   work may or may not be done in separate threads.
+
+   This approach was chosen over having the callback work on single
+   items because it makes it simple for the caller to do
+   once-per-subrange initialization and destruction.  */
+
+template<class RandomIt, class RangeFunction>
+void
+parallel_for_each (RandomIt first, RandomIt last, RangeFunction callback)
+{
+#if CXX_STD_THREAD
+  /* So we can use a local array below.  */
+  const size_t local_max = 16;
+  size_t n_threads = std::min (thread_pool::g_thread_pool->thread_count (),
+			       local_max);
+  size_t n_actual_threads = 0;
+  std::future<void> futures[local_max];
+
+  size_t n_elements = last - first;
+  if (n_threads > 1)
+    {
+      /* Arbitrarily require that there should be at least 10 elements
+	 in a thread.  */
+      if (n_elements / n_threads < 10)
+	n_threads = std::max (n_elements / 10, (size_t) 1);
+      size_t elts_per_thread = n_elements / n_threads;
+      n_actual_threads = n_threads - 1;
+      for (int i = 0; i < n_actual_threads; ++i)
+	{
+	  RandomIt end = first + elts_per_thread;
+	  auto task = [=] ()
+		      {
+			callback (first, end);
+		      };
+
+	  futures[i] = gdb::thread_pool::g_thread_pool->post_task (task);
+	  first = end;
+	}
+    }
+#endif /* CXX_STD_THREAD */
+
+  /* Process all the remaining elements in the main thread.  */
+  callback (first, last);
+
+#if CXX_STD_THREAD
+  for (int i = 0; i < n_actual_threads; ++i)
+    futures[i].wait ();
+#endif /* CXX_STD_THREAD */
+}
+
+}
+
+#endif /* GDBSUPPORT_PARALLEL_FOR_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.20191126/gdb/gdbsupport/signals-state-save-restore.c ./gdb/gdbsupport/signals-state-save-restore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbsupport/signals-state-save-restore.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/gdbsupport/signals-state-save-restore.c	2019-12-03 01:49:15.000000000 +0000
@@ -17,6 +17,7 @@
 
 #include "common-defs.h"
 #include "signals-state-save-restore.h"
+#include "gdbsupport/gdb-sigmask.h"
 
 #include <signal.h>
 
@@ -25,10 +26,6 @@
 #ifdef HAVE_SIGACTION
 static struct sigaction original_signal_actions[NSIG];
 
-/* Note that we use sigprocmask without worrying about threads because
-   the save/restore functions are called either from main, or after a
-   fork.  In both cases, we know the calling process is single
-   threaded.  */
 static sigset_t original_signal_mask;
 #endif
 
@@ -41,7 +38,7 @@ save_original_signals_state (bool quiet)
   int i;
   int res;
 
-  res = sigprocmask (0,  NULL, &original_signal_mask);
+  res = gdb_sigmask (0,  NULL, &original_signal_mask);
   if (res == -1)
     perror_with_name (("sigprocmask"));
 
@@ -110,7 +107,7 @@ restore_original_signals_state (void)
 	perror_with_name (("sigaction"));
     }
 
-  res = sigprocmask (SIG_SETMASK,  &original_signal_mask, NULL);
+  res = gdb_sigmask (SIG_SETMASK,  &original_signal_mask, NULL);
   if (res == -1)
     perror_with_name (("sigprocmask"));
 #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.20191126/gdb/gdbsupport/thread-pool.c ./gdb/gdbsupport/thread-pool.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbsupport/thread-pool.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/gdbsupport/thread-pool.c	2019-12-03 01:49:15.000000000 +0000
@@ -0,0 +1,144 @@
+/* Thread pool
+
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include "common-defs.h"
+
+#if CXX_STD_THREAD
+
+#include "gdbsupport/thread-pool.h"
+#include "gdbsupport/alt-stack.h"
+#include "gdbsupport/block-signals.h"
+#include <algorithm>
+
+/* On the off chance that we have the pthread library on a Windows
+   host, but std::thread is not using it, avoid calling
+   pthread_setname_np on Windows.  */
+#ifndef _WIN32
+#ifdef HAVE_PTHREAD_SETNAME_NP
+#define USE_PTHREAD_SETNAME_NP
+#endif
+#endif
+
+#ifdef USE_PTHREAD_SETNAME_NP
+#include <pthread.h>
+#endif
+
+namespace gdb
+{
+
+/* The thread pool detach()s its threads, so that the threads will not
+   prevent the process from exiting.  However, it was discovered that
+   if any detached threads were still waiting on a condition variable,
+   then the condition variable's destructor would wait for the threads
+   to exit -- defeating the purpose.
+
+   Allocating the thread pool on the heap and simply "leaking" it
+   avoids this problem.
+*/
+thread_pool *thread_pool::g_thread_pool = new thread_pool ();
+
+thread_pool::~thread_pool ()
+{
+  /* Because this is a singleton, we don't need to clean up.  The
+     threads are detached so that they won't prevent process exit.
+     And, cleaning up here would be actively harmful in at least one
+     case -- see the comment by the definition of g_thread_pool.  */
+}
+
+void
+thread_pool::set_thread_count (size_t num_threads)
+{
+  std::lock_guard<std::mutex> guard (m_tasks_mutex);
+
+  /* If the new size is larger, start some new threads.  */
+  if (m_thread_count < num_threads)
+    {
+      /* Ensure that signals used by gdb are blocked in the new
+	 threads.  */
+      block_signals blocker;
+      for (size_t i = m_thread_count; i < num_threads; ++i)
+	{
+	  std::thread thread (&thread_pool::thread_function, this);
+#ifdef USE_PTHREAD_SETNAME_NP
+	  pthread_setname_np (thread.native_handle (), "gdb worker");
+#endif
+	  thread.detach ();
+	}
+    }
+  /* If the new size is smaller, terminate some existing threads.  */
+  if (num_threads < m_thread_count)
+    {
+      for (size_t i = num_threads; i < m_thread_count; ++i)
+	m_tasks.emplace ();
+      m_tasks_cv.notify_all ();
+    }
+
+  m_thread_count = num_threads;
+}
+
+std::future<void>
+thread_pool::post_task (std::function<void ()> func)
+{
+  std::packaged_task<void ()> t (func);
+  std::future<void> f = t.get_future ();
+
+  if (m_thread_count == 0)
+    {
+      /* Just execute it now.  */
+      t ();
+    }
+  else
+    {
+      std::lock_guard<std::mutex> guard (m_tasks_mutex);
+      m_tasks.emplace (std::move (t));
+      m_tasks_cv.notify_one ();
+    }
+  return f;
+}
+
+void
+thread_pool::thread_function ()
+{
+  /* Ensure that SIGSEGV is delivered to an alternate signal
+     stack.  */
+  gdb::alternate_signal_stack signal_stack;
+
+  while (true)
+    {
+      optional<task> t;
+
+      {
+	/* We want to hold the lock while examining the task list, but
+	   not while invoking the task function.  */
+	std::unique_lock<std::mutex> guard (m_tasks_mutex);
+	while (m_tasks.empty ())
+	  m_tasks_cv.wait (guard);
+	t = std::move (m_tasks.front());
+	m_tasks.pop ();
+      }
+
+      if (!t.has_value ())
+	break;
+      (*t) ();
+    }
+}
+
+}
+
+#endif /* CXX_STD_THREAD */
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.20191126/gdb/gdbsupport/thread-pool.h ./gdb/gdbsupport/thread-pool.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbsupport/thread-pool.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/gdbsupport/thread-pool.h	2019-12-03 01:49:15.000000000 +0000
@@ -0,0 +1,90 @@
+/* Thread pool
+
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef GDBSUPPORT_THREAD_POOL_H
+#define GDBSUPPORT_THREAD_POOL_H
+
+#include <queue>
+#include <thread>
+#include <vector>
+#include <functional>
+#include <mutex>
+#include <condition_variable>
+#include <future>
+#include "gdbsupport/gdb_optional.h"
+
+namespace gdb
+{
+
+/* A thread pool.
+
+   There is a single global thread pool, see g_thread_pool.  Tasks can
+   be submitted to the thread pool.  They will be processed in worker
+   threads as time allows.  */
+class thread_pool
+{
+public:
+  /* The sole global thread pool.  */
+  static thread_pool *g_thread_pool;
+
+  ~thread_pool ();
+  DISABLE_COPY_AND_ASSIGN (thread_pool);
+
+  /* Set the thread count of this thread pool.  By default, no threads
+     are created -- the thread count must be set first.  */
+  void set_thread_count (size_t num_threads);
+
+  /* Return the number of executing threads.  */
+  size_t thread_count () const
+  {
+    return m_thread_count;
+  }
+
+  /* Post a task to the thread pool.  A future is returned, which can
+     be used to wait for the result.  */
+  std::future<void> post_task (std::function<void ()> func);
+
+private:
+
+  thread_pool () = default;
+
+  /* The callback for each worker thread.  */
+  void thread_function ();
+
+  /* The current thread count.  */
+  size_t m_thread_count = 0;
+
+  /* A convenience typedef for the type of a task.  */
+  typedef std::packaged_task<void ()> task;
+
+  /* The tasks that have not been processed yet.  An optional is used
+     to represent a task.  If the optional is empty, then this means
+     that the receiving thread should terminate.  If the optional is
+     non-empty, then it is an actual task to evaluate.  */
+  std::queue<optional<task>> m_tasks;
+
+  /* A condition variable and mutex that are used for communication
+     between the main thread and the worker threads.  */
+  std::condition_variable m_tasks_cv;
+  std::mutex m_tasks_mutex;
+};
+
+}
+
+#endif /* GDBSUPPORT_THREAD_POOL_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.20191126/gdb/gdbtypes.c ./gdb/gdbtypes.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbtypes.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/gdbtypes.c	2019-12-03 01:49:15.000000000 +0000
@@ -935,6 +935,10 @@ create_range_type (struct type *result_t
   TYPE_RANGE_DATA (result_type)->high = *high_bound;
   TYPE_RANGE_DATA (result_type)->bias = bias;
 
+  /* Initialize the stride to be a constant, the value will already be zero
+     thanks to the use of TYPE_ZALLOC above.  */
+  TYPE_RANGE_DATA (result_type)->stride.kind = PROP_CONST;
+
   if (low_bound->kind == PROP_CONST && low_bound->data.const_val >= 0)
     TYPE_UNSIGNED (result_type) = 1;
 
@@ -948,6 +952,29 @@ create_range_type (struct type *result_t
   return result_type;
 }
 
+/* See gdbtypes.h.  */
+
+struct type *
+create_range_type_with_stride (struct type *result_type,
+			       struct type *index_type,
+			       const struct dynamic_prop *low_bound,
+			       const struct dynamic_prop *high_bound,
+			       LONGEST bias,
+			       const struct dynamic_prop *stride,
+			       bool byte_stride_p)
+{
+  result_type = create_range_type (result_type, index_type, low_bound,
+				   high_bound, bias);
+
+  gdb_assert (stride != nullptr);
+  TYPE_RANGE_DATA (result_type)->stride = *stride;
+  TYPE_RANGE_DATA (result_type)->flag_is_byte_stride = byte_stride_p;
+
+  return result_type;
+}
+
+
+
 /* Create a range type using either a blank type supplied in
    RESULT_TYPE, or creating a new type, inheriting the objfile from
    INDEX_TYPE.
@@ -978,11 +1005,14 @@ create_static_range_type (struct type *r
 /* Predicate tests whether BOUNDS are static.  Returns 1 if all bounds values
    are static, otherwise returns 0.  */
 
-static int
+static bool
 has_static_range (const struct range_bounds *bounds)
 {
+  /* If the range doesn't have a defined stride then its stride field will
+     be initialized to the constant 0.  */
   return (bounds->low.kind == PROP_CONST
-	  && bounds->high.kind == PROP_CONST);
+	  && bounds->high.kind == PROP_CONST
+	  && bounds->stride.kind == PROP_CONST);
 }
 
 
@@ -1189,6 +1219,15 @@ create_array_type_with_stride (struct ty
 	  && !type_not_allocated (result_type)))
     {
       LONGEST low_bound, high_bound;
+      unsigned int stride;
+
+      /* If the array itself doesn't provide a stride value then take
+	 whatever stride the range provides.  Don't update BIT_STRIDE as
+	 we don't want to place the stride value from the range into this
+	 arrays bit size field.  */
+      stride = bit_stride;
+      if (stride == 0)
+	stride = TYPE_BIT_STRIDE (range_type);
 
       if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
 	low_bound = high_bound = 0;
@@ -1198,9 +1237,9 @@ create_array_type_with_stride (struct ty
 	 In such cases, the array length should be zero.  */
       if (high_bound < low_bound)
 	TYPE_LENGTH (result_type) = 0;
-      else if (bit_stride > 0)
+      else if (stride > 0)
 	TYPE_LENGTH (result_type) =
-	  (bit_stride * (high_bound - low_bound + 1) + 7) / 8;
+	  (stride * (high_bound - low_bound + 1) + 7) / 8;
       else
 	TYPE_LENGTH (result_type) =
 	  TYPE_LENGTH (element_type) * (high_bound - low_bound + 1);
@@ -1928,6 +1967,9 @@ is_dynamic_type_internal (struct type *t
 		|| is_dynamic_type_internal (TYPE_TARGET_TYPE (type), 0));
       }
 
+    case TYPE_CODE_STRING:
+      /* Strings are very much like an array of characters, and can be
+	 treated as one here.  */
     case TYPE_CODE_ARRAY:
       {
 	gdb_assert (TYPE_NFIELDS (type) == 1);
@@ -1982,7 +2024,7 @@ resolve_dynamic_range (struct type *dyn_
   CORE_ADDR value;
   struct type *static_range_type, *static_target_type;
   const struct dynamic_prop *prop;
-  struct dynamic_prop low_bound, high_bound;
+  struct dynamic_prop low_bound, high_bound, stride;
 
   gdb_assert (TYPE_CODE (dyn_range_type) == TYPE_CODE_RANGE);
 
@@ -2014,24 +2056,48 @@ resolve_dynamic_range (struct type *dyn_
       high_bound.data.const_val = 0;
     }
 
+  bool byte_stride_p = TYPE_RANGE_DATA (dyn_range_type)->flag_is_byte_stride;
+  prop = &TYPE_RANGE_DATA (dyn_range_type)->stride;
+  if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
+    {
+      stride.kind = PROP_CONST;
+      stride.data.const_val = value;
+
+      /* If we have a bit stride that is not an exact number of bytes then
+	 I really don't think this is going to work with current GDB, the
+	 array indexing code in GDB seems to be pretty heavily tied to byte
+	 offsets right now.  Assuming 8 bits in a byte.  */
+      struct gdbarch *gdbarch = get_type_arch (dyn_range_type);
+      int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
+      if (!byte_stride_p && (value % (unit_size * 8)) != 0)
+	error (_("bit strides that are not a multiple of the byte size "
+		 "are currently not supported"));
+    }
+  else
+    {
+      stride.kind = PROP_UNDEFINED;
+      stride.data.const_val = 0;
+      byte_stride_p = true;
+    }
+
   static_target_type
     = resolve_dynamic_type_internal (TYPE_TARGET_TYPE (dyn_range_type),
 				     addr_stack, 0);
   LONGEST bias = TYPE_RANGE_DATA (dyn_range_type)->bias;
-  static_range_type = create_range_type (copy_type (dyn_range_type),
-					 static_target_type,
-					 &low_bound, &high_bound, bias);
+  static_range_type = create_range_type_with_stride
+    (copy_type (dyn_range_type), static_target_type,
+     &low_bound, &high_bound, bias, &stride, byte_stride_p);
   TYPE_RANGE_DATA (static_range_type)->flag_bound_evaluated = 1;
   return static_range_type;
 }
 
-/* Resolves dynamic bound values of an array type TYPE to static ones.
-   ADDR_STACK is a stack of struct property_addr_info to be used
-   if needed during the dynamic resolution.  */
+/* Resolves dynamic bound values of an array or string type TYPE to static
+   ones.  ADDR_STACK is a stack of struct property_addr_info to be used if
+   needed during the dynamic resolution.  */
 
 static struct type *
-resolve_dynamic_array (struct type *type,
-		       struct property_addr_info *addr_stack)
+resolve_dynamic_array_or_string (struct type *type,
+				 struct property_addr_info *addr_stack)
 {
   CORE_ADDR value;
   struct type *elt_type;
@@ -2040,7 +2106,10 @@ resolve_dynamic_array (struct type *type
   struct dynamic_prop *prop;
   unsigned int bit_stride = 0;
 
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
+  /* For dynamic type resolution strings can be treated like arrays of
+     characters.  */
+  gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY
+	      || TYPE_CODE (type) == TYPE_CODE_STRING);
 
   type = copy_type (type);
 
@@ -2066,7 +2135,7 @@ resolve_dynamic_array (struct type *type
   ary_dim = check_typedef (TYPE_TARGET_TYPE (elt_type));
 
   if (ary_dim != NULL && TYPE_CODE (ary_dim) == TYPE_CODE_ARRAY)
-    elt_type = resolve_dynamic_array (ary_dim, addr_stack);
+    elt_type = resolve_dynamic_array_or_string (ary_dim, addr_stack);
   else
     elt_type = TYPE_TARGET_TYPE (type);
 
@@ -2269,8 +2338,11 @@ resolve_dynamic_type_internal (struct ty
 	    break;
 	  }
 
+	case TYPE_CODE_STRING:
+	  /* Strings are very much like an array of characters, and can be
+	     treated as one here.  */
 	case TYPE_CODE_ARRAY:
-	  resolved_type = resolve_dynamic_array (type, addr_stack);
+	  resolved_type = resolve_dynamic_array_or_string (type, addr_stack);
 	  break;
 
 	case TYPE_CODE_RANGE:
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.20191126/gdb/gdbtypes.h ./gdb/gdbtypes.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/gdbtypes.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/gdbtypes.h	2019-12-03 01:49:15.000000000 +0000
@@ -623,6 +623,13 @@ struct range_bounds
 
   struct dynamic_prop high;
 
+  /* The stride value for this range.  This can be stored in bits or bytes
+     based on the value of BYTE_STRIDE_P.  It is optional to have a stride
+     value, if this range has no stride value defined then this will be set
+     to the constant zero.  */
+
+  struct dynamic_prop stride;
+
   /* * The bias.  Sometimes a range value is biased before storage.
      The bias is added to the stored bits to form the true value.  */
 
@@ -631,12 +638,16 @@ struct range_bounds
   /* True if HIGH range bound contains the number of elements in the
      subrange.  This affects how the final high bound is computed.  */
 
-  int flag_upper_bound_is_count : 1;
+  unsigned int flag_upper_bound_is_count : 1;
 
   /* True if LOW or/and HIGH are resolved into a static bound from
      a dynamic one.  */
 
-  int flag_bound_evaluated : 1;
+  unsigned int flag_bound_evaluated : 1;
+
+  /* If this is true this STRIDE is in bytes, otherwise STRIDE is in bits.  */
+
+  unsigned int flag_is_byte_stride : 1;
 };
 
 /* Compare two range_bounds objects for equality.  Simply does
@@ -1352,6 +1363,9 @@ extern bool set_type_align (struct type 
   TYPE_RANGE_DATA(range_type)->high.kind
 #define TYPE_LOW_BOUND_KIND(range_type) \
   TYPE_RANGE_DATA(range_type)->low.kind
+#define TYPE_BIT_STRIDE(range_type) \
+  (TYPE_RANGE_DATA(range_type)->stride.data.const_val \
+   * (TYPE_RANGE_DATA(range_type)->flag_is_byte_stride ? 8 : 1))
 
 /* Property accessors for the type data location.  */
 #define TYPE_DATA_LOCATION(thistype) \
@@ -1394,6 +1408,9 @@ extern bool set_type_align (struct type 
 #define TYPE_ARRAY_LOWER_BOUND_VALUE(arraytype) \
    (TYPE_LOW_BOUND(TYPE_INDEX_TYPE((arraytype))))
 
+#define TYPE_ARRAY_BIT_STRIDE(arraytype) \
+  (TYPE_BIT_STRIDE(TYPE_INDEX_TYPE((arraytype))))
+
 /* C++ */
 
 #define TYPE_SELF_TYPE(thistype) internal_type_self_type (thistype)
@@ -1966,6 +1983,16 @@ extern struct type *create_range_type (s
 				       const struct dynamic_prop *,
 				       LONGEST);
 
+/* Like CREATE_RANGE_TYPE but also sets up a stride.  When BYTE_STRIDE_P
+   is true the value in STRIDE is a byte stride, otherwise STRIDE is a bit
+   stride.  */
+
+extern struct type * create_range_type_with_stride
+  (struct type *result_type, struct type *index_type,
+   const struct dynamic_prop *low_bound,
+   const struct dynamic_prop *high_bound, LONGEST bias,
+   const struct dynamic_prop *stride, bool byte_stride_p);
+
 extern struct type *create_array_type (struct type *, struct type *,
 				       struct type *);
 
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.20191126/gdb/guile/guile.c ./gdb/guile/guile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/guile/guile.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/guile/guile.c	2019-12-03 01:49:15.000000000 +0000
@@ -36,6 +36,7 @@
 #include "guile-internal.h"
 #endif
 #include <signal.h>
+#include "gdbsupport/block-signals.h"
 
 /* The Guile version we're using.
    We *could* use the macros in libguile/version.h but that would preclude
@@ -798,10 +799,6 @@ _initialize_guile (void)
 
 #if HAVE_GUILE
   {
-#ifdef HAVE_SIGPROCMASK
-    sigset_t sigchld_mask, prev_mask;
-#endif
-
     /* The Python support puts the C side in module "_gdb", leaving the Python
        side to define module "gdb" which imports "_gdb".  There is evidently no
        similar convention in Guile so we skip this.  */
@@ -813,25 +810,20 @@ _initialize_guile (void)
     scm_set_automatic_finalization_enabled (0);
 #endif
 
-#ifdef HAVE_SIGPROCMASK
-    /* Before we initialize Guile, block SIGCHLD.
+    /* Before we initialize Guile, block signals needed by gdb
+       (especially SIGCHLD).
        This is done so that all threads created during Guile initialization
        have SIGCHLD blocked.  PR 17247.
        Really libgc and Guile should do this, but we need to work with
        libgc 7.4.x.  */
-    sigemptyset (&sigchld_mask);
-    sigaddset (&sigchld_mask, SIGCHLD);
-    sigprocmask (SIG_BLOCK, &sigchld_mask, &prev_mask);
-#endif
-
-    /* scm_with_guile is the most portable way to initialize Guile.
-       Plus we need to initialize the Guile support while in Guile mode
-       (e.g., called from within a call to scm_with_guile).  */
-    scm_with_guile (call_initialize_gdb_module, NULL);
+    {
+      gdb::block_signals blocker;
 
-#ifdef HAVE_SIGPROCMASK
-    sigprocmask (SIG_SETMASK, &prev_mask, NULL);
-#endif
+      /* scm_with_guile is the most portable way to initialize Guile.
+	 Plus we need to initialize the Guile support while in Guile mode
+	 (e.g., called from within a call to scm_with_guile).  */
+      scm_with_guile (call_initialize_gdb_module, NULL);
+    }
 
     /* Set Guile's backtrace to match the "set guile print-stack" default.
        [N.B. The two settings are still separate.]
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.20191126/gdb/guile/guile-internal.h ./gdb/guile/guile-internal.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/guile/guile-internal.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/guile/guile-internal.h	2019-12-03 01:49:15.000000000 +0000
@@ -580,8 +580,6 @@ extern int vlscm_is_value (SCM scm);
 
 extern SCM vlscm_scm_from_value (struct value *value);
 
-extern SCM vlscm_scm_from_value_unsafe (struct value *value);
-
 extern struct value *vlscm_convert_typed_value_from_scheme
   (const char *func_name, int obj_arg_pos, SCM obj,
    int type_arg_pos, SCM type_scm, struct type *type, SCM *except_scmp,
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.20191126/gdb/guile/scm-cmd.c ./gdb/guile/scm-cmd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/guile/scm-cmd.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/guile/scm-cmd.c	2019-12-03 01:49:15.000000000 +0000
@@ -492,10 +492,7 @@ gdbscm_parse_command_name (const char *n
   lastchar = i;
 
   /* Find first character of the final word.  */
-  for (; i > 0 && (isalnum (name[i - 1])
-		   || name[i - 1] == '-'
-		   || name[i - 1] == '_');
-       --i)
+  for (; i > 0 && valid_cmd_char_p (name[i - 1]); --i)
     ;
   result = (char *) xmalloc (lastchar - i + 2);
   memcpy (result, &name[i], lastchar - i + 1);
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.20191126/gdb/hppa-tdep.c ./gdb/hppa-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/hppa-tdep.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/hppa-tdep.c	2019-12-03 01:49:15.000000000 +0000
@@ -1296,7 +1296,7 @@ hppa64_frame_align (struct gdbarch *gdba
   return align_up (addr, 16);
 }
 
-CORE_ADDR
+static CORE_ADDR
 hppa_read_pc (readable_regcache *regcache)
 {
   ULONGEST ipsw;
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.20191126/gdb/i386-tdep.c ./gdb/i386-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/i386-tdep.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/i386-tdep.c	2019-12-03 01:49:15.000000000 +0000
@@ -8177,7 +8177,7 @@ i386_fast_tracepoint_valid_at (struct gd
    length LEN in bits.  If non-NULL, NAME is the name of its type.
    If no suitable type is found, return NULL.  */
 
-const struct floatformat **
+static const struct floatformat **
 i386_floatformat_for_type (struct gdbarch *gdbarch,
 			   const char *name, int len)
 {
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.20191126/gdb/inferior.c ./gdb/inferior.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/inferior.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/inferior.c	2019-12-03 01:49:15.000000000 +0000
@@ -221,14 +221,6 @@ exit_inferior (inferior *inf)
 }
 
 void
-exit_inferior_silent (int pid)
-{
-  struct inferior *inf = find_inferior_pid (pid);
-
-  exit_inferior_1 (inf, 1);
-}
-
-void
 exit_inferior_silent (inferior *inf)
 {
   exit_inferior_1 (inf, 1);
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.20191126/gdb/inferior.h ./gdb/inferior.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/inferior.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/inferior.h	2019-12-03 01:49:15.000000000 +0000
@@ -159,8 +159,6 @@ extern void default_print_float_info (st
 
 extern void child_terminal_info (struct target_ops *self, const char *, int);
 
-extern void info_terminal_command (char *, int);
-
 extern void child_terminal_ours (struct target_ops *self);
 
 extern void child_terminal_ours_for_output (struct target_ops *self);
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.20191126/gdb/inflow.c ./gdb/inflow.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/inflow.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/inflow.c	2019-12-03 01:49:15.000000000 +0000
@@ -673,7 +673,7 @@ swap_terminal_info (inferior *a, inferio
   std::swap (a->terminal_state, b->terminal_state);
 }
 
-void
+static void
 info_terminal_command (const char *arg, int from_tty)
 {
   target_terminal::info (arg, from_tty);
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.20191126/gdb/infrun.c ./gdb/infrun.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/infrun.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/infrun.c	2019-12-03 01:49:15.000000000 +0000
@@ -432,7 +432,6 @@ follow_fork_inferior (int follow_child, 
 Can not resume the parent process over vfork in the foreground while\n\
 holding the child stopped.  Try \"set detach-on-fork\" or \
 \"set schedule-multiple\".\n"));
-      /* FIXME output string > 80 columns.  */
       return 1;
     }
 
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.20191126/gdb/jit.c ./gdb/jit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/jit.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/jit.c	2019-12-03 01:49:15.000000000 +0000
@@ -874,7 +874,7 @@ jit_bfd_try_read_symtab (struct jit_code
 
   if (jit_debug)
     fprintf_unfiltered (gdb_stdlog,
-			"jit_register_code, symfile_addr = %s, "
+			"jit_bfd_try_read_symtab, symfile_addr = %s, "
 			"symfile_size = %s\n",
 			paddress (gdbarch, code_entry->symfile_addr),
 			pulongest (code_entry->symfile_size));
@@ -958,6 +958,9 @@ jit_register_code (struct gdbarch *gdbar
 static void
 jit_unregister_code (struct objfile *objfile)
 {
+  if (jit_debug)
+    fprintf_unfiltered (gdb_stdlog, "jit_unregister_code (%s)\n",
+			host_address_to_string (objfile));
   delete objfile;
 }
 
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.20191126/gdb/linux-nat.c ./gdb/linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/linux-nat.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/linux-nat.c	2019-12-03 01:49:15.000000000 +0000
@@ -67,6 +67,7 @@
 #include "nat/linux-namespaces.h"
 #include "gdbsupport/fileio.h"
 #include "gdbsupport/scope-exit.h"
+#include "gdbsupport/gdb-sigmask.h"
 
 /* This comment documents high-level logic of this file.
 
@@ -764,7 +765,7 @@ block_child_signals (sigset_t *prev_mask
   if (!sigismember (&blocked_mask, SIGCHLD))
     sigaddset (&blocked_mask, SIGCHLD);
 
-  sigprocmask (SIG_BLOCK, &blocked_mask, prev_mask);
+  gdb_sigmask (SIG_BLOCK, &blocked_mask, prev_mask);
 }
 
 /* Restore child signals mask, previously returned by
@@ -773,7 +774,7 @@ block_child_signals (sigset_t *prev_mask
 static void
 restore_child_signals_mask (sigset_t *prev_mask)
 {
-  sigprocmask (SIG_SETMASK, prev_mask, NULL);
+  gdb_sigmask (SIG_SETMASK, prev_mask, NULL);
 }
 
 /* Mask of signals to pass directly to the inferior.  */
@@ -1420,7 +1421,7 @@ detach_one_lwp (struct lwp_info *lp, int
 	  if (ret == -1)
 	    {
 	      warning (_("Couldn't reap LWP %d while detaching: %s"),
-		       lwpid, strerror (errno));
+		       lwpid, safe_strerror (errno));
 	    }
 	  else if (!WIFEXITED (status) && !WIFSIGNALED (status))
 	    {
@@ -4564,7 +4565,7 @@ Enables printf debugging output."),
   sigaction (SIGCHLD, &sigchld_action, NULL);
 
   /* Make sure we don't block SIGCHLD during a sigsuspend.  */
-  sigprocmask (SIG_SETMASK, NULL, &suspend_mask);
+  gdb_sigmask (SIG_SETMASK, NULL, &suspend_mask);
   sigdelset (&suspend_mask, SIGCHLD);
 
   sigemptyset (&blocked_mask);
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.20191126/gdb/main.c ./gdb/main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/main.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/main.c	2019-12-03 01:49:15.000000000 +0000
@@ -52,6 +52,7 @@
 #ifdef GDBTK
 #include "gdbtk/generic/gdbtk.h"
 #endif
+#include "gdbsupport/alt-stack.h"
 
 /* The selected interpreter.  This will be used as a set command
    variable, so it should always be malloc'ed - since
@@ -334,29 +335,6 @@ get_init_files (std::vector<std::string>
   *local_gdbinit = localinit;
 }
 
-/* Try to set up an alternate signal stack for SIGSEGV handlers.
-   This allows us to handle SIGSEGV signals generated when the
-   normal process stack is exhausted.  If this stack is not set
-   up (sigaltstack is unavailable or fails) and a SIGSEGV is
-   generated when the normal stack is exhausted then the program
-   will behave as though no SIGSEGV handler was installed.  */
-
-static void
-setup_alternate_signal_stack (void)
-{
-#ifdef HAVE_SIGALTSTACK
-  stack_t ss;
-
-  /* FreeBSD versions older than 11.0 use char * for ss_sp instead of
-     void *.  This cast works with both types.  */
-  ss.ss_sp = (char *) xmalloc (SIGSTKSZ);
-  ss.ss_size = SIGSTKSZ;
-  ss.ss_flags = 0;
-
-  sigaltstack(&ss, NULL);
-#endif
-}
-
 /* Call command_loop.  */
 
 /* Prevent inlining this function for the benefit of GDB's selftests
@@ -898,7 +876,7 @@ captured_main_1 (struct captured_main_ar
   save_original_signals_state (quiet);
 
   /* Try to set up an alternate signal stack for SIGSEGV handlers.  */
-  setup_alternate_signal_stack ();
+  gdb::alternate_signal_stack signal_stack;
 
   /* Initialize all files.  */
   gdb_init (gdb_program_name);
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.20191126/gdb/maint.c ./gdb/maint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/maint.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/maint.c	2019-12-03 01:49:15.000000000 +0000
@@ -46,6 +46,10 @@
 #include "cli/cli-setshow.h"
 #include "cli/cli-cmds.h"
 
+#if CXX_STD_THREAD
+#include "gdbsupport/thread-pool.h"
+#endif
+
 static void maintenance_do_deprecate (const char *, int);
 
 /* Access the maintenance subcommands.  */
@@ -840,6 +844,35 @@ maintenance_set_profile_cmd (const char 
   error (_("Profiling support is not available on this system."));
 }
 #endif
+
+static int n_worker_threads = 0;
+
+bool worker_threads_disabled ()
+{
+  return n_worker_threads == 0;
+}
+
+/* Update the thread pool for the desired number of threads.  */
+static void
+update_thread_pool_size ()
+{
+#if CXX_STD_THREAD
+  int n_threads = n_worker_threads;
+
+  if (n_threads < 0)
+    n_threads = std::thread::hardware_concurrency ();
+
+  gdb::thread_pool::g_thread_pool->set_thread_count (n_threads);
+#endif
+}
+
+static void
+maintenance_set_worker_threads (const char *args, int from_tty,
+				struct cmd_list_element *c)
+{
+  update_thread_pool_size ();
+}
+
 
 /* If true, display time usage both at startup and for each command.  */
 
@@ -1313,4 +1346,17 @@ When enabled GDB is profiled."),
 			   show_maintenance_profile_p,
 			   &maintenance_set_cmdlist,
 			   &maintenance_show_cmdlist);
+
+  add_setshow_zuinteger_unlimited_cmd ("worker-threads",
+				       class_maintenance,
+				       &n_worker_threads, _("\
+Set the number of worker threads GDB can use."), _("\
+Show the number of worker threads GDB can use."), _("\
+GDB may use multiple threads to speed up certain CPU-intensive operations,\n\
+such as demangling symbol names."),
+				       maintenance_set_worker_threads, NULL,
+				       &maintenance_set_cmdlist,
+				       &maintenance_show_cmdlist);
+
+  update_thread_pool_size ();
 }
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.20191126/gdb/maint.h ./gdb/maint.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/maint.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/maint.h	2019-12-03 01:49:15.000000000 +0000
@@ -26,6 +26,8 @@ extern void set_per_command_time (int);
 
 extern void set_per_command_space (int);
 
+extern bool worker_threads_disabled ();
+
 /* Records a run time and space usage to be used as a base for
    reporting elapsed time or change in space.  */
 
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.20191126/gdb/Makefile.in ./gdb/Makefile.in
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/Makefile.in	2019-11-26 01:49:30.000000000 +0000
+++ ./gdb/Makefile.in	2019-12-03 01:49:15.000000000 +0000
@@ -210,6 +210,9 @@ WERROR_CFLAGS = @WERROR_CFLAGS@
 GDB_WARN_CFLAGS = $(WARN_CFLAGS)
 GDB_WERROR_CFLAGS = $(WERROR_CFLAGS)
 
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+
 RDYNAMIC = @RDYNAMIC@
 
 # Where is the INTL library?  Typically in ../intl.
@@ -430,6 +433,7 @@ SUBDIR_UNITTESTS_SRCS = \
 	unittests/optional-selftests.c \
 	unittests/parse-connection-spec-selftests.c \
 	unittests/ptid-selftests.c \
+	unittests/main-thread-selftests.c \
 	unittests/mkdir-recursive-selftests.c \
 	unittests/rsp-low-selftests.c \
 	unittests/scoped_fd-selftests.c \
@@ -438,6 +442,7 @@ SUBDIR_UNITTESTS_SRCS = \
 	unittests/string_view-selftests.c \
 	unittests/style-selftests.c \
 	unittests/tracepoint-selftests.c \
+	unittests/tui-selftests.c \
 	unittests/unpack-selftests.c \
 	unittests/utils-selftests.c \
 	unittests/vec-utils-selftests.c \
@@ -581,7 +586,7 @@ INTERNAL_CFLAGS_BASE = \
 	$(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) $(ZLIBINC) \
 	$(BFD_CFLAGS) $(INCLUDE_CFLAGS) $(LIBDECNUMBER_CFLAGS) \
 	$(INTL_CFLAGS) $(INCGNU) $(ENABLE_CFLAGS) $(INTERNAL_CPPFLAGS) \
-	$(SRCHIGH_CFLAGS) $(TOP_CFLAGS)
+	$(SRCHIGH_CFLAGS) $(TOP_CFLAGS) $(PTHREAD_CFLAGS)
 INTERNAL_WARN_CFLAGS = $(INTERNAL_CFLAGS_BASE) $(GDB_WARN_CFLAGS)
 INTERNAL_CFLAGS = $(INTERNAL_WARN_CFLAGS) $(GDB_WERROR_CFLAGS)
 
@@ -595,7 +600,7 @@ LDFLAGS = @LDFLAGS@
 # PROFILE_CFLAGS is _not_ included, however, because we use monstartup.
 INTERNAL_LDFLAGS = \
 	$(CXXFLAGS) $(GLOBAL_CFLAGS) $(MH_LDFLAGS) \
-	$(LDFLAGS) $(CONFIG_LDFLAGS)
+	$(LDFLAGS) $(CONFIG_LDFLAGS) $(PTHREAD_CFLAGS)
 
 # Libraries and corresponding dependencies for compiling gdb.
 # XM_CLIBS, defined in *config files, have host-dependent libs.
@@ -606,7 +611,7 @@ CLIBS = $(SIM) $(READLINE) $(OPCODES) $(
 	@LIBS@ @GUILE_LIBS@ @PYTHON_LIBS@ \
 	$(LIBEXPAT) $(LIBLZMA) $(LIBBABELTRACE) $(LIBIPT) \
 	$(LIBIBERTY) $(WIN32LIBS) $(LIBGNU) $(LIBICONV) $(LIBMPFR) \
-	$(SRCHIGH_LIBS) $(LIBXXHASH)
+	$(SRCHIGH_LIBS) $(LIBXXHASH) $(PTHREAD_LIBS)
 CDEPS = $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE_DEPS) $(LIBCTF) \
 	$(OPCODES) $(INTL_DEPS) $(LIBIBERTY) $(CONFIG_DEPS) $(LIBGNU)
 
@@ -991,6 +996,7 @@ COMMON_SFILES = \
 	gdbsupport/signals.c \
 	gdbsupport/signals-state-save-restore.c \
 	gdbsupport/tdesc.c \
+	gdbsupport/thread-pool.c \
 	gdbsupport/xml-utils.c \
 	complaints.c \
 	completer.c \
@@ -1113,6 +1119,7 @@ COMMON_SFILES = \
 	remote-fileio.c \
 	remote-notif.c \
 	reverse.c \
+	run-on-main-thread.c \
 	rust-lang.c \
 	sentinel-frame.c \
 	ser-event.c \
@@ -1375,6 +1382,7 @@ HFILES_NO_SRCDIR = \
 	riscv-tdep.h \
 	rs6000-aix-tdep.h \
 	rs6000-tdep.h \
+	run-on-main-thread.h \
 	s390-linux-tdep.h \
 	s390-tdep.h \
 	score-tdep.h \
@@ -1470,6 +1478,7 @@ HFILES_NO_SRCDIR = \
 	gdbsupport/fileio.h \
 	gdbsupport/format.h \
 	gdbsupport/gdb-dlfcn.h \
+	gdbsupport/gdb-sigmask.h \
 	gdbsupport/gdb_assert.h \
 	gdbsupport/gdb_binary_search.h \
 	gdbsupport/gdb_tilde_expand.h \
@@ -1483,6 +1492,7 @@ HFILES_NO_SRCDIR = \
 	gdbsupport/common-inferior.h \
 	gdbsupport/netstuff.h \
 	gdbsupport/host-defs.h \
+	gdbsupport/parallel-for.h \
 	gdbsupport/pathstuff.h \
 	gdbsupport/print-utils.h \
 	gdbsupport/ptid.h \
@@ -1492,6 +1502,7 @@ HFILES_NO_SRCDIR = \
 	gdbsupport/signals-state-save-restore.h \
 	gdbsupport/symbol.h \
 	gdbsupport/tdesc.h \
+	gdbsupport/thread-pool.h \
 	gdbsupport/version.h \
 	gdbsupport/x86-xstate.h \
 	gdbsupport/xml-utils.h \
@@ -2063,7 +2074,8 @@ aclocal_m4_deps = \
 	../config/depstand.m4 \
 	../config/lcmessage.m4 \
 	../config/codeset.m4 \
-	../config/zlib.m4
+	../config/zlib.m4 \
+	../config/ax_pthread.m4
 
 $(srcdir)/aclocal.m4: @MAINTAINER_MODE_TRUE@ $(aclocal_m4_deps)
 	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
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.20191126/gdb/mdebugread.c ./gdb/mdebugread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/mdebugread.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/mdebugread.c	2019-12-03 01:49:15.000000000 +0000
@@ -1066,9 +1066,8 @@ parse_symbol (SYMR *sh, union aux_ext *a
 		FIELD_BITSIZE (*f) = 0;
 
 		enum_sym = allocate_symbol (mdebugread_objfile);
-		SYMBOL_SET_LINKAGE_NAME
-		  (enum_sym,
-		   obstack_strdup (&mdebugread_objfile->objfile_obstack,
+		enum_sym->set_linkage_name
+		  (obstack_strdup (&mdebugread_objfile->objfile_obstack,
 				   f->name));
 		SYMBOL_ACLASS_INDEX (enum_sym) = LOC_CONST;
 		SYMBOL_TYPE (enum_sym) = t;
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.20191126/gdb/mi/mi-cmds.c ./gdb/mi/mi-cmds.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/mi/mi-cmds.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/mi/mi-cmds.c	2019-12-03 01:49:15.000000000 +0000
@@ -151,6 +151,10 @@ static struct mi_cmd mi_cmds[] =
   DEF_MI_CMD_MI_1 ("stack-select-frame", mi_cmd_stack_select_frame,
 		   &mi_suppress_notification.user_selected_context),
   DEF_MI_CMD_MI ("symbol-list-lines", mi_cmd_symbol_list_lines),
+  DEF_MI_CMD_MI ("symbol-info-functions", mi_cmd_symbol_info_functions),
+  DEF_MI_CMD_MI ("symbol-info-variables", mi_cmd_symbol_info_variables),
+  DEF_MI_CMD_MI ("symbol-info-types", mi_cmd_symbol_info_types),
+  DEF_MI_CMD_MI ("symbol-info-modules", mi_cmd_symbol_info_modules),
   DEF_MI_CMD_CLI ("target-attach", "attach", 1),
   DEF_MI_CMD_MI ("target-detach", mi_cmd_target_detach),
   DEF_MI_CMD_CLI ("target-disconnect", "disconnect", 0),
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.20191126/gdb/mi/mi-cmds.h ./gdb/mi/mi-cmds.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/mi/mi-cmds.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/mi/mi-cmds.h	2019-12-03 01:49:15.000000000 +0000
@@ -94,6 +94,10 @@ extern mi_cmd_argv_ftype mi_cmd_stack_li
 extern mi_cmd_argv_ftype mi_cmd_stack_list_variables;
 extern mi_cmd_argv_ftype mi_cmd_stack_select_frame;
 extern mi_cmd_argv_ftype mi_cmd_symbol_list_lines;
+extern mi_cmd_argv_ftype mi_cmd_symbol_info_functions;
+extern mi_cmd_argv_ftype mi_cmd_symbol_info_modules;
+extern mi_cmd_argv_ftype mi_cmd_symbol_info_types;
+extern mi_cmd_argv_ftype mi_cmd_symbol_info_variables;
 extern mi_cmd_argv_ftype mi_cmd_target_detach;
 extern mi_cmd_argv_ftype mi_cmd_target_file_get;
 extern mi_cmd_argv_ftype mi_cmd_target_file_put;
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.20191126/gdb/mi/mi-interp.c ./gdb/mi/mi-interp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/mi/mi-interp.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/mi/mi-interp.c	2019-12-03 01:49:15.000000000 +0000
@@ -18,6 +18,9 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
+
+#include "mi-interp.h"
+
 #include "interps.h"
 #include "event-top.h"
 #include "event-loop.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.20191126/gdb/mi/mi-symbol-cmds.c ./gdb/mi/mi-symbol-cmds.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/mi/mi-symbol-cmds.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/mi/mi-symbol-cmds.c	2019-12-03 01:49:15.000000000 +0000
@@ -21,6 +21,8 @@
 #include "symtab.h"
 #include "objfiles.h"
 #include "ui-out.h"
+#include "source.h"
+#include "mi-getopt.h"
 
 /* Print the list of all pc addresses and lines of code for the
    provided (full or base) source file name.  The entries are sorted
@@ -59,3 +61,247 @@ mi_cmd_symbol_list_lines (const char *co
       uiout->field_signed ("line", SYMTAB_LINETABLE (s)->item[i].line);
     }
 }
+
+/* Used by the -symbol-info-* and -symbol-info-module-* commands to print
+   information about the symbol SYM in a block of index BLOCK (either
+   GLOBAL_BLOCK or STATIC_BLOCK).  KIND is the kind of symbol we searched
+   for in order to find SYM, which impact which fields are displayed in the
+   results.  */
+
+static void
+output_debug_symbol (ui_out *uiout, enum search_domain kind,
+		     struct symbol *sym, int block)
+{
+  ui_out_emit_tuple tuple_emitter (uiout, NULL);
+
+  if (SYMBOL_LINE (sym) != 0)
+    uiout->field_unsigned ("line", SYMBOL_LINE (sym));
+  uiout->field_string ("name", sym->print_name ());
+
+  if (kind == FUNCTIONS_DOMAIN || kind == VARIABLES_DOMAIN)
+    {
+      string_file tmp_stream;
+      type_print (SYMBOL_TYPE (sym), "", &tmp_stream, -1);
+      uiout->field_string ("type", tmp_stream.string ());
+
+      std::string str = symbol_to_info_string (sym, block, kind);
+      uiout->field_string ("description", str);
+    }
+}
+
+/* Actually output one nondebug symbol, puts a tuple emitter in place
+   and then outputs the fields for this msymbol.  */
+
+static void
+output_nondebug_symbol (ui_out *uiout,
+			const struct bound_minimal_symbol &msymbol)
+{
+  struct gdbarch *gdbarch = get_objfile_arch (msymbol.objfile);
+  ui_out_emit_tuple tuple_emitter (uiout, NULL);
+
+  uiout->field_core_addr ("address", gdbarch,
+			  BMSYMBOL_VALUE_ADDRESS (msymbol));
+  uiout->field_string ("name", msymbol.minsym->print_name ());
+}
+
+/* This is the guts of the commands '-symbol-info-functions',
+   '-symbol-info-variables', and '-symbol-info-types'.  It searches for
+   symbols matching KING, NAME_REGEXP, TYPE_REGEXP, and EXCLUDE_MINSYMS,
+   and then prints the matching [m]symbols in an MI structured format.  */
+
+static void
+mi_symbol_info (enum search_domain kind, const char *name_regexp,
+		const char *type_regexp, bool exclude_minsyms)
+{
+  global_symbol_searcher sym_search (kind, name_regexp);
+  sym_search.set_symbol_type_regexp (type_regexp);
+  sym_search.set_exclude_minsyms (exclude_minsyms);
+  std::vector<symbol_search> symbols = sym_search.search ();
+  ui_out *uiout = current_uiout;
+  int i = 0;
+
+  ui_out_emit_tuple outer_symbols_emitter (uiout, "symbols");
+
+  /* Debug symbols are placed first. */
+  if (i < symbols.size () && symbols[i].msymbol.minsym == nullptr)
+    {
+      ui_out_emit_list debug_symbols_list_emitter (uiout, "debug");
+
+      /* As long as we have debug symbols...  */
+      while (i < symbols.size () && symbols[i].msymbol.minsym == nullptr)
+	{
+	  symtab *symtab = symbol_symtab (symbols[i].symbol);
+	  ui_out_emit_tuple symtab_tuple_emitter (uiout, nullptr);
+
+	  uiout->field_string ("filename",
+			       symtab_to_filename_for_display (symtab));
+	  uiout->field_string ("fullname", symtab_to_fullname (symtab));
+
+	  ui_out_emit_list symbols_list_emitter (uiout, "symbols");
+
+	  /* As long as we have debug symbols from this symtab...  */
+	  for (; (i < symbols.size ()
+		  && symbols[i].msymbol.minsym == nullptr
+		  && symbol_symtab (symbols[i].symbol) == symtab);
+	       ++i)
+	    {
+	      symbol_search &s = symbols[i];
+
+	      output_debug_symbol (uiout, kind, s.symbol, s.block);
+	    }
+	}
+    }
+
+  /* Non-debug symbols are placed after.  */
+  if (i < symbols.size ())
+    {
+      ui_out_emit_list nondebug_symbols_list_emitter (uiout, "nondebug");
+
+      /* As long as we have nondebug symbols...  */
+      for (; i < symbols.size (); i++)
+	{
+	  gdb_assert (symbols[i].msymbol.minsym != nullptr);
+	  output_nondebug_symbol (uiout, symbols[i].msymbol);
+	}
+    }
+}
+
+/* Helper for mi_cmd_symbol_info_{functions,variables} - depending on KIND.
+   Processes command line options from ARGV and ARGC.  */
+
+static void
+mi_info_functions_or_variables (enum search_domain kind, char **argv, int argc)
+{
+  const char *regexp = nullptr;
+  const char *t_regexp = nullptr;
+  bool exclude_minsyms = true;
+
+  enum opt
+    {
+     INCLUDE_NONDEBUG_OPT, TYPE_REGEXP_OPT, NAME_REGEXP_OPT
+    };
+  static const struct mi_opt opts[] =
+  {
+    {"-include-nondebug" , INCLUDE_NONDEBUG_OPT, 0},
+    {"-type", TYPE_REGEXP_OPT, 1},
+    {"-name", NAME_REGEXP_OPT, 1},
+    { 0, 0, 0 }
+  };
+
+  int oind = 0;
+  char *oarg = nullptr;
+
+  while (1)
+    {
+      const char *cmd_string
+	= ((kind == FUNCTIONS_DOMAIN)
+	   ? "-symbol-info-functions" : "-symbol-info-variables");
+      int opt = mi_getopt (cmd_string, argc, argv, opts, &oind, &oarg);
+      if (opt < 0)
+	break;
+      switch ((enum opt) opt)
+	{
+	case INCLUDE_NONDEBUG_OPT:
+	  exclude_minsyms = false;
+	  break;
+	case TYPE_REGEXP_OPT:
+	  t_regexp = oarg;
+	  break;
+	case NAME_REGEXP_OPT:
+	  regexp = oarg;
+	  break;
+	}
+    }
+
+  mi_symbol_info (kind, regexp, t_regexp, exclude_minsyms);
+}
+
+/* Implement -symbol-info-functions command.  */
+
+void
+mi_cmd_symbol_info_functions (const char *command, char **argv, int argc)
+{
+  mi_info_functions_or_variables (FUNCTIONS_DOMAIN, argv, argc);
+}
+
+/* Implement -symbol-inf-modules command.  */
+
+void
+mi_cmd_symbol_info_modules (const char *command, char **argv, int argc)
+{
+  const char *regexp = nullptr;
+
+  enum opt
+    {
+     NAME_REGEXP_OPT
+    };
+  static const struct mi_opt opts[] =
+  {
+    {"-name", NAME_REGEXP_OPT, 1},
+    { 0, 0, 0 }
+  };
+
+  int oind = 0;
+  char *oarg = nullptr;
+
+  while (1)
+    {
+      int opt = mi_getopt ("-symbol-info-modules", argc, argv, opts,
+			   &oind, &oarg);
+      if (opt < 0)
+	break;
+      switch ((enum opt) opt)
+	{
+	case NAME_REGEXP_OPT:
+	  regexp = oarg;
+	  break;
+	}
+    }
+
+  mi_symbol_info (MODULES_DOMAIN, regexp, nullptr, true);
+}
+
+/* Implement -symbol-info-types command.  */
+
+void
+mi_cmd_symbol_info_types (const char *command, char **argv, int argc)
+{
+  const char *regexp = nullptr;
+
+  enum opt
+    {
+     NAME_REGEXP_OPT
+    };
+  static const struct mi_opt opts[] =
+  {
+    {"-name", NAME_REGEXP_OPT, 1},
+    { 0, 0, 0 }
+  };
+
+  int oind = 0;
+  char *oarg = nullptr;
+
+  while (true)
+    {
+      int opt = mi_getopt ("-symbol-info-types", argc, argv, opts,
+			   &oind, &oarg);
+      if (opt < 0)
+	break;
+      switch ((enum opt) opt)
+	{
+	case NAME_REGEXP_OPT:
+	  regexp = oarg;
+	  break;
+	}
+    }
+
+  mi_symbol_info (TYPES_DOMAIN, regexp, nullptr, true);
+}
+
+/* Implement -symbol-info-variables command.  */
+
+void
+mi_cmd_symbol_info_variables (const char *command, char **argv, int argc)
+{
+  mi_info_functions_or_variables (VARIABLES_DOMAIN, argv, argc);
+}
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.20191126/gdb/minsyms.c ./gdb/minsyms.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/minsyms.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/minsyms.c	2019-12-03 01:49:15.000000000 +0000
@@ -53,6 +53,12 @@
 #include "gdbsupport/symbol.h"
 #include <algorithm>
 #include "safe-ctype.h"
+#include "gdbsupport/parallel-for.h"
+#include "maint.h"
+
+#if CXX_STD_THREAD
+#include <mutex>
+#endif
 
 /* See minsyms.h.  */
 
@@ -136,12 +142,12 @@ msymbol_hash (const char *string)
 /* Add the minimal symbol SYM to an objfile's minsym hash table, TABLE.  */
 static void
 add_minsym_to_hash_table (struct minimal_symbol *sym,
-			  struct minimal_symbol **table)
+			  struct minimal_symbol **table,
+			  unsigned int hash_value)
 {
   if (sym->hash_next == NULL)
     {
-      unsigned int hash
-	= msymbol_hash (sym->linkage_name ()) % MINIMAL_SYMBOL_HASH_SIZE;
+      unsigned int hash = hash_value % MINIMAL_SYMBOL_HASH_SIZE;
 
       sym->hash_next = table[hash];
       table[hash] = sym;
@@ -152,18 +158,16 @@ add_minsym_to_hash_table (struct minimal
    TABLE.  */
 static void
 add_minsym_to_demangled_hash_table (struct minimal_symbol *sym,
-				    struct objfile *objfile)
+				    struct objfile *objfile,
+				    unsigned int hash_value)
 {
   if (sym->demangled_hash_next == NULL)
     {
-      unsigned int hash = search_name_hash (MSYMBOL_LANGUAGE (sym),
-					    sym->search_name ());
-
       objfile->per_bfd->demangled_hash_languages.set (MSYMBOL_LANGUAGE (sym));
 
       struct minimal_symbol **table
 	= objfile->per_bfd->msymbol_demangled_hash;
-      unsigned int hash_index = hash % MINIMAL_SYMBOL_HASH_SIZE;
+      unsigned int hash_index = hash_value % MINIMAL_SYMBOL_HASH_SIZE;
       sym->demangled_hash_next = table[hash_index];
       table[hash_index] = sym;
     }
@@ -1127,7 +1131,21 @@ minimal_symbol_reader::record_full (gdb:
   msymbol = &m_msym_bunch->contents[m_msym_bunch_index];
   symbol_set_language (msymbol, language_auto,
 		       &m_objfile->per_bfd->storage_obstack);
-  symbol_set_names (msymbol, name, copy_name, m_objfile->per_bfd);
+
+  if (copy_name)
+    msymbol->name = obstack_strndup (&m_objfile->per_bfd->storage_obstack,
+				     name.data (), name.size ());
+  else
+    msymbol->name = name.data ();
+
+  if (worker_threads_disabled ())
+    {
+      /* To keep our behavior as close as possible to the previous non-threaded
+	 behavior for GDB 9.1, we call symbol_set_names here when threads
+	 are disabled.  */
+      symbol_set_names (msymbol, msymbol->name, false, m_objfile->per_bfd);
+      msymbol->name_set = 1;
+    }
 
   SET_MSYMBOL_VALUE_ADDRESS (msymbol, address);
   MSYMBOL_SECTION (msymbol) = section;
@@ -1248,28 +1266,47 @@ clear_minimal_symbol_hash_tables (struct
     }
 }
 
+/* This struct is used to store values we compute for msymbols on the
+   background threads but don't need to keep around long term.  */
+struct computed_hash_values
+{
+  /* Length of the linkage_name of the symbol.  */
+  size_t name_length;
+  /* Hash code (using fast_hash) of the linkage_name.  */
+  hashval_t mangled_name_hash;
+  /* The msymbol_hash of the linkage_name.  */
+  unsigned int minsym_hash;
+  /* The msymbol_hash of the search_name.  */
+  unsigned int minsym_demangled_hash;
+};
+
 /* Build (or rebuild) the minimal symbol hash tables.  This is necessary
    after compacting or sorting the table since the entries move around
    thus causing the internal minimal_symbol pointers to become jumbled.  */
   
 static void
-build_minimal_symbol_hash_tables (struct objfile *objfile)
+build_minimal_symbol_hash_tables
+  (struct objfile *objfile,
+   const std::vector<computed_hash_values>& hash_values)
 {
   int i;
   struct minimal_symbol *msym;
 
   /* (Re)insert the actual entries.  */
-  for ((i = objfile->per_bfd->minimal_symbol_count,
+  int mcount = objfile->per_bfd->minimal_symbol_count;
+  for ((i = 0,
 	msym = objfile->per_bfd->msymbols.get ());
-       i > 0;
-       i--, msym++)
+       i < mcount;
+       i++, msym++)
     {
       msym->hash_next = 0;
-      add_minsym_to_hash_table (msym, objfile->per_bfd->msymbol_hash);
+      add_minsym_to_hash_table (msym, objfile->per_bfd->msymbol_hash,
+				hash_values[i].minsym_hash);
 
       msym->demangled_hash_next = 0;
       if (msym->search_name () != msym->linkage_name ())
-	add_minsym_to_demangled_hash_table (msym, objfile);
+	add_minsym_to_demangled_hash_table
+	  (msym, objfile, hash_values[i].minsym_demangled_hash);
     }
 }
 
@@ -1354,7 +1391,69 @@ minimal_symbol_reader::install ()
       m_objfile->per_bfd->minimal_symbol_count = mcount;
       m_objfile->per_bfd->msymbols = std::move (msym_holder);
 
-      build_minimal_symbol_hash_tables (m_objfile);
+#if CXX_STD_THREAD
+      /* Mutex that is used when modifying or accessing the demangled
+	 hash table.  */
+      std::mutex demangled_mutex;
+#endif
+
+      std::vector<computed_hash_values> hash_values (mcount);
+
+      msymbols = m_objfile->per_bfd->msymbols.get ();
+      gdb::parallel_for_each
+	(&msymbols[0], &msymbols[mcount],
+	 [&] (minimal_symbol *start, minimal_symbol *end)
+	 {
+	   for (minimal_symbol *msym = start; msym < end; ++msym)
+	     {
+	       size_t idx = msym - msymbols;
+	       hash_values[idx].name_length = strlen (msym->name);
+	       if (!msym->name_set)
+		 {
+		   /* This will be freed later, by symbol_set_names.  */
+		   char *demangled_name
+		     = symbol_find_demangled_name (msym, msym->name);
+		   symbol_set_demangled_name
+		     (msym, demangled_name,
+		      &m_objfile->per_bfd->storage_obstack);
+		   msym->name_set = 1;
+		 }
+	       /* This mangled_name_hash computation has to be outside of
+		  the name_set check, or symbol_set_names below will
+		  be called with an invalid hash value.  */
+	       hash_values[idx].mangled_name_hash
+		 = fast_hash (msym->name, hash_values[idx].name_length);
+	       hash_values[idx].minsym_hash
+		 = msymbol_hash (msym->linkage_name ());
+	       /* We only use this hash code if the search name differs
+		  from the linkage name.  See the code in
+		  build_minimal_symbol_hash_tables.  */
+	       if (msym->search_name () != msym->linkage_name ())
+		 hash_values[idx].minsym_demangled_hash
+		   = search_name_hash (MSYMBOL_LANGUAGE (msym),
+				       msym->search_name ());
+	     }
+	   {
+	     /* To limit how long we hold the lock, we only acquire it here
+	        and not while we demangle the names above.  */
+#if CXX_STD_THREAD
+	     std::lock_guard<std::mutex> guard (demangled_mutex);
+#endif
+	     for (minimal_symbol *msym = start; msym < end; ++msym)
+	       {
+		 size_t idx = msym - msymbols;
+		 symbol_set_names
+		   (msym,
+		    gdb::string_view(msym->name,
+				     hash_values[idx].name_length),
+		    false,
+		    m_objfile->per_bfd,
+		    hash_values[idx].mangled_name_hash);
+	       }
+	   }
+	 });
+
+      build_minimal_symbol_hash_tables (m_objfile, hash_values);
     }
 }
 
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.20191126/gdb/NEWS ./gdb/NEWS
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/NEWS	2019-11-26 01:49:30.000000000 +0000
+++ ./gdb/NEWS	2019-12-03 01:49:15.000000000 +0000
@@ -33,6 +33,12 @@
   provide the exitcode or exit status of the shell commands launched by
   GDB commands such as "shell", "pipe" and "make".
 
+* The command define-prefix can now define user defined prefix commands.
+  User defined commands can now be defined using these user defined prefix
+  commands.
+
+* Command names can now use the . character.
+
 * The RX port now supports XML target descriptions.
 
 * GDB now shows the Ada task names at more places, e.g. in task switching
@@ -58,6 +64,10 @@
  with extensions .gdb, .py and .scm are supported as long as GDB was
  compiled with support for that language.
 
+* GDB now supports multithreaded symbol loading for higher performance.
+  This feature is still in testing, so it is disabled by default.  You
+  can turn it on using 'maint set worker-threads unlimited'.
+
 * Python API
 
   ** The gdb.Value type has a new method 'format_string' which returns a
@@ -96,6 +106,9 @@ pipe -d DELIM COMMAND DELIM SHELL_COMMAN
   With no COMMAND, repeat the last executed command
   and send its output to SHELL_COMMAND.
 
+define-prefix COMMAND
+  Define or mark a command as a user-defined prefix command.
+  
 with SETTING [VALUE] [-- COMMAND]
 w SETTING [VALUE] [-- COMMAND]
   Temporarily set SETTING, run COMMAND, and restore SETTING.
@@ -149,6 +162,21 @@ set style highlight background COLOR
 set style highlight intensity VALUE
   Control the styling of highlightings.
 
+maint set worker-threads
+maint show worker-threads
+  Control the number of worker threads that can be used by GDB.  The
+  default is 0.  "unlimited" lets GDB choose a number that is
+  reasonable.  Currently worker threads are only used when demangling
+  the names of linker symbols.
+
+set style tui-border foreground COLOR
+set style tui-border background COLOR
+  Control the styling of TUI borders.
+
+set style tui-active-border foreground COLOR
+set style tui-active-border background COLOR
+  Control the styling of the active TUI border.
+
 maint set test-settings KIND
 maint show test-settings KIND
   A set of commands used by the testsuite for exercising the settings
@@ -168,6 +196,14 @@ show print frame-info
   'frame', 'stepi'.  The python frame filtering also respect this setting.
   The 'backtrace' '-frame-info' option can override this global setting.
 
+set tui compact-source
+show tui compact-source
+
+  Enable the "compact" display mode for the TUI source window.  The
+  compact display uses only as much space as is needed for the line
+  numbers in the current file, and only a single space to separate the
+  line numbers from the source.
+
 info modules [-q] [REGEXP]
   Return a list of Fortran modules matching REGEXP, or all modules if
   no REGEXP is given.
@@ -359,6 +395,13 @@ focus, winheight, +, -, >, <
   These can be used to catch C++ exceptions in a similar fashion to
   the CLI commands 'catch throw', 'catch rethrow', and 'catch catch'.
 
+-symbol-info-functions, -symbol-info-types, and -symbol-info-variables
+  These commands are the MI equivalent of the CLI commands 'info
+  functions', 'info types', and 'info variables' respectively.
+
+-symbol-info-modules, this is the MI equivalent of the CLI 'info
+  modules' command.
+
 * Other MI changes
 
  ** The default version of the MI interpreter is now 3 (-i=mi3).
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.20191126/gdb/nto-procfs.c ./gdb/nto-procfs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/nto-procfs.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/nto-procfs.c	2019-12-03 01:49:15.000000000 +0000
@@ -1317,7 +1317,7 @@ nto_procfs_target::create_inferior (cons
     {
       /* FIXME: expected warning?  */
       /* warning( "Failed to set Kill-on-Last-Close flag: errno = %d(%s)\n",
-         errn, strerror(errn) ); */
+         errn, safe_strerror(errn) ); */
     }
   if (!target_is_pushed (ops))
     push_target (ops);
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.20191126/gdb/parse.c ./gdb/parse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/parse.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/parse.c	2019-12-03 01:49:15.000000000 +0000
@@ -181,7 +181,7 @@ write_exp_elt_sym (struct expr_builder *
   write_exp_elt (ps, &tmp);
 }
 
-void
+static void
 write_exp_elt_msym (struct expr_builder *ps, minimal_symbol *expelt)
 {
   union exp_element tmp;
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.20191126/gdb/po/gdb.pot ./gdb/po/gdb.pot
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/po/gdb.pot	2019-11-26 01:53:02.000000000 +0000
+++ ./gdb/po/gdb.pot	2019-12-03 01:53:23.000000000 +0000
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-26 01:53+0000\n"
+"POT-Creation-Date: 2019-12-03 01:53+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"
@@ -289,42 +289,42 @@ msgstr ""
 msgid "Function name \"%s\" ambiguous here"
 msgstr ""
 
-#: ada-exp.y:1263
+#: ada-exp.y:1262
 msgid "impossible value from ada_parse_renaming"
 msgstr ""
 
-#: ada-exp.y:1281
+#: ada-exp.y:1280
 #, possible-c-format
 msgid "Invalid attempt to select from type: \"%s\"."
 msgstr ""
 
-#: ada-exp.y:1314
+#: ada-exp.y:1313
 #, possible-c-format
 msgid "No definition of \"%s\" found."
 msgstr ""
 
-#: ada-exp.y:1328 c-exp.y:1088 c-exp.y:1141 cli/cli-cmds.c:1165 d-exp.y:493
+#: 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:4286
+#: p-exp.y:766 source.c:214 symtab.c:4292
 msgid "No symbol table is loaded.  Use the \"file\" command."
 msgstr ""
 
-#: ada-exp.y:1330
+#: ada-exp.y:1329
 #, possible-c-format
 msgid "No definition of \"%s\" in current context."
 msgstr ""
 
-#: ada-exp.y:1332
+#: ada-exp.y:1331
 #, possible-c-format
 msgid "No definition of \"%s\" in specified context."
 msgstr ""
 
-#: ada-exp.y:1337
+#: ada-exp.y:1336
 #, possible-c-format
 msgid "Could not find renamed symbol \"%s\""
 msgstr ""
 
-#: ada-exp.y:1373
+#: ada-exp.y:1372
 msgid "Invalid use of type."
 msgstr ""
 
@@ -542,7 +542,7 @@ msgstr ""
 msgid "(null)"
 msgstr ""
 
-#: ada-lang.c:7644 inferior.c:420
+#: ada-lang.c:7644 inferior.c:412
 msgid "<null>"
 msgstr ""
 
@@ -698,7 +698,7 @@ msgstr ""
 msgid "cannot slice a packed array"
 msgstr ""
 
-#: ada-lang.c:10888 valops.c:3802
+#: ada-lang.c:10888 valops.c:3809
 msgid "cannot take slice of non-array"
 msgstr ""
 
@@ -2873,17 +2873,17 @@ msgstr ""
 msgid "non-aggregate type to gen_struct_elt_for_reference"
 msgstr ""
 
-#: ax-gdb.c:1607 valops.c:3347
+#: ax-gdb.c:1607 valops.c:3354
 msgid "pointers to bitfield members not allowed"
 msgstr ""
 
 #. FIXME we need a way to do "want_address" equivalent
-#: ax-gdb.c:1611 valops.c:3398
+#: ax-gdb.c:1611 valops.c:3405
 #, possible-c-format
 msgid "Cannot reference non-static field \"%s\""
 msgstr ""
 
-#: ax-gdb.c:1631 eval.c:997 valops.c:3567
+#: ax-gdb.c:1631 eval.c:997 valops.c:3574
 #, possible-c-format
 msgid "No symbol \"%s\" in namespace \"%s\"."
 msgstr ""
@@ -2979,7 +2979,7 @@ msgstr ""
 msgid "cannot subscript requested type"
 msgstr ""
 
-#: ax-gdb.c:2366 valarith.c:923
+#: ax-gdb.c:2366 valarith.c:934
 msgid "Argument to arithmetic operation not a number or boolean."
 msgstr ""
 
@@ -3345,7 +3345,7 @@ msgstr ""
 #. block supposedly visible in this function.  Let us
 #. first make sure that it is visible and if so, let
 #. us display its contents.
-#: break-catch-throw.c:103 f-valprint.c:445 probe.c:808
+#: break-catch-throw.c:103 f-valprint.c:451 probe.c:808
 msgid "No frame selected"
 msgstr ""
 
@@ -3692,7 +3692,7 @@ msgstr ""
 msgid "Catchpoint %d (%s)"
 msgstr ""
 
-#: breakpoint.c:8065 stack.c:2385 symtab.c:4317 symtab.c:4535 symtab.c:4542
+#: breakpoint.c:8065 stack.c:2385 symtab.c:4323 symtab.c:4521 symtab.c:4529
 msgid "Invalid regexp"
 msgstr ""
 
@@ -5833,26 +5833,26 @@ msgstr ""
 msgid "gdb internal error: bad var_type in do_setshow_command"
 msgstr ""
 
-#: cli/cli-decode.c:1555
+#: cli/cli-decode.c:1559
 #, possible-c-format
 msgid "Undefined %scommand: \"%s\".  Try \"help%s%.*s\"."
 msgstr ""
 
-#: cli/cli-decode.c:1589
+#: cli/cli-decode.c:1593
 #, possible-c-format
 msgid "Lack of needed %scommand"
 msgstr ""
 
-#: cli/cli-decode.c:1654
+#: cli/cli-decode.c:1658
 #, possible-c-format
 msgid "Ambiguous %scommand \"%s\": %s."
 msgstr ""
 
-#: cli/cli-decode.c:1661
+#: cli/cli-decode.c:1665
 msgid "Argument must be preceded by space."
 msgstr ""
 
-#: cli/cli-decode.c:1951
+#: cli/cli-decode.c:1955
 msgid "Invalid command"
 msgstr ""
 
@@ -5893,7 +5893,7 @@ msgstr ""
 msgid "%s%s %s\n"
 msgstr ""
 
-#: cli/cli-cmds.c:434 cli/cli-script.c:1433 infcmd.c:1215 infcmd.c:1232
+#: cli/cli-cmds.c:434 cli/cli-script.c:1444 infcmd.c:1215 infcmd.c:1232
 #: infcmd.c:1328 infcmd.c:1943 infcmd.c:2484 symfile.c:1092 symfile.c:1251
 #: symfile.c:2355 symfile.c:2442 tracepoint.c:2064 tracepoint.c:2070
 msgid "Not confirmed."
@@ -6270,11 +6270,11 @@ msgstr ""
 msgid "Print list of commands."
 msgstr ""
 
-#: cli/cli-cmds.c:2195 top.c:1918
+#: cli/cli-cmds.c:2195 top.c:1930
 msgid "Set verbosity."
 msgstr ""
 
-#: cli/cli-cmds.c:2196 top.c:1919
+#: cli/cli-cmds.c:2196 top.c:1931
 msgid "Show verbosity."
 msgstr ""
 
@@ -6582,87 +6582,94 @@ msgid ""
 "when GDB is started."
 msgstr ""
 
-#: cli/cli-script.c:156
+#: cli/cli-script.c:157
 msgid "if command requires an argument."
 msgstr ""
 
-#: cli/cli-script.c:158
+#: cli/cli-script.c:159
 msgid "while command requires an argument."
 msgstr ""
 
-#: cli/cli-script.c:160
+#: cli/cli-script.c:161
 msgid "define command requires an argument."
 msgstr ""
 
-#: cli/cli-script.c:181
+#: cli/cli-script.c:182
 msgid "Error reading in canned sequence of commands."
 msgstr ""
 
-#: cli/cli-script.c:408
+#: cli/cli-script.c:409
 msgid "Error executing canned sequence of commands."
 msgstr ""
 
-#: cli/cli-script.c:464
+#: cli/cli-script.c:465
 msgid "Max user call depth exceeded -- command aborted."
 msgstr ""
 
-#: cli/cli-script.c:689
+#: cli/cli-script.c:690
 msgid "Invalid control type in canned commands structure."
 msgstr ""
 
-#: cli/cli-script.c:877
+#: cli/cli-script.c:878
 #, possible-c-format
 msgid "Missing argument %ld in user function."
 msgstr ""
 
-#: cli/cli-script.c:905
+#: cli/cli-script.c:906
 msgid "Control nesting too deep!"
 msgstr ""
 
-#: cli/cli-script.c:1088
+#: cli/cli-script.c:1089
 msgid "Recursed on a simple control type."
 msgstr ""
 
-#: cli/cli-script.c:1314
+#: cli/cli-script.c:1315
 msgid "name of command to define"
 msgstr ""
 
-#: cli/cli-script.c:1335
+#: cli/cli-script.c:1336
 #, possible-c-format
 msgid "\"%s\" is not a prefix command."
 msgstr ""
 
-#: cli/cli-script.c:1345
+#: cli/cli-script.c:1346
 #, possible-c-format
 msgid "Junk in argument list: \"%s\""
 msgstr ""
 
-#: cli/cli-script.c:1398
+#: cli/cli-script.c:1405
+#, possible-c-format
+msgid ""
+"Keeping subcommands of prefix command \"%s\".\n"
+"Redefine command \"%s\"? "
+msgstr ""
+
+#: cli/cli-script.c:1408
 #, possible-c-format
 msgid "Redefine command \"%s\"? "
 msgstr ""
 
-#: cli/cli-script.c:1400
+#: cli/cli-script.c:1411
 #, possible-c-format
 msgid "Really redefine built-in command \"%s\"? "
 msgstr ""
 
-#: cli/cli-script.c:1402
+#: cli/cli-script.c:1413
 #, possible-c-format
 msgid "Command \"%s\" not redefined."
 msgstr ""
 
-#: cli/cli-script.c:1429
+#: cli/cli-script.c:1440
 #, possible-c-format
 msgid "Your new `%s' command does not hook any existing command."
 msgstr ""
 
-#: cli/cli-script.c:1432
+#: cli/cli-script.c:1443
 msgid "Proceed? "
 msgstr ""
 
 #. Should never come here as hookc would be 0.
-#: cli/cli-script.c:1471 gdbsupport/common-exceptions.c:93
+#: cli/cli-script.c:1499 gdbsupport/common-exceptions.c:93
 #: gdbsupport/common-exceptions.c:109 gdbsupport/common-exceptions.c:125
 #: hppa-tdep.c:3127 hppa-tdep.c:3140 infcall.c:983 infcmd.c:1576
 #: language.c:464 mi/mi-out.c:227 mi/mi-out.c:247 mips-tdep.c:305
@@ -6672,30 +6679,33 @@ msgstr ""
 msgid "bad switch"
 msgstr ""
 
-#: cli/cli-script.c:1496
+#: cli/cli-script.c:1524 cli/cli-script.c:1575
 #, possible-c-format
 msgid "Command \"%s\" is built-in."
 msgstr ""
 
-#: cli/cli-script.c:1534
+#: cli/cli-script.c:1610
 msgid "called with NULL file pointer!"
 msgstr ""
 
-#: cli/cli-script.c:1553
+#: cli/cli-script.c:1629
 #, possible-c-format
 msgid ""
 "%s:%d: Error in sourced command file:\n"
 "%s"
 msgstr ""
 
-#: cli/cli-script.c:1591
+#. "document", "define" and "define-prefix" use command_completer,
+#. as this helps the user to either type the command name and/or
+#. its prefixes.
+#: cli/cli-script.c:1678
 msgid ""
 "Document a user-defined command.\n"
 "Give command name as argument.  Give documentation on following lines.\n"
 "End with a line of just \"end\"."
 msgstr ""
 
-#: cli/cli-script.c:1595
+#: cli/cli-script.c:1683
 msgid ""
 "Define a new command name.  Command name is argument.\n"
 "Definition appears on following lines, one command per line.\n"
@@ -6706,7 +6716,15 @@ msgid ""
 "been passed."
 msgstr ""
 
-#: cli/cli-script.c:1604
+#: cli/cli-script.c:1693
+msgid ""
+"Define or mark a command as a user-defined prefix command.\n"
+"User defined prefix commands can be used as prefix commands for\n"
+"other user defined commands.\n"
+"If the command already exists, it is changed to a prefix command."
+msgstr ""
+
+#: cli/cli-script.c:1700
 msgid ""
 "Execute nested commands WHILE the conditional expression is non zero.\n"
 "The conditional expression must follow the word `while' and must in turn be\n"
@@ -6714,7 +6732,7 @@ msgid ""
 "and should be terminated by the word `end'."
 msgstr ""
 
-#: cli/cli-script.c:1610
+#: cli/cli-script.c:1706
 msgid ""
 "Execute nested commands once IF the conditional expression is non zero.\n"
 "The conditional expression must follow the word `if' and must in turn be\n"
@@ -6862,103 +6880,103 @@ msgstr ""
 msgid "Disable logging."
 msgstr ""
 
-#: cli/cli-style.c:156
+#: cli/cli-style.c:177
 msgid "The "
 msgstr ""
 
-#: cli/cli-style.c:157
+#: cli/cli-style.c:178
 #, possible-c-format
 msgid "\"%s\" style"
 msgstr ""
 
-#: cli/cli-style.c:158
+#: cli/cli-style.c:179
 #, possible-c-format
 msgid " %s is: %s\n"
 msgstr ""
 
-#: cli/cli-style.c:168
+#: cli/cli-style.c:189
 msgid "foreground color"
 msgstr ""
 
-#: cli/cli-style.c:178
+#: cli/cli-style.c:199
 msgid "background color"
 msgstr ""
 
-#: cli/cli-style.c:188
+#: cli/cli-style.c:209
 msgid "display intensity"
 msgstr ""
 
-#: cli/cli-style.c:213
+#: cli/cli-style.c:235
 msgid "Set the foreground color for this property."
 msgstr ""
 
-#: cli/cli-style.c:214
+#: cli/cli-style.c:236
 msgid "Show the foreground color for this property."
 msgstr ""
 
-#: cli/cli-style.c:221
+#: cli/cli-style.c:243
 msgid "Set the background color for this property."
 msgstr ""
 
-#: cli/cli-style.c:222
+#: cli/cli-style.c:244
 msgid "Show the background color for this property."
 msgstr ""
 
-#: cli/cli-style.c:229
+#: cli/cli-style.c:252
 msgid "Set the display intensity for this property."
 msgstr ""
 
-#: cli/cli-style.c:230
+#: cli/cli-style.c:253
 msgid "Show the display intensity for this property."
 msgstr ""
 
-#: cli/cli-style.c:243
+#: cli/cli-style.c:266
 msgid "\"set style\" must be followed by an appropriate subcommand.\n"
 msgstr ""
 
-#: cli/cli-style.c:266
+#: cli/cli-style.c:289
 msgid "CLI output styling is enabled.\n"
 msgstr ""
 
-#: cli/cli-style.c:268
+#: cli/cli-style.c:291
 msgid "CLI output styling is disabled.\n"
 msgstr ""
 
-#: cli/cli-style.c:276
+#: cli/cli-style.c:299
 msgid "Source code styling is enabled.\n"
 msgstr ""
 
-#: cli/cli-style.c:278
+#: cli/cli-style.c:301
 msgid "Source code styling is disabled.\n"
 msgstr ""
 
-#: cli/cli-style.c:296 cli/cli-style.c:300
+#: cli/cli-style.c:319 cli/cli-style.c:323
 msgid ""
 "Style-specific settings.\n"
 "Configure various style-related variables, such as colors"
 msgstr ""
 
-#: cli/cli-style.c:305
+#: cli/cli-style.c:328
 msgid "Set whether CLI styling is enabled."
 msgstr ""
 
-#: cli/cli-style.c:306
+#: cli/cli-style.c:329
 msgid "Show whether CLI is enabled."
 msgstr ""
 
-#: cli/cli-style.c:307
+#: cli/cli-style.c:330
 msgid "If enabled, output to the terminal is styled."
 msgstr ""
 
-#: cli/cli-style.c:312
+#: cli/cli-style.c:335
 msgid "Set whether source code styling is enabled."
 msgstr ""
 
-#: cli/cli-style.c:313
+#: cli/cli-style.c:336
 msgid "Show whether source code styling is enabled."
 msgstr ""
 
-#: cli/cli-style.c:314
+#: cli/cli-style.c:337
 msgid ""
 "If enabled, source code is styled.\n"
 "Note that source styling only works if styling in general is enabled,\n"
@@ -6967,31 +6985,31 @@ msgid ""
 "it was not linked against GNU Source Highlight."
 msgstr ""
 
-#: cli/cli-style.c:347
+#: cli/cli-style.c:370
 msgid ""
 "Filename display styling.\n"
 "Configure filename colors and display intensity."
 msgstr ""
 
-#: cli/cli-style.c:352
+#: cli/cli-style.c:375
 msgid ""
 "Function name display styling.\n"
 "Configure function name colors and display intensity"
 msgstr ""
 
-#: cli/cli-style.c:357
+#: cli/cli-style.c:380
 msgid ""
 "Variable name display styling.\n"
 "Configure variable name colors and display intensity"
 msgstr ""
 
-#: cli/cli-style.c:362
+#: cli/cli-style.c:385
 msgid ""
 "Address display styling.\n"
 "Configure address colors and display intensity"
 msgstr ""
 
-#: cli/cli-style.c:367
+#: cli/cli-style.c:390
 msgid ""
 "Title display styling.\n"
 "Configure title colors and display intensity\n"
@@ -7000,7 +7018,7 @@ msgid ""
 "readability."
 msgstr ""
 
-#: cli/cli-style.c:374
+#: cli/cli-style.c:397
 msgid ""
 "Highlight display styling.\n"
 "Configure highlight colors and display intensity\n"
@@ -7008,7 +7026,7 @@ msgid ""
 "of their output."
 msgstr ""
 
-#: cli/cli-style.c:381
+#: cli/cli-style.c:404
 msgid ""
 "Metadata display styling.\n"
 "Configure metadata colors and display intensity\n"
@@ -7016,6 +7034,22 @@ msgid ""
 "your data, for example \"<unavailable>\""
 msgstr ""
 
+#: cli/cli-style.c:411
+msgid ""
+"TUI border display styling.\n"
+"Configure TUI border colors\n"
+"The \"tui-border\" style is used when GDB displays the border of a\n"
+"TUI window that does not have the focus."
+msgstr ""
+
+#: cli/cli-style.c:418
+msgid ""
+"TUI active border display styling.\n"
+"Configure TUI active border colors\n"
+"The \"tui-active-border\" style is used when GDB displays the border of a\n"
+"TUI window that does have the focus."
+msgstr ""
+
 #: cli/cli-utils.c:43
 msgid "History value must have integer type."
 msgstr ""
@@ -7789,23 +7823,23 @@ msgstr ""
 msgid "Show max number of complaints about incorrect symbols."
 msgstr ""
 
-#: completer.c:1610
+#: completer.c:1593
 msgid "Max completions reached."
 msgstr ""
 
-#: completer.c:2378
+#: completer.c:2361
 msgid "*** List may be truncated, max-completions reached. ***"
 msgstr ""
 
-#: completer.c:2959
+#: completer.c:2942
 msgid "Set maximum number of completion candidates."
 msgstr ""
 
-#: completer.c:2960
+#: completer.c:2943
 msgid "Show maximum number of completion candidates."
 msgstr ""
 
-#: completer.c:2961
+#: completer.c:2944
 msgid ""
 "Use this to limit the number of candidates considered\n"
 "during completion.  Specifying \"unlimited\" or -1\n"
@@ -8058,17 +8092,17 @@ msgstr ""
 msgid "Deprecated placeholder for removed functionality."
 msgstr ""
 
-#: cp-support.c:572
+#: cp-support.c:576
 #, possible-c-format
 msgid "internal error: string \"%s\" failed to be canonicalized"
 msgstr ""
 
-#: cp-support.c:1438
+#: cp-support.c:1442
 #, possible-c-format
 msgid "RTTI symbol not found for class '%s'"
 msgstr ""
 
-#: cp-support.c:1444
+#: cp-support.c:1448
 #, possible-c-format
 msgid "RTTI symbol for class '%s' is not a type"
 msgstr ""
@@ -8077,48 +8111,48 @@ msgstr ""
 #. symbols for namespaces with the same name as the struct.
 #. This warning is an indication of a bug in the lookup order
 #. or a bug in the way that the symbol tables are populated.
-#: cp-support.c:1459
+#: cp-support.c:1463
 #, possible-c-format
 msgid "RTTI symbol for class '%s' is a namespace"
 msgstr ""
 
-#: cp-support.c:1462
+#: cp-support.c:1466
 #, possible-c-format
 msgid "RTTI symbol for class '%s' has bad type"
 msgstr ""
 
-#: cp-support.c:1581
+#: cp-support.c:1515
 #, possible-c-format
 msgid "unable to demangle '%s' (demangler failed with signal %d)"
 msgstr ""
 
-#: cp-support.c:1595
+#: cp-support.c:1529
 #, possible-c-format
 msgid ""
 "%s\n"
 "Attempting to dump core.\n"
 msgstr ""
 
-#: cp-support.c:2034
+#: cp-support.c:2031
 #, possible-c-format
 msgid ""
 "%s:%d: make-paramless self-test failed: (completion=%d) \"%s\" -> %s, "
 "expected %s"
 msgstr ""
 
-#: cp-support.c:2129
+#: cp-support.c:2126
 msgid "\"maintenance cplus\" must be followed by the name of a command.\n"
 msgstr ""
 
-#: cp-support.c:2174
+#: cp-support.c:2171
 msgid "C++ maintenance commands."
 msgstr ""
 
-#: cp-support.c:2185
+#: cp-support.c:2182
 msgid "Print the first class/namespace component of NAME."
 msgstr ""
 
-#: cp-support.c:2189
+#: cp-support.c:2186
 msgid ""
 "Show the virtual function table for a C++ object.\n"
 "Usage: info vtbl EXPRESSION\n"
@@ -8126,15 +8160,15 @@ msgid ""
 "resulting object."
 msgstr ""
 
-#: cp-support.c:2196
+#: cp-support.c:2193
 msgid "Set whether to attempt to catch demangler crashes."
 msgstr ""
 
-#: cp-support.c:2197
+#: cp-support.c:2194
 msgid "Show whether to attempt to catch demangler crashes."
 msgstr ""
 
-#: cp-support.c:2198
+#: cp-support.c:2195
 msgid ""
 "If enabled GDB will attempt to catch demangler crashes and\n"
 "display the offending symbol."
@@ -8314,7 +8348,7 @@ msgstr ""
 msgid "ctf_variable_iter psymtab_to_symtab failed - %s"
 msgstr ""
 
-#: ctfread.c:1246 dwarf2read.c:9510
+#: ctfread.c:1246 dwarf2read.c:9513
 #, possible-c-format
 msgid "bug: psymtab for %s is already read in."
 msgstr ""
@@ -8324,7 +8358,7 @@ msgstr ""
 msgid "Reading in CTF data for %s..."
 msgstr ""
 
-#: ctfread.c:1270 dwarf2read.c:9541 mdebugread.c:295
+#: ctfread.c:1270 dwarf2read.c:9544 mdebugread.c:295
 msgid "done.\n"
 msgstr ""
 
@@ -9353,7 +9387,7 @@ msgstr ""
 
 #. If we haven't found it yet, ignore it.  It's
 #. probably some new type we don't know about yet.
-#: dbxread.c:175 mdebugread.c:3340
+#: dbxread.c:175 mdebugread.c:3339
 #, possible-c-format
 msgid "unknown symbol type %s"
 msgstr ""
@@ -9390,7 +9424,7 @@ msgstr ""
 msgid "bad string table offset in symbol %d"
 msgstr ""
 
-#: dbxread.c:943 mdebugread.c:2226 xcoffread.c:2161
+#: dbxread.c:943 mdebugread.c:2225 xcoffread.c:2161
 #, possible-c-format
 msgid "function `%s' appears to be defined outside of all compilation units"
 msgstr ""
@@ -9427,7 +9461,7 @@ msgstr ""
 #. certainly don't want to spend the time searching to
 #. the end of every string looking for a
 #. backslash.
-#: dbxread.c:1751 mdebugread.c:3276 xcoffread.c:2868
+#: dbxread.c:1751 mdebugread.c:3275 xcoffread.c:2868
 #, possible-c-format
 msgid "unknown symbol descriptor `%c'"
 msgstr ""
@@ -9451,7 +9485,7 @@ msgid "block start larger than block end
 msgstr ""
 
 #: dbxread.c:2720 exec.c:521 exec.c:787 gdbsupport/print-utils.c:77
-#: gdbsupport/print-utils.c:120 gdbsupport/print-utils.c:288 mdebugread.c:3598
+#: gdbsupport/print-utils.c:120 gdbsupport/print-utils.c:288 mdebugread.c:3597
 #: printcmd.c:1013 printcmd.c:2704 psymtab.c:695 psymtab.c:708 target.c:647
 #: ui-out.c:782 utils.c:1574 valprint.c:1367
 msgid "failed internal consistency check"
@@ -9588,11 +9622,11 @@ msgstr ""
 msgid "Can't read elf symbols from %s: %s"
 msgstr ""
 
-#: dictionary.c:536
+#: dictionary.c:526
 msgid "dict_add_symbol: non-expandable dictionary"
 msgstr ""
 
-#: dictionary.c:1101
+#: dictionary.c:1091
 msgid ""
 "create_new_language_dictionary: attempted to expand non-expandable "
 "multidictionary"
@@ -10262,145 +10296,145 @@ msgstr ""
 msgid "The upper bound on the age of cached DWARF compilation units is %s.\n"
 msgstr ""
 
-#: dwarf2read.c:2030
+#: dwarf2read.c:2033
 msgid "statement list doesn't fit in .debug_line section"
 msgstr ""
 
-#: dwarf2read.c:2036
+#: dwarf2read.c:2039
 msgid ".debug_line section has line data without a file"
 msgstr ""
 
-#: dwarf2read.c:2042
+#: dwarf2read.c:2045
 msgid ".debug_line section has line program sequence without an end"
 msgstr ""
 
-#: dwarf2read.c:2049
+#: dwarf2read.c:2052
 msgid "location expression too complex"
 msgstr ""
 
-#: dwarf2read.c:2056
+#: dwarf2read.c:2059
 #, possible-c-format
 msgid "const value length mismatch for '%s', got %d, expected %d"
 msgstr ""
 
-#: dwarf2read.c:2063
+#: dwarf2read.c:2066
 #, possible-c-format
 msgid "debug info runs off end of %s section [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:2072
+#: dwarf2read.c:2075
 #, possible-c-format
 msgid ""
 "macro debug info contains a malformed macro definition:\n"
 "`%s'"
 msgstr ""
 
-#: dwarf2read.c:2080
+#: dwarf2read.c:2083
 #, possible-c-format
 msgid "invalid attribute class or form for '%s' in '%s'"
 msgstr ""
 
-#: dwarf2read.c:2367
+#: dwarf2read.c:2370
 #, possible-c-format
 msgid ""
 "Discarding section %s which has a section size (%s) larger than the file "
 "size [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:2512
+#: dwarf2read.c:2515
 #, possible-c-format
 msgid ""
 "Dwarf Error: DWP format V2 with relocations is not supported in section %s "
 "[in module %s]"
 msgstr ""
 
-#: dwarf2read.c:2556
+#: dwarf2read.c:2559
 #, possible-c-format
 msgid "Dwarf Error: Can't read DWARF data in section %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:2685
+#: dwarf2read.c:2688
 #, possible-c-format
 msgid "could not read '.gnu_debugaltlink' section: %s"
 msgstr ""
 
-#: dwarf2read.c:2718
+#: dwarf2read.c:2721
 #, possible-c-format
 msgid "could not find '.gnu_debugaltlink' file for %s"
 msgstr ""
 
-#: dwarf2read.c:3193
+#: dwarf2read.c:3196
 #, possible-c-format
 msgid ".gdb_index address table has invalid range (%s - %s)"
 msgstr ""
 
-#: dwarf2read.c:3200
+#: dwarf2read.c:3203
 #, possible-c-format
 msgid ".gdb_index address table has invalid CU number %u"
 msgstr ""
 
-#: dwarf2read.c:3241
+#: dwarf2read.c:3244
 #, possible-c-format
 msgid ""
 "Section .debug_aranges in %s has duplicate debug_info_offset %s, ignoring ."
 "debug_aranges."
 msgstr ""
 
-#: dwarf2read.c:3268
+#: dwarf2read.c:3271
 #, possible-c-format
 msgid ""
 "Section .debug_aranges in %s entry at offset %s length %s exceeds section "
 "length %s, ignoring .debug_aranges."
 msgstr ""
 
-#: dwarf2read.c:3283
+#: dwarf2read.c:3286
 #, possible-c-format
 msgid ""
 "Section .debug_aranges in %s entry at offset %s has unsupported version %d, "
 "ignoring .debug_aranges."
 msgstr ""
 
-#: dwarf2read.c:3297
+#: dwarf2read.c:3300
 #, possible-c-format
 msgid ""
 "Section .debug_aranges in %s entry at offset %s debug_info_offset %s does "
 "not exists, ignoring .debug_aranges."
 msgstr ""
 
-#: dwarf2read.c:3310
+#: dwarf2read.c:3313
 #, possible-c-format
 msgid ""
 "Section .debug_aranges in %s entry at offset %s address_size %u is invalid, "
 "ignoring .debug_aranges."
 msgstr ""
 
-#: dwarf2read.c:3320
+#: dwarf2read.c:3323
 #, possible-c-format
 msgid ""
 "Section .debug_aranges in %s entry at offset %s segment_selector_size %u is "
 "not supported, ignoring .debug_aranges."
 msgstr ""
 
-#: dwarf2read.c:3337
+#: dwarf2read.c:3340
 #, possible-c-format
 msgid ""
 "Section .debug_aranges in %s entry at offset %s padding is not zero, "
 "ignoring .debug_aranges."
 msgstr ""
 
-#: dwarf2read.c:3348
+#: dwarf2read.c:3351
 #, possible-c-format
 msgid ""
 "Section .debug_aranges in %s entry at offset %s address list is not properly "
 "terminated, ignoring .debug_aranges."
 msgstr ""
 
-#: dwarf2read.c:3478
+#: dwarf2read.c:3481
 #, possible-c-format
 msgid "Skipping obsolete .gdb_index section in %s."
 msgstr ""
 
-#: dwarf2read.c:3497
+#: dwarf2read.c:3500
 #, possible-c-format
 msgid ""
 "Skipping deprecated .gdb_index section in %s.\n"
@@ -10408,188 +10442,188 @@ msgid ""
 "to use the section anyway."
 msgstr ""
 
-#: dwarf2read.c:3617
+#: dwarf2read.c:3620
 #, possible-c-format
 msgid "could not read '.gdb_index' section from %s; skipping"
 msgstr ""
 
-#: dwarf2read.c:3993 dwarf2read.c:5084
+#: dwarf2read.c:3996 dwarf2read.c:5087
 #, possible-c-format
 msgid ".gdb_index entry has bad CU index [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:4120
+#: dwarf2read.c:4123
 #, possible-c-format
 msgid "  Number of read CUs: %d\n"
 msgstr ""
 
-#: dwarf2read.c:4121
+#: dwarf2read.c:4124
 #, possible-c-format
 msgid "  Number of unread CUs: %d\n"
 msgstr ""
 
-#: dwarf2read.c:4622
+#: dwarf2read.c:4625
 #, possible-c-format
 msgid "%s:%d: match_type=%s, looking-for=\"%s\", expected=\"%s\", got=\"%s\"\n"
 msgstr ""
 
-#: dwarf2read.c:5254
+#: dwarf2read.c:5257
 #, possible-c-format
 msgid "(Internal error: pc %s in read in CU, but not in symtab.)"
 msgstr ""
 
 #. There may be multiple per-CU indices.
-#: dwarf2read.c:5399
+#: dwarf2read.c:5402
 #, possible-c-format
 msgid ""
 "Section .debug_names in %s length %s does not match section length %s, "
 "ignoring .debug_names."
 msgstr ""
 
-#: dwarf2read.c:5411
+#: dwarf2read.c:5414
 #, possible-c-format
 msgid ""
 "Section .debug_names in %s has unsupported version %d, ignoring .debug_names."
 msgstr ""
 
-#: dwarf2read.c:5422
+#: dwarf2read.c:5425
 #, possible-c-format
 msgid ""
 "Section .debug_names in %s has unsupported padding %d, ignoring .debug_names."
 msgstr ""
 
-#: dwarf2read.c:5443
+#: dwarf2read.c:5446
 #, possible-c-format
 msgid ""
 "Section .debug_names in %s has unsupported %lu foreign TUs, ignoring ."
 "debug_names."
 msgstr ""
 
-#: dwarf2read.c:5506
+#: dwarf2read.c:5509
 #, possible-c-format
 msgid ""
 "Section .debug_names in %s has duplicate index %s, ignoring .debug_names."
 msgstr ""
 
-#: dwarf2read.c:5535
+#: dwarf2read.c:5538
 #, possible-c-format
 msgid ""
 "Section .debug_names in %s has abbreviation_table of size %s vs. written as %"
 "u, ignoring .debug_names."
 msgstr ""
 
-#: dwarf2read.c:5633
+#: dwarf2read.c:5636
 #, possible-c-format
 msgid "could not read '.debug_names' section from %s; skipping"
 msgstr ""
 
-#: dwarf2read.c:5769 dwarf2read.c:5821
+#: dwarf2read.c:5772 dwarf2read.c:5824
 #, possible-c-format
 msgid "Wrong .debug_names with name index %u but name_count=%u [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:5792
+#: dwarf2read.c:5795
 #, possible-c-format
 msgid "Wrong .debug_names hash for string at index %u [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:5858
+#: dwarf2read.c:5861
 #, possible-c-format
 msgid "Wrong .debug_names undefined abbrev code %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:5886
+#: dwarf2read.c:5889
 #, possible-c-format
 msgid "Unsupported .debug_names form %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:5897
+#: dwarf2read.c:5900
 #, possible-c-format
 msgid ".debug_names entry has bad CU index %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:5909
+#: dwarf2read.c:5912
 #, possible-c-format
 msgid ".debug_names entry has bad TU index %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:6460
+#: dwarf2read.c:6463
 #, possible-c-format
 msgid ""
 "Dwarf Error: wrong version in compilation unit header (is %d, should be 2, "
 "3, 4 or 5) [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:6475
+#: dwarf2read.c:6478
 msgid "read_comp_unit_head: invalid section_kind"
 msgstr ""
 
-#: dwarf2read.c:6489
+#: dwarf2read.c:6492
 #, possible-c-format
 msgid ""
 "Dwarf Error: wrong unit_type in compilation unit header (is %s, should be %"
 "s) [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:6499
+#: dwarf2read.c:6502
 #, possible-c-format
 msgid ""
 "Dwarf Error: wrong unit_type in compilation unit header (is %#04x, should be "
 "one of: %s, %s, %s, %s or %s) [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:6524
+#: dwarf2read.c:6527
 msgid "read_comp_unit_head: dwarf from non elf file"
 msgstr ""
 
-#: dwarf2read.c:6544
+#: dwarf2read.c:6547
 #, possible-c-format
 msgid ""
 "Dwarf Error: Too big type_offset in compilation unit header (is %s) [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:6583
+#: dwarf2read.c:6586
 #, possible-c-format
 msgid ""
 "Dwarf Error: bad offset (%s) in compilation unit header (offset %s + 6) [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:6593
+#: dwarf2read.c:6596
 #, possible-c-format
 msgid ""
 "Dwarf Error: bad length (0x%x) in compilation unit header (offset %s + 0) "
 "[in module %s]"
 msgstr ""
 
-#: dwarf2read.c:6884
+#: dwarf2read.c:6887
 #, possible-c-format
 msgid ""
 "debug type entry at offset %s is duplicate to the entry at offset %s, "
 "signature %s"
 msgstr ""
 
-#: dwarf2read.c:7319
+#: dwarf2read.c:7322
 #, possible-c-format
 msgid ""
 "Dwarf Error: signature mismatch %s vs %s while reading TU at offset %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:7454
+#: dwarf2read.c:7457
 #, possible-c-format
 msgid "Dwarf Error: missing dwo_id for dwo_name %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:7715
+#: dwarf2read.c:7718
 #, possible-c-format
 msgid ""
 "compilation unit with DW_AT_GNU_dwo_name has children (offset %s) [in module "
 "%s]"
 msgstr ""
 
-#: dwarf2read.c:8771 dwarf2read.c:10595
+#: dwarf2read.c:8774 dwarf2read.c:10598
 #, possible-c-format
 msgid ""
 "Dwarf Error: DW_TAG_imported_unit is not supported in type units [in module %"
@@ -10599,204 +10633,204 @@ msgstr ""
 #. FIXME drow/2004-04-01: What should we be doing with
 #. function-local names?  For partial symbols, we should probably be
 #. ignoring them.
-#: dwarf2read.c:8894
+#: dwarf2read.c:8897
 #, possible-c-format
 msgid "unhandled containing DIE tag %s for DIE at %s"
 msgstr ""
 
-#: dwarf2read.c:9266 dwarf2read.c:18635
+#: dwarf2read.c:9269 dwarf2read.c:18770
 msgid "malformed enumerator DIE ignored"
 msgstr ""
 
-#: dwarf2read.c:9305
+#: dwarf2read.c:9308
 #, possible-c-format
 msgid ""
 "Dwarf Error: Could not find abbrev number %d in %s at offset %s [in module %"
 "s]"
 msgstr ""
 
-#: dwarf2read.c:9358 dwarf2read.c:18855
+#: dwarf2read.c:9361 dwarf2read.c:18990
 msgid "ignoring absolute DW_AT_sibling"
 msgstr ""
 
-#: dwarf2read.c:9365 dwarf2read.c:18863
+#: dwarf2read.c:9368 dwarf2read.c:18998
 msgid "DW_AT_sibling points backwards"
 msgstr ""
 
-#: dwarf2read.c:9462 dwarf2read.c:19466
+#: dwarf2read.c:9465 dwarf2read.c:19601
 #, possible-c-format
 msgid "Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:9517 mdebugread.c:282
+#: dwarf2read.c:9520 mdebugread.c:282
 #, possible-c-format
 msgid "Reading in symbols for %s..."
 msgstr ""
 
-#: dwarf2read.c:9930
+#: dwarf2read.c:9933
 #, possible-c-format
 msgid "Symtab %s has objects from two different Go packages: %s and %s"
 msgstr ""
 
-#: dwarf2read.c:10057
+#: dwarf2read.c:10060
 #, possible-c-format
 msgid "Could not parse Rust enum encoding string \"%s\"[in module %s]"
 msgstr ""
 
-#: dwarf2read.c:10739
+#: dwarf2read.c:10742
 #, possible-c-format
 msgid "Tag '%s' has unexpected children"
 msgstr ""
 
-#: dwarf2read.c:10973
+#: dwarf2read.c:10976
 msgid "template parameter missing DW_AT_type"
 msgstr ""
 
-#: dwarf2read.c:10989
+#: dwarf2read.c:10992
 msgid "template parameter missing DW_AT_const_value"
 msgstr ""
 
 #. It may not mean a bug in GDB.  The compiler could also
 #. compute DW_AT_linkage_name incorrectly.  But in such case
 #. GDB would need to be bug-to-bug compatible.
-#: dwarf2read.c:11181
+#: dwarf2read.c:11184
 #, possible-c-format
 msgid ""
 "Computed physname <%s> does not match demangled <%s> (from linkage <%s>) - "
 "DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:11242
+#: dwarf2read.c:11245
 #, possible-c-format
 msgid "DIE at %s has too many recursively imported declarations"
 msgstr ""
 
-#: dwarf2read.c:11305 dwarf2read.c:11395
+#: dwarf2read.c:11308 dwarf2read.c:11398
 #, possible-c-format
 msgid "Tag '%s' has no DW_AT_import"
 msgstr ""
 
-#: dwarf2read.c:11385
+#: dwarf2read.c:11388
 #, possible-c-format
 msgid "child DW_TAG_imported_declaration expected - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:11406
+#: dwarf2read.c:11409
 #, possible-c-format
 msgid ""
 "child DW_TAG_imported_declaration has unknown imported name - DIE at %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:11671
+#: dwarf2read.c:11674
 msgid "CU refers to both DW_AT_macros and DW_AT_macro_info"
 msgstr ""
 
-#: dwarf2read.c:11973
+#: dwarf2read.c:11976
 #, possible-c-format
 msgid ""
 "Dwarf Error: debug entry at offset %s is missing its dwo_id [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12053
+#: dwarf2read.c:12056
 #, possible-c-format
 msgid ""
 "debug cu entry at offset %s is duplicate to the entry at offset %s, "
 "signature %s"
 msgstr ""
 
-#: dwarf2read.c:12236
+#: dwarf2read.c:12239
 #, possible-c-format
 msgid "Dwarf Error: unsupported DWP file version (%s) [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12242
+#: dwarf2read.c:12245
 #, possible-c-format
 msgid ""
 "Dwarf Error: number of slots in DWP hash table (%s) is not power of 2 [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:12263
+#: dwarf2read.c:12266
 #, possible-c-format
 msgid "Empty DWP but nr_slots,nr_units,nr_columns not all zero [in modules %s]"
 msgstr ""
 
-#: dwarf2read.c:12288
+#: dwarf2read.c:12291
 #, possible-c-format
 msgid ""
 "Dwarf Error: bad DWP hash table, too few columns in section table [in module "
 "%s]"
 msgstr ""
 
-#: dwarf2read.c:12294
+#: dwarf2read.c:12297
 #, possible-c-format
 msgid ""
 "Dwarf Error: bad DWP hash table, too many columns in section table [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:12306
+#: dwarf2read.c:12309
 #, possible-c-format
 msgid ""
 "Dwarf Error: bad DWP hash table, bad section id %d in section table [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:12312
+#: dwarf2read.c:12315
 #, possible-c-format
 msgid ""
 "Dwarf Error: bad DWP hash table, duplicate section id %d in section table "
 "[in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12324
+#: dwarf2read.c:12327
 #, possible-c-format
 msgid ""
 "Dwarf Error: bad DWP hash table, missing/duplicate DWO info/types section "
 "[in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12331
+#: dwarf2read.c:12334
 #, possible-c-format
 msgid ""
 "Dwarf Error: bad DWP hash table, missing DWO abbrev section [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12343
+#: dwarf2read.c:12346
 #, possible-c-format
 msgid "Dwarf Error: DWP index section is corrupt (too small) [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12492
+#: dwarf2read.c:12495
 #, possible-c-format
 msgid ""
 "Dwarf Error: bad DWP hash table, section number too large [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12500
+#: dwarf2read.c:12503
 #, possible-c-format
 msgid "Dwarf Error: bad DWP hash table, invalid section found [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12510
+#: dwarf2read.c:12513
 #, possible-c-format
 msgid "Dwarf Error: bad DWP hash table, missing DWO sections [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12516
+#: dwarf2read.c:12519
 #, possible-c-format
 msgid "Dwarf Error: bad DWP hash table, too many DWO sections [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12621
+#: dwarf2read.c:12624
 #, possible-c-format
 msgid ""
 "Dwarf Error: Bad DWP V2 section info, doesn't fit in section %s [in module %"
 "s]"
 msgstr ""
 
-#: dwarf2read.c:12867
+#: dwarf2read.c:12870
 #, possible-c-format
 msgid "Dwarf Error: bad DWP hash table, lookup didn't terminate [in module %s]"
 msgstr ""
@@ -10804,86 +10838,86 @@ msgstr ""
 #. Technically speaking, we should try to limp along, but this is
 #. pretty bizarre.  We use pulongest here because that's the established
 #. portability solution (e.g, we cannot use %u for uint32_t).
-#: dwarf2read.c:13318
+#: dwarf2read.c:13321
 #, possible-c-format
 msgid ""
 "Dwarf Error: DWP file CU version %s doesn't match TU version %s [in DWP file "
 "%s]"
 msgstr ""
 
-#: dwarf2read.c:13494
+#: dwarf2read.c:13497
 #, possible-c-format
 msgid ""
 "Could not find DWO %s %s(%s)%s referenced by %s at offset %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:13612
+#: dwarf2read.c:13615
 #, possible-c-format
 msgid "DIE %s and its abstract origin %s have different tags"
 msgstr ""
 
-#: dwarf2read.c:13658
+#: dwarf2read.c:13661
 #, possible-c-format
 msgid "Child DIE %s and its abstract origin %s have different tags"
 msgstr ""
 
-#: dwarf2read.c:13663
+#: dwarf2read.c:13666
 #, possible-c-format
 msgid "Child DIE %s and its abstract origin %s have different parents"
 msgstr ""
 
-#: dwarf2read.c:13675
+#: dwarf2read.c:13678
 #, possible-c-format
 msgid "Multiple children of DIE %s refer to DIE %s as their abstract origin"
 msgstr ""
 
-#: dwarf2read.c:13741
+#: dwarf2read.c:13747
 #, possible-c-format
 msgid "missing name for subprogram DIE at %s"
 msgstr ""
 
-#: dwarf2read.c:13752
+#: dwarf2read.c:13758
 #, possible-c-format
 msgid "cannot get low and high bounds for subprogram DIE at %s"
 msgstr ""
 
-#: dwarf2read.c:13997
+#: dwarf2read.c:14003
 #, possible-c-format
 msgid "missing DW_AT_call_return_pc for DW_TAG_call_site DIE %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:14013
+#: dwarf2read.c:14019
 #, possible-c-format
 msgid "Duplicate PC %s for DW_TAG_call_site DIE %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:14029
+#: dwarf2read.c:14035
 #, possible-c-format
 msgid ""
 "Tag %d is not DW_TAG_call_site_parameter in DW_TAG_call_site child DIE %s "
 "[in module %s]"
 msgstr ""
 
-#: dwarf2read.c:14091
+#: dwarf2read.c:14097
 #, possible-c-format
 msgid "Cannot find function owning DW_TAG_call_site DIE %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:14137
+#: dwarf2read.c:14143
 #, possible-c-format
 msgid ""
 "DW_AT_call_target target DIE has invalid physname, for referencing DIE %s "
 "[in module %s]"
 msgstr ""
 
-#: dwarf2read.c:14150
+#: dwarf2read.c:14156
 #, possible-c-format
 msgid ""
 "DW_AT_call_target target DIE has invalid low pc, for referencing DIE %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:14161
+#: dwarf2read.c:14167
 #, possible-c-format
 msgid ""
 "DW_TAG_call_site DW_AT_call_target is neither block nor reference, for DIE %"
@@ -10893,176 +10927,176 @@ msgstr ""
 #. As DW_OP_GNU_parameter_ref uses CU-relative offset this
 #. binding can be done only inside one CU.  Such referenced DIE
 #. therefore cannot be even moved to DW_TAG_partial_unit.
-#: dwarf2read.c:14207
+#: dwarf2read.c:14213
 #, possible-c-format
 msgid ""
 "DW_AT_call_parameter offset is not in CU for DW_TAG_call_site child DIE %s "
 "[in module %s]"
 msgstr ""
 
-#: dwarf2read.c:14218
+#: dwarf2read.c:14224
 #, possible-c-format
 msgid ""
 "No DW_FORM_block* DW_AT_location for DW_TAG_call_site child DIE %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:14235
+#: dwarf2read.c:14241
 #, possible-c-format
 msgid ""
 "Only single DW_OP_reg or DW_OP_fbreg is supported for DW_FORM_block* "
 "DW_AT_location is supported for DW_TAG_call_site child DIE %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:14250
+#: dwarf2read.c:14256
 #, possible-c-format
 msgid ""
 "No DW_FORM_block* DW_AT_call_value for DW_TAG_call_site child DIE %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:14270
+#: dwarf2read.c:14276
 #, possible-c-format
 msgid ""
 "No DW_FORM_block* DW_AT_call_data_value for DW_TAG_call_site child DIE %s "
 "[in module %s]"
 msgstr ""
 
-#: dwarf2read.c:14377 dwarf2read.c:14545
+#: dwarf2read.c:14383 dwarf2read.c:14551
 #, possible-c-format
 msgid "Offset %d out of bounds for DW_AT_ranges attribute"
 msgstr ""
 
 #. We have no valid base address for the ranges
 #. data.
-#: dwarf2read.c:14458 dwarf2read.c:14470
+#: dwarf2read.c:14464 dwarf2read.c:14476
 msgid "Invalid .debug_rnglists data (no base address)"
 msgstr ""
 
 #. Inverted range entries are invalid.
-#: dwarf2read.c:14477
+#: dwarf2read.c:14483
 msgid "Invalid .debug_rnglists data (inverted range)"
 msgstr ""
 
-#: dwarf2read.c:14493
+#: dwarf2read.c:14499
 #, possible-c-format
 msgid ".debug_rnglists entry has start address of zero [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:14503
+#: dwarf2read.c:14509
 #, possible-c-format
 msgid "Offset %d is not terminated for DW_AT_ranges attribute"
 msgstr ""
 
 #. We have no valid base address for the ranges
 #. data.
-#: dwarf2read.c:14584
+#: dwarf2read.c:14590
 msgid "Invalid .debug_ranges data (no base address)"
 msgstr ""
 
 #. Inverted range entries are invalid.
-#: dwarf2read.c:14591
+#: dwarf2read.c:14597
 msgid "Invalid .debug_ranges data (inverted range)"
 msgstr ""
 
-#: dwarf2read.c:14607
+#: dwarf2read.c:14613
 #, possible-c-format
 msgid ".debug_ranges entry has start address of zero [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:15319
+#: dwarf2read.c:15330
 #, possible-c-format
 msgid "Unhandled DW_AT_accessibility value (%x)"
 msgstr ""
 
-#: dwarf2read.c:15416
+#: dwarf2read.c:15427
 #, possible-c-format
 msgid "unsupported accessibility %d"
 msgstr ""
 
-#: dwarf2read.c:15428
+#: dwarf2read.c:15439
 msgid "unexpected virtuality in component of Ada type"
 msgstr ""
 
-#: dwarf2read.c:15480
+#: dwarf2read.c:15491
 msgid "unexpected member function in Ada type"
 msgstr ""
 
-#: dwarf2read.c:15545
+#: dwarf2read.c:15556
 #, possible-c-format
 msgid "member function type missing for '%s'"
 msgstr ""
 
-#: dwarf2read.c:15617
+#: dwarf2read.c:15628
 #, possible-c-format
 msgid "cannot determine context for virtual member function \"%s\" (offset %s)"
 msgstr ""
 
 #. GCC does this, as of 2008-08-25; PR debug/37237.
-#: dwarf2read.c:15644
+#: dwarf2read.c:15655
 #, possible-c-format
 msgid ""
 "Member function \"%s\" (offset %s) is virtual but the vtable offset is not "
 "specified"
 msgstr ""
 
-#: dwarf2read.c:15660
+#: dwarf2read.c:15671
 msgid "unexpected member functions in Ada type"
 msgstr ""
 
-#: dwarf2read.c:15757
+#: dwarf2read.c:15768
 #, possible-c-format
 msgid "DW_AT_alignment must have constant form - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:15770
+#: dwarf2read.c:15781
 #, possible-c-format
 msgid "DW_AT_alignment value must not be negative - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:15783
+#: dwarf2read.c:15794
 #, possible-c-format
 msgid "DW_AT_alignment value must not be zero - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:15791
+#: dwarf2read.c:15802
 #, possible-c-format
 msgid "DW_AT_alignment value must be a power of 2 - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:15809
+#: dwarf2read.c:15820
 #, possible-c-format
 msgid "DW_AT_alignment value too large - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:16019
+#: dwarf2read.c:16030
 #, possible-c-format
 msgid "DW_AT_discr_list is not supported yet - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:16073
+#: dwarf2read.c:16084
 #, possible-c-format
 msgid "DW_AT_discr does not have DIE reference form - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:16151
+#: dwarf2read.c:16162
 #, possible-c-format
 msgid "virtual function table pointer not found when defining class '%s'"
 msgstr ""
 
-#: dwarf2read.c:16268
+#: dwarf2read.c:16279
 #, possible-c-format
 msgid ""
 "could not find suitable symtab for template parameter - DIE at %s [in module "
 "%s]"
 msgstr ""
 
-#: dwarf2read.c:16560
+#: dwarf2read.c:16571
 #, possible-c-format
 msgid "unable to read array DW_AT_byte_stride  - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:16644
+#: dwarf2read.c:16655
 msgid "DW_AT_byte_size for array type smaller than the total size of elements"
 msgstr ""
 
@@ -11070,89 +11104,100 @@ msgstr ""
 #. not specified by DWARF.  It seems to have been
 #. emitted by gfortran at least as recently as:
 #. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.
-#: dwarf2read.c:16870
+#: dwarf2read.c:16881
 #, possible-c-format
 msgid ""
 "Variable in common block has DW_AT_data_member_location - DIE at %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:17104
+#: dwarf2read.c:17115
 #, possible-c-format
 msgid "invalid pointer size %d"
 msgstr ""
 
-#: dwarf2read.c:17108
+#: dwarf2read.c:17119
 #, possible-c-format
 msgid "Invalid DW_AT_alignment - DIE at %s [in module %s]"
 msgstr ""
 
+#: dwarf2read.c:17343
+msgid ""
+"DW_AT_bit_size and DW_AT_string_length_bit_size not currently supported on "
+"DW_TAG_string_type."
+msgstr ""
+
 #. Self-referential typedefs are, it seems, not allowed by the DWARF
 #. spec and cause infinite loops in GDB.
-#: dwarf2read.c:17541
+#: dwarf2read.c:17613
 #, possible-c-format
 msgid "Self-referential DW_TAG_typedef - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:17676
+#: dwarf2read.c:17748
 msgid "DW_AT_name missing from DW_TAG_base_type"
 msgstr ""
 
-#: dwarf2read.c:17738
+#: dwarf2read.c:17810
 #, possible-c-format
 msgid "unsupported DW_ATE_UTF bit size: '%d'"
 msgstr ""
 
-#: dwarf2read.c:17747
+#: dwarf2read.c:17819
 #, possible-c-format
 msgid "unsupported DW_AT_encoding: '%s'"
 msgstr ""
 
-#: dwarf2read.c:18006
+#: dwarf2read.c:18096
 #, possible-c-format
 msgid "Missing DW_AT_lower_bound - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:18027
+#: dwarf2read.c:18117
 #, possible-c-format
 msgid "Unresolved DW_AT_upper_bound - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:18032
+#: dwarf2read.c:18122
 #, possible-c-format
 msgid "Unresolved DW_AT_count - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:18237
+#: dwarf2read.c:18168
+#, possible-c-format
+msgid "Found DW_AT_bit_stride and DW_AT_byte_stride - DIE at %s [in module %s]"
+msgstr ""
+
+#: dwarf2read.c:18372
 #, possible-c-format
 msgid "Dwarf Error: could not find abbrev number %d [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:18620
+#: dwarf2read.c:18755
 #, possible-c-format
 msgid ""
 "DW_TAG_typedef has childen - GCC PR debug/47510 bug - DIE at %s [in module %"
 "s]"
 msgstr ""
 
-#: dwarf2read.c:18964
+#: dwarf2read.c:19099
 #, possible-c-format
 msgid "DW_AT_low_pc %s is zero for DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:18976
+#: dwarf2read.c:19111
 #, possible-c-format
 msgid "DW_AT_low_pc %s is not < DW_AT_high_pc %s for DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19034
+#: dwarf2read.c:19169
 #, possible-c-format
 msgid ""
 "Dwarf Error: Type Unit at offset %s contains external reference to offset %s "
 "[in module %s].\n"
 msgstr ""
 
-#: dwarf2read.c:19069
+#: dwarf2read.c:19204
 #, possible-c-format
 msgid "could not find partial DIE %s in cache [from module %s]\n"
 msgstr ""
@@ -11161,141 +11206,141 @@ msgstr ""
 #. Later we can turn this into a complaint.
 #. For now flag a hard error.
 #. Later we can turn this into a complaint if warranted.
-#: dwarf2read.c:19413 dwarf2read.c:19430
+#: dwarf2read.c:19548 dwarf2read.c:19565
 #, possible-c-format
 msgid "Dwarf Error: %s found in non-DWO CU [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19486
+#: dwarf2read.c:19621
 #, possible-c-format
 msgid "Suspicious DW_AT_byte_size value treated as zero instead of %s"
 msgstr ""
 
-#: dwarf2read.c:19585
+#: dwarf2read.c:19720
 #, possible-c-format
 msgid "read_address: bad switch, signed [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19604
+#: dwarf2read.c:19739
 #, possible-c-format
 msgid "read_address: bad switch, unsigned [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19697
+#: dwarf2read.c:19832
 msgid "intermixed 32-bit and 64-bit DWARF sections"
 msgstr ""
 
-#: dwarf2read.c:19734
+#: dwarf2read.c:19869
 #, possible-c-format
 msgid "read_offset_1: bad switch [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19780
+#: dwarf2read.c:19915
 #, possible-c-format
 msgid "%s used without %s section [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19783
+#: dwarf2read.c:19918
 #, possible-c-format
 msgid "%s pointing outside of %s section [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19828
+#: dwarf2read.c:19963
 #, possible-c-format
 msgid "DW_FORM_GNU_strp_alt used without .debug_str section [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19832
+#: dwarf2read.c:19967
 #, possible-c-format
 msgid ""
 "DW_FORM_GNU_strp_alt pointing outside of .debug_str section [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19943
+#: dwarf2read.c:20078
 #, possible-c-format
 msgid "DW_FORM_addr_index used without .debug_addr section [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19946
+#: dwarf2read.c:20081
 #, possible-c-format
 msgid ""
 "DW_FORM_addr_index pointing outside of .debug_addr section [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:20077
+#: dwarf2read.c:20212
 #, possible-c-format
 msgid ""
 "%s used without .debug_str.dwo section in CU at offset %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:20081
+#: dwarf2read.c:20216
 #, possible-c-format
 msgid ""
 "%s used without .debug_str_offsets.dwo section in CU at offset %s [in module "
 "%s]"
 msgstr ""
 
-#: dwarf2read.c:20085
+#: dwarf2read.c:20220
 #, possible-c-format
 msgid ""
 "%s pointing outside of .debug_str_offsets.dwo section in CU at offset %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:20095
+#: dwarf2read.c:20230
 #, possible-c-format
 msgid ""
 "Offset from %s pointing outside of .debug_str.dwo section in CU at offset %s "
 "[in module %s]"
 msgstr ""
 
-#: dwarf2read.c:20247
+#: dwarf2read.c:20382
 #, possible-c-format
 msgid "string type expected for attribute %s for DIE at %s in module %s"
 msgstr ""
 
-#: dwarf2read.c:20507
+#: dwarf2read.c:20642
 #, possible-c-format
 msgid "Unknown format content type %s"
 msgstr ""
 
-#: dwarf2read.c:20545
+#: dwarf2read.c:20680
 msgid "missing .debug_line.dwo section"
 msgstr ""
 
-#: dwarf2read.c:20547
+#: dwarf2read.c:20682
 msgid "missing .debug_line section"
 msgstr ""
 
 #. This is a version we don't understand.  The format could have
 #. changed in ways we don't handle properly so just punt.
-#: dwarf2read.c:20590
+#: dwarf2read.c:20725
 msgid "unsupported version in .debug_line section"
 msgstr ""
 
-#: dwarf2read.c:20605
+#: dwarf2read.c:20740
 #, possible-c-format
 msgid "unsupported segment selector size %u in .debug_line section"
 msgstr ""
 
-#: dwarf2read.c:20627
+#: dwarf2read.c:20762
 msgid "invalid maximum_ops_per_instruction in `.debug_line' section"
 msgstr ""
 
-#: dwarf2read.c:20700
+#: dwarf2read.c:20835
 msgid "line number info header doesn't fit in `.debug_line' section"
 msgstr ""
 
-#: dwarf2read.c:21165
+#: dwarf2read.c:21300
 #, possible-c-format
 msgid ".debug_line address at offset 0x%lx is 0 [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:21292 dwarf2read.c:21300
+#: dwarf2read.c:21427 dwarf2read.c:21435
 msgid "mangled .debug_line section"
 msgstr ""
 
-#: dwarf2read.c:21683
+#: dwarf2read.c:21818
 msgid "file index out of range"
 msgstr ""
 
@@ -11303,59 +11348,59 @@ msgstr ""
 #. trash data, but since we must specifically ignore things
 #. we don't recognize, there is nothing else we should do at
 #. this point.
-#: dwarf2read.c:21985
+#: dwarf2read.c:22120
 #, possible-c-format
 msgid "unsupported tag: '%s'"
 msgstr ""
 
-#: dwarf2read.c:22145 dwarf2read.c:23653
+#: dwarf2read.c:22280 dwarf2read.c:23788
 #, possible-c-format
 msgid "unsupported const value attribute form: '%s'"
 msgstr ""
 
-#: dwarf2read.c:22259
+#: dwarf2read.c:22394
 #, possible-c-format
 msgid ""
 "Dwarf Error: Problem turning containing type into gdb type [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:22276
+#: dwarf2read.c:22411
 #, possible-c-format
 msgid "<unknown type in %s, CU %s, DIE %s>"
 msgstr ""
 
-#: dwarf2read.c:22328
+#: dwarf2read.c:22463
 #, possible-c-format
 msgid "Dwarf Error: Bad type attribute %s in DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:22456
+#: dwarf2read.c:22591
 #, possible-c-format
 msgid "unexpected tag in read_type_die: '%s'"
 msgstr ""
 
-#: dwarf2read.c:22670
+#: dwarf2read.c:22805
 #, possible-c-format
 msgid "template param type '%s' defined within parent '%s'"
 msgstr ""
 
-#: dwarf2read.c:23253
+#: dwarf2read.c:23388
 #, possible-c-format
 msgid "unsupported die ref attribute form: '%s'"
 msgstr ""
 
 #. For DW_FORM_data16 see attr_form_is_constant.
-#: dwarf2read.c:23275
+#: dwarf2read.c:23410
 #, possible-c-format
 msgid "Attribute value is not a constant (%s)"
 msgstr ""
 
-#: dwarf2read.c:23298
+#: dwarf2read.c:23433
 #, possible-c-format
 msgid "Dwarf Error: Expected reference attribute [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:23380
+#: dwarf2read.c:23515
 #, possible-c-format
 msgid ""
 "Dwarf Error: Cannot find DIE at %s referenced from DIE at %s [in module %s]"
@@ -11363,127 +11408,127 @@ msgstr ""
 
 #. We shouldn't get here for a dummy CU, but don't crash on the user.
 #. Instead just throw an error, not much else we can do.
-#: dwarf2read.c:23413 dwarf2read.c:23555
+#: dwarf2read.c:23548 dwarf2read.c:23690
 #, possible-c-format
 msgid "Dwarf Error: Dummy CU at %s referenced in module %s"
 msgstr ""
 
-#: dwarf2read.c:23419 dwarf2read.c:23561
+#: dwarf2read.c:23554 dwarf2read.c:23696
 #, possible-c-format
 msgid "Dwarf Error: Cannot find DIE at %s referenced in module %s"
 msgstr ""
 
-#: dwarf2read.c:23481
+#: dwarf2read.c:23616
 #, possible-c-format
 msgid ""
 "Dwarf Error: DIE at %s referenced in module %s is neither DW_FORM_block* nor "
 "DW_FORM_exprloc"
 msgstr ""
 
-#: dwarf2read.c:23767 dwarf2read.c:23805
+#: dwarf2read.c:23902 dwarf2read.c:23940
 #, possible-c-format
 msgid ""
 "Dwarf Error: Cannot find signatured DIE %s referenced from DIE at %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:23777 dwarf2read.c:23835
+#: dwarf2read.c:23912 dwarf2read.c:23970
 #, possible-c-format
 msgid ""
 "Dwarf Error: Problem reading signatured DIE %s referenced from DIE at %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:23826
+#: dwarf2read.c:23961
 #, possible-c-format
 msgid ""
 "Dwarf Error: Cannot build signatured type %s referenced from DIE at %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:23870
+#: dwarf2read.c:24005
 #, possible-c-format
 msgid ""
 "Dwarf Error: DW_AT_signature has bad form %s in DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:24191
+#: dwarf2read.c:24326
 #, possible-c-format
 msgid "unsupported stack op: '%s'"
 msgstr ""
 
-#: dwarf2read.c:24194
+#: dwarf2read.c:24329
 #, possible-c-format
 msgid "unsupported stack op: '%02x'"
 msgstr ""
 
-#: dwarf2read.c:24205
+#: dwarf2read.c:24340
 msgid "location description stack overflow"
 msgstr ""
 
-#: dwarf2read.c:24211
+#: dwarf2read.c:24346
 msgid "location description stack underflow"
 msgstr ""
 
-#: dwarf2read.c:24274
+#: dwarf2read.c:24409
 #, possible-c-format
 msgid "bad file number in macro information (%d)"
 msgstr ""
 
-#: dwarf2read.c:24337
+#: dwarf2read.c:24472
 #, possible-c-format
 msgid ""
 "macro definition contains spaces in formal argument list:\n"
 "`%s'"
 msgstr ""
 
-#: dwarf2read.c:24568
+#: dwarf2read.c:24703
 #, possible-c-format
 msgid "invalid form 0x%x in `%s'"
 msgstr ""
 
-#: dwarf2read.c:24595
+#: dwarf2read.c:24730
 #, possible-c-format
 msgid "unrecognized DW_MACFINO opcode 0x%x"
 msgstr ""
 
-#: dwarf2read.c:24640
+#: dwarf2read.c:24775
 #, possible-c-format
 msgid "unrecognized version `%d' in .debug_macro section"
 msgstr ""
 
 #. DWARF violation as no main source is present.
-#: dwarf2read.c:24789
+#: dwarf2read.c:24924
 #, possible-c-format
 msgid "debug info with no main source gives macro %s on line %d: %s"
 msgstr ""
 
-#: dwarf2read.c:24791 dwarf2read.c:24799 dwarf2read.c:24813
+#: dwarf2read.c:24926 dwarf2read.c:24934 dwarf2read.c:24948
 msgid "definition"
 msgstr ""
 
-#: dwarf2read.c:24791 dwarf2read.c:24799 dwarf2read.c:24813
+#: dwarf2read.c:24926 dwarf2read.c:24934 dwarf2read.c:24948
 msgid "undefinition"
 msgstr ""
 
-#: dwarf2read.c:24797
+#: dwarf2read.c:24932
 #, possible-c-format
 msgid "debug info gives %s macro %s with %s line %d: %s"
 msgstr ""
 
-#: dwarf2read.c:24798 dwarf2read.c:24812 dwarf2read.c:24842
+#: dwarf2read.c:24933 dwarf2read.c:24947 dwarf2read.c:24977
 msgid "command-line"
 msgstr ""
 
-#: dwarf2read.c:24798 dwarf2read.c:24812
+#: dwarf2read.c:24933 dwarf2read.c:24947
 msgid "in-file"
 msgstr ""
 
-#: dwarf2read.c:24800 dwarf2read.c:24843
+#: dwarf2read.c:24935 dwarf2read.c:24978
 msgid "zero"
 msgstr ""
 
-#: dwarf2read.c:24800 dwarf2read.c:24843
+#: dwarf2read.c:24935 dwarf2read.c:24978
 msgid "non-zero"
 msgstr ""
 
@@ -11492,162 +11537,162 @@ msgstr ""
 #.
 #. For more info, see
 #. https://bugzilla.redhat.com/show_bug.cgi?id=1708786
-#: dwarf2read.c:24809
+#: dwarf2read.c:24944
 #, possible-c-format
 msgid ""
 "debug info gives %s invalid macro %s without body (corrupted?) at line %d on "
 "file %s"
 msgstr ""
 
-#: dwarf2read.c:24840
+#: dwarf2read.c:24975
 #, possible-c-format
 msgid "debug info gives source %d included from %s at %s line %d"
 msgstr ""
 
-#: dwarf2read.c:24842 skip.c:336
+#: dwarf2read.c:24977 skip.c:336
 msgid "file"
 msgstr ""
 
-#: dwarf2read.c:24859
+#: dwarf2read.c:24994
 msgid "macro debug info has an unmatched `close_file' directive"
 msgstr ""
 
-#: dwarf2read.c:24886
+#: dwarf2read.c:25021
 msgid "no terminating 0-type entry for macros in `.debug_macinfo' section"
 msgstr ""
 
 #. This has actually happened; see
 #. http://sourceware.org/bugzilla/show_bug.cgi?id=13568.
-#: dwarf2read.c:24927
+#: dwarf2read.c:25062
 msgid "recursive DW_MACRO_import in .debug_macro section"
 msgstr ""
 
-#: dwarf2read.c:25021
+#: dwarf2read.c:25156
 #, possible-c-format
 msgid "missing %s section"
 msgstr ""
 
-#: dwarf2read.c:25318
+#: dwarf2read.c:25453
 msgid "Location list used without specifying the CU base address."
 msgstr ""
 
-#: dwarf2read.c:25509
+#: dwarf2read.c:25644
 #, possible-c-format
 msgid ""
 "Dwarf Error: could not find partial DIE containing offset %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:25522
+#: dwarf2read.c:25657
 #, possible-c-format
 msgid "invalid dwarf2 offset %s"
 msgstr ""
 
-#: dwarf2read.c:25743
+#: dwarf2read.c:25878
 #, possible-c-format
 msgid "DW_AT_allocated has the wrong form (%s) at DIE %s"
 msgstr ""
 
-#: dwarf2read.c:25759
+#: dwarf2read.c:25894
 #, possible-c-format
 msgid "DW_AT_associated has the wrong form (%s) at DIE %s"
 msgstr ""
 
-#: dwarf2read.c:25788
+#: dwarf2read.c:25923
 #, possible-c-format
 msgid "A problem internal to GDB: DIE %s has type already set"
 msgstr ""
 
-#: dwarf2read.c:25947
+#: dwarf2read.c:26082
 #, possible-c-format
 msgid "Whether to always disassemble DWARF expressions is %s.\n"
 msgstr ""
 
-#: dwarf2read.c:25957
+#: dwarf2read.c:26092
 #, possible-c-format
 msgid "Whether to check \"physname\" is %s.\n"
 msgstr ""
 
-#: dwarf2read.c:25964
+#: dwarf2read.c:26099
 msgid ""
 "Set DWARF specific variables.\n"
 "Configure DWARF variables such as the cache size."
 msgstr ""
 
 #. allow-unknown
-#: dwarf2read.c:25970
+#: dwarf2read.c:26105
 msgid ""
 "Show DWARF specific variables.\n"
 "Show DWARF variables such as the cache size."
 msgstr ""
 
-#: dwarf2read.c:25977
+#: dwarf2read.c:26112
 msgid "Set the upper bound on the age of cached DWARF compilation units."
 msgstr ""
 
-#: dwarf2read.c:25978
+#: dwarf2read.c:26113
 msgid "Show the upper bound on the age of cached DWARF compilation units."
 msgstr ""
 
-#: dwarf2read.c:25979
+#: dwarf2read.c:26114
 msgid ""
 "A higher limit means that cached compilation units will be stored\n"
 "in memory longer, and more total memory will be used.  Zero disables\n"
 "caching, which can slow down startup."
 msgstr ""
 
-#: dwarf2read.c:25989
+#: dwarf2read.c:26124
 msgid "Set whether `info address' always disassembles DWARF expressions."
 msgstr ""
 
-#: dwarf2read.c:25990
+#: dwarf2read.c:26125
 msgid "Show whether `info address' always disassembles DWARF expressions."
 msgstr ""
 
-#: dwarf2read.c:25991
+#: dwarf2read.c:26126
 msgid ""
 "When enabled, DWARF expressions are always printed in an assembly-like\n"
 "syntax.  When disabled, expressions will be printed in a more\n"
 "conversational style, when possible."
 msgstr ""
 
-#: dwarf2read.c:26000
+#: dwarf2read.c:26135
 msgid "Set debugging of the DWARF reader."
 msgstr ""
 
-#: dwarf2read.c:26001
+#: dwarf2read.c:26136
 msgid "Show debugging of the DWARF reader."
 msgstr ""
 
-#: dwarf2read.c:26002
+#: dwarf2read.c:26137
 msgid ""
 "When enabled (non-zero), debugging messages are printed during DWARF\n"
 "reading and symtab expansion.  A value of 1 (one) provides basic\n"
 "information.  A value greater than 1 provides more verbose information."
 msgstr ""
 
-#: dwarf2read.c:26010
+#: dwarf2read.c:26145
 msgid "Set debugging of the DWARF DIE reader."
 msgstr ""
 
-#: dwarf2read.c:26011
+#: dwarf2read.c:26146
 msgid "Show debugging of the DWARF DIE reader."
 msgstr ""
 
-#: dwarf2read.c:26012
+#: dwarf2read.c:26147
 msgid ""
 "When enabled (non-zero), DIEs are dumped after they are read in.\n"
 "The value is the maximum depth to print."
 msgstr ""
 
-#: dwarf2read.c:26019
+#: dwarf2read.c:26154
 msgid "Set debugging of the dwarf line reader."
 msgstr ""
 
-#: dwarf2read.c:26020
+#: dwarf2read.c:26155
 msgid "Show debugging of the dwarf line reader."
 msgstr ""
 
-#: dwarf2read.c:26021
+#: dwarf2read.c:26156
 msgid ""
 "When enabled (non-zero), line number entries are dumped as they are read "
 "in.\n"
@@ -11655,29 +11700,29 @@ msgid ""
 "A value greater than 1 provides more verbose information."
 msgstr ""
 
-#: dwarf2read.c:26029
+#: dwarf2read.c:26164
 msgid "Set cross-checking of \"physname\" code against demangler."
 msgstr ""
 
-#: dwarf2read.c:26030
+#: dwarf2read.c:26165
 msgid "Show cross-checking of \"physname\" code against demangler."
 msgstr ""
 
-#: dwarf2read.c:26031
+#: dwarf2read.c:26166
 msgid ""
 "When enabled, GDB's internal \"physname\" code is checked against\n"
 "the demangler."
 msgstr ""
 
-#: dwarf2read.c:26038
+#: dwarf2read.c:26173
 msgid "Set whether to use deprecated gdb_index sections."
 msgstr ""
 
-#: dwarf2read.c:26039
+#: dwarf2read.c:26174
 msgid "Show whether to use deprecated gdb_index sections."
 msgstr ""
 
-#: dwarf2read.c:26040
+#: dwarf2read.c:26175
 msgid ""
 "When enabled, deprecated .gdb_index sections are used anyway.\n"
 "Normally they are ignored either because of a missing feature or\n"
@@ -11765,43 +11810,43 @@ msgstr ""
 msgid "When non-zero, debugging output for the index cache is displayed."
 msgstr ""
 
-#: dwarf-index-write.c:76
+#: dwarf-index-write.c:78
 msgid "couldn't data write to file"
 msgstr ""
 
-#: dwarf-index-write.c:545
+#: dwarf-index-write.c:547
 msgid ""
 "Ada is not currently supported by the index; use the DWARF 5 index instead"
 msgstr ""
 
-#: dwarf-index-write.c:973
+#: dwarf-index-write.c:975
 #, possible-c-format
 msgid "Duplicate string \"%s\" in .debug_str section [in module %s]"
 msgstr ""
 
-#: dwarf-index-write.c:1639
+#: dwarf-index-write.c:1641
 #, possible-c-format
 msgid "Can't open `%s' for writing"
 msgstr ""
 
-#: dwarf-index-write.c:1678
+#: dwarf-index-write.c:1680
 msgid "Cannot use an index to create the index"
 msgstr ""
 
-#: dwarf-index-write.c:1681
+#: dwarf-index-write.c:1683
 msgid "Cannot make an index when the file has multiple .debug_types sections"
 msgstr ""
 
-#: dwarf-index-write.c:1744
+#: dwarf-index-write.c:1746
 msgid "usage: save gdb-index [-dwarf-5] DIRECTORY"
 msgstr ""
 
-#: dwarf-index-write.c:1774
+#: dwarf-index-write.c:1776
 #, possible-c-format
 msgid "Error while writing index for `%s': "
 msgstr ""
 
-#: dwarf-index-write.c:1786
+#: dwarf-index-write.c:1788
 msgid ""
 "Save a gdb-index file.\n"
 "Usage: save gdb-index [-dwarf-5] DIRECTORY\n"
@@ -11852,7 +11897,7 @@ msgstr ""
 msgid "Cannot evaluate function -- may be inlined"
 msgstr ""
 
-#: eval.c:791 valarith.c:493 valarith.c:607
+#: eval.c:791 valarith.c:504 valarith.c:618
 msgid "Xmethod is missing return type."
 msgstr ""
 
@@ -12004,18 +12049,18 @@ msgstr ""
 msgid "Exception condition detected on fd %d\n"
 msgstr ""
 
-#: event-top.c:373
+#: event-top.c:374
 msgid "double prompt"
 msgstr ""
 
 #. If stdin died, we may as well kill gdb.
-#: event-top.c:487
+#: event-top.c:488
 msgid "error detected on stdin\n"
 msgstr ""
 
 #. This message is based on ANSI C, section 4.7.  Note that integer
 #. divide by zero causes this, so "float" is a misnomer.
-#: event-top.c:1161
+#: event-top.c:1203
 msgid "Erroneous arithmetic operation."
 msgstr ""
 
@@ -12082,7 +12127,7 @@ msgstr ""
 msgid "No executable file name was specified"
 msgstr ""
 
-#: exec.c:884 maint.c:445 maint.c:480
+#: exec.c:884 maint.c:449 maint.c:484
 #, possible-c-format
 msgid "file type %s.\n"
 msgstr ""
@@ -12247,7 +12292,7 @@ msgstr ""
 msgid "Debugging of FreeBSD native target is %s.\n"
 msgstr ""
 
-#: fbsd-nat.c:1351 linux-nat.c:1009 procfs.c:2287 procfs.c:2408
+#: fbsd-nat.c:1351 linux-nat.c:1010 procfs.c:2287 procfs.c:2408
 #, possible-c-format
 msgid "[%s exited]\n"
 msgstr ""
@@ -12260,7 +12305,7 @@ msgstr ""
 msgid "Show debugging of FreeBSD lwp module."
 msgstr ""
 
-#: fbsd-nat.c:1678 fbsd-nat.c:1686 linux-nat.c:4543 linux-nat.c:4552
+#: fbsd-nat.c:1678 fbsd-nat.c:1686 linux-nat.c:4544 linux-nat.c:4553
 msgid "Enables printf debugging output."
 msgstr ""
 
@@ -12574,42 +12619,42 @@ msgstr ""
 msgid "unrecognized character type"
 msgstr ""
 
-#: f-lang.c:286
+#: f-lang.c:287
 #, possible-c-format
 msgid "ABS of type %s not supported"
 msgstr ""
 
-#: f-lang.c:295
+#: f-lang.c:296
 msgid "non-matching types for parameters to MOD ()"
 msgstr ""
 
-#: f-lang.c:314
+#: f-lang.c:315
 msgid "calling MOD (N, 0) is undefined"
 msgstr ""
 
-#: f-lang.c:319
+#: f-lang.c:320
 #, possible-c-format
 msgid "MOD of type %s not supported"
 msgstr ""
 
-#: f-lang.c:328
+#: f-lang.c:329
 msgid "argument to CEILING must be of type float"
 msgstr ""
 
-#: f-lang.c:343
+#: f-lang.c:344
 msgid "argument to FLOOR must be of type float"
 msgstr ""
 
-#: f-lang.c:359
+#: f-lang.c:360
 msgid "non-matching types for parameters to MODULO ()"
 msgstr ""
 
-#: f-lang.c:386
+#: f-lang.c:387
 #, possible-c-format
 msgid "MODULO of type %s not supported"
 msgstr ""
 
-#: f-lang.c:407
+#: f-lang.c:408
 msgid "argument to kind must be an intrinsic type"
 msgstr ""
 
@@ -12644,7 +12689,7 @@ msgstr ""
 msgid "Show use of shell to start subprocesses."
 msgstr ""
 
-#: frame.c:308 infrun.c:8731 stack.c:2076 stack.c:2363
+#: frame.c:308 infrun.c:8730 stack.c:2076 stack.c:2363
 msgid "Unable to restore previously selected frame."
 msgstr ""
 
@@ -12829,38 +12874,38 @@ msgstr ""
 msgid "Invalid type code (%d) in symbol table."
 msgstr ""
 
-#: f-valprint.c:49
+#: f-valprint.c:50
 msgid "Lower bound may not be '*' in F77"
 msgstr ""
 
-#: f-valprint.c:185
+#: f-valprint.c:191
 #, possible-c-format
 msgid "Type node corrupt! F77 arrays cannot have %d subscripts (%d Max)"
 msgstr ""
 
-#: f-valprint.c:399
+#: f-valprint.c:405
 #, possible-c-format
 msgid "Contents of F77 COMMON block '%s':\n"
 msgstr ""
 
-#: f-valprint.c:402
+#: f-valprint.c:408
 msgid "Contents of blank COMMON block:\n"
 msgstr ""
 
-#: f-valprint.c:453 stack.c:2598
+#: f-valprint.c:459 stack.c:2598
 msgid "No symbol table info available.\n"
 msgstr ""
 
-#: f-valprint.c:470
+#: f-valprint.c:476
 #, possible-c-format
 msgid "No common block '%s'.\n"
 msgstr ""
 
-#: f-valprint.c:472
+#: f-valprint.c:478
 msgid "No common blocks.\n"
 msgstr ""
 
-#: f-valprint.c:480
+#: f-valprint.c:486
 msgid "Print out the values contained in a Fortran COMMON block."
 msgstr ""
 
@@ -13109,32 +13154,32 @@ msgstr ""
 msgid "That operation is not available on integers of more than%d bytes."
 msgstr ""
 
-#: gdbserver/remote-utils.c:197
+#: gdbserver/remote-utils.c:198
 #, c-format
 msgid "Could not obtain remote address: %s\n"
 msgstr ""
 
-#: gdbserver/remote-utils.c:200
+#: gdbserver/remote-utils.c:201
 #, c-format
 msgid "Remote debugging from host %s, port %s\n"
 msgstr ""
 
-#: gdbserver/remote-utils.c:275
+#: gdbserver/remote-utils.c:276
 #, possible-c-format
 msgid "%s: cannot resolve name: %s"
 msgstr ""
 
-#: gdbserver/remote-utils.c:308
+#: gdbserver/remote-utils.c:309
 #, possible-c-format
 msgid "Invalid 'ai_family' %d\n"
 msgstr ""
 
-#: gdbserver/remote-utils.c:404
+#: gdbserver/remote-utils.c:405
 #, c-format
 msgid "Can't obtain port where we are listening: %s"
 msgstr ""
 
-#: gdbserver/remote-utils.c:407
+#: gdbserver/remote-utils.c:408
 #, c-format
 msgid "Listening on port %s\n"
 msgstr ""
@@ -13147,7 +13192,7 @@ msgstr ""
 msgid "Can't debug x86-64 process with 32-bit GDBserver"
 msgstr ""
 
-#: gdbserver/server.c:272 remote-sim.c:627
+#: gdbserver/server.c:272 remote-sim.c:625
 msgid "No executable file specified."
 msgstr ""
 
@@ -13211,7 +13256,7 @@ msgstr ""
 msgid "Could not find current working directory: %s"
 msgstr ""
 
-#: gdbserver/server.c:3771 maint.c:1090 maint.c:1104
+#: gdbserver/server.c:3771 maint.c:1123 maint.c:1137
 #, c-format
 msgid "Selftests have been disabled for this build.\n"
 msgstr ""
@@ -13226,27 +13271,27 @@ msgstr ""
 msgid "libthread-db-search-path component too long, ignored: %s."
 msgstr ""
 
-#: gdbserver/linux-low.c:744 linux-nat.c:2114
+#: gdbserver/linux-low.c:745 linux-nat.c:2115
 #, possible-c-format
 msgid "unknown ptrace event %d"
 msgstr ""
 
-#: gdbserver/linux-low.c:1170 linux-nat.c:1137
+#: gdbserver/linux-low.c:1171 linux-nat.c:1138
 #, possible-c-format
 msgid "Cannot attach to lwp %d: %s"
 msgstr ""
 
-#: gdbserver/linux-low.c:1562 linux-nat.c:1422
+#: gdbserver/linux-low.c:1563 linux-nat.c:1423
 #, possible-c-format
 msgid "Couldn't reap LWP %d while detaching: %s"
 msgstr ""
 
-#: gdbserver/linux-low.c:1567 linux-nat.c:1427
+#: gdbserver/linux-low.c:1568 linux-nat.c:1428
 #, possible-c-format
 msgid "Reaping LWP %d while detaching returned unexpected status 0x%x"
 msgstr ""
 
-#: gdbserver/linux-low.c:1574 linux-nat.c:1434
+#: gdbserver/linux-low.c:1575 linux-nat.c:1435
 #, possible-c-format
 msgid "Can't detach %s: %s"
 msgstr ""
@@ -13466,12 +13511,12 @@ msgstr ""
 msgid "Inappropriate modifiers to format specifier '%c' in printf"
 msgstr ""
 
-#: gdbsupport/signals-state-save-restore.c:77
+#: gdbsupport/signals-state-save-restore.c:74
 #, c-format
 msgid "warning: Found custom handler for signal %d (%s) preinstalled.\n"
 msgstr ""
 
-#: gdbsupport/signals-state-save-restore.c:85
+#: gdbsupport/signals-state-save-restore.c:82
 #, c-format
 msgid ""
 "Some signal dispositions inherited from the environment (SIG_DFL/SIG_IGN)\n"
@@ -13500,143 +13545,149 @@ msgstr ""
 msgid "Unknown address space specifier: \"%s\""
 msgstr ""
 
-#: gdbtypes.c:1505
+#: gdbtypes.c:1544
 #, possible-c-format
 msgid "Invalid anonymous type %s [in module %s], GCC PR debug/47510 bug?"
 msgstr ""
 
-#: gdbtypes.c:1528
+#: gdbtypes.c:1567
 #, possible-c-format
 msgid "No type named %s."
 msgstr ""
 
-#: gdbtypes.c:1570 objc-lang.c:96
+#: gdbtypes.c:1609 objc-lang.c:96
 #, possible-c-format
 msgid "No struct type named %s."
 msgstr ""
 
-#: gdbtypes.c:1574 gdbtypes.c:1649 objc-lang.c:103
+#: gdbtypes.c:1613 gdbtypes.c:1688 objc-lang.c:103
 #, possible-c-format
 msgid "This context has class, union or enum %s, not a struct."
 msgstr ""
 
-#: gdbtypes.c:1592
+#: gdbtypes.c:1631
 #, possible-c-format
 msgid "No union type named %s."
 msgstr ""
 
 #. If we get here, it's not a union.
-#: gdbtypes.c:1600
+#: gdbtypes.c:1639
 #, possible-c-format
 msgid "This context has class, struct or enum %s, not a union."
 msgstr ""
 
-#: gdbtypes.c:1615
+#: gdbtypes.c:1654
 #, possible-c-format
 msgid "No enum type named %s."
 msgstr ""
 
-#: gdbtypes.c:1619
+#: gdbtypes.c:1658
 #, possible-c-format
 msgid "This context has class, struct or union %s, not an enum."
 msgstr ""
 
-#: gdbtypes.c:1645
+#: gdbtypes.c:1684
 #, possible-c-format
 msgid "No template type named %s."
 msgstr ""
 
-#: gdbtypes.c:1675
+#: gdbtypes.c:1714
 #, possible-c-format
 msgid "Type %s is not a structure or union type."
 msgstr ""
 
-#: gdbtypes.c:1711
+#: gdbtypes.c:1750
 #, possible-c-format
 msgid "Type %s has no component named %s."
 msgstr ""
 
-#: gdbtypes.c:1876
+#: gdbtypes.c:1915
 msgid "stub type has NULL name"
 msgstr ""
 
+#: gdbtypes.c:2073
+msgid ""
+"bit strides that are not a multiple of the byte size are currently not "
+"supported"
+msgstr ""
+
 #. Could be a bug in our code, but it could also happen
 #. if the DWARF info is not correct.  Issue a warning,
 #. and assume no byte/bit stride (leave bit_stride = 0).
-#: gdbtypes.c:2086
+#: gdbtypes.c:2155
 #, possible-c-format
 msgid "cannot determine array stride for type %s"
 msgstr ""
 
-#: gdbtypes.c:2176
+#: gdbtypes.c:2245
 msgid "Cannot determine struct field location (invalid location kind)"
 msgstr ""
 
-#: gdbtypes.c:2625
+#: gdbtypes.c:2697
 #, possible-c-format
 msgid "Internal: Cannot demangle mangled name `%s'."
 msgstr ""
 
-#: gdbtypes.c:3686
+#: gdbtypes.c:3758
 #, possible-c-format
 msgid "Unsupported field kind %d by check_types_equal"
 msgstr ""
 
-#: gdbtypes.c:4356
+#: gdbtypes.c:4428
 #, possible-c-format
 msgid ") length %d\n"
 msgstr ""
 
-#: gdbtypes.c:4505
+#: gdbtypes.c:4577
 msgid " <same as already seen type>\n"
 msgstr ""
 
-#: gdbtypes.c:4952
+#: gdbtypes.c:5024
 #, possible-c-format
 msgid "Unexpected type field location kind: %d"
 msgstr ""
 
-#: gdbtypes.c:5597
+#: gdbtypes.c:5669
 msgid "Set debugging of C++ overloading."
 msgstr ""
 
-#: gdbtypes.c:5598
+#: gdbtypes.c:5670
 msgid "Show debugging of C++ overloading."
 msgstr ""
 
-#: gdbtypes.c:5599
+#: gdbtypes.c:5671
 msgid "When enabled, ranking of the functions is displayed."
 msgstr ""
 
-#: gdbtypes.c:5608
+#: gdbtypes.c:5680
 msgid ""
 "Set resolution of opaque struct/class/union types (if set before loading "
 "symbols)."
 msgstr ""
 
-#: gdbtypes.c:5610
+#: gdbtypes.c:5682
 msgid ""
 "Show resolution of opaque struct/class/union types (if set before loading "
 "symbols)."
 msgstr ""
 
-#: gdbtypes.c:5619
+#: gdbtypes.c:5691
 msgid "Set strict type checking."
 msgstr ""
 
-#: gdbtypes.c:5620
+#: gdbtypes.c:5692
 msgid "Show strict type checking."
 msgstr ""
 
 #. * A helper macro that returns the name of a type or "unnamed type"
 #. if the type has no name.
-#: gdbtypes.h:1584
+#: gdbtypes.h:1601
 msgid "<unnamed type>"
 msgstr ""
 
 #. * A helper macro that returns the name of an error type.  If the
 #. type has a name, it is used; otherwise, a default is used.
-#: gdbtypes.h:1590
+#: gdbtypes.h:1607
 msgid "<error type>"
 msgstr ""
 
@@ -14108,7 +14159,7 @@ msgstr ""
 msgid "vtable for '%s' @ %s (subobject @ %s):\n"
 msgstr ""
 
-#: gnu-v3-abi.c:917 printcmd.c:2040 stack.c:1581 value.c:2544
+#: gnu-v3-abi.c:917 printcmd.c:2040 stack.c:1581 value.c:2554
 #, possible-c-format
 msgid "<error: %s>"
 msgstr ""
@@ -14318,11 +14369,11 @@ msgstr ""
 msgid "Symbol requires a frame to compute its value"
 msgstr ""
 
-#: guile/scm-symbol.c:612 valops.c:3756
+#: guile/scm-symbol.c:612 valops.c:3763
 msgid "no frame selected"
 msgstr ""
 
-#: guile/scm-param.c:244 guile/scm-cmd.c:685 python/py-cmd.c:540
+#: guile/scm-param.c:244 guile/scm-cmd.c:682 python/py-cmd.c:534
 #: python/py-param.c:342
 msgid "This command is not documented."
 msgstr ""
@@ -14399,7 +14450,7 @@ msgstr ""
 msgid "must be >= -1"
 msgstr ""
 
-#: guile/scm-param.c:894 guile/scm-cmd.c:712
+#: guile/scm-param.c:894 guile/scm-cmd.c:709
 msgid "invalid command class argument"
 msgstr ""
 
@@ -14416,7 +14467,7 @@ msgid "PARAM_ENUM requires an enum-value
 msgstr ""
 
 #: guile/scm-param.c:915 guile/scm-param.c:920 guile/scm-iterator.c:162
-#: guile/scm-cmd.c:705 guile/scm-pretty-print.c:158
+#: guile/scm-cmd.c:702 guile/scm-pretty-print.c:158
 msgid "procedure"
 msgstr ""
 
@@ -14640,31 +14691,31 @@ msgstr ""
 msgid "Too many arguments"
 msgstr ""
 
-#: guile/guile.c:176 guile/guile.c:370
+#: guile/guile.c:177 guile/guile.c:371
 msgid "guile-repl currently does not take any arguments."
 msgstr ""
 
-#: guile/guile.c:253
+#: guile/guile.c:254
 msgid "Invalid \"guile\" block structure."
 msgstr ""
 
-#: guile/guile.c:371 guile/guile.c:379
+#: guile/guile.c:372 guile/guile.c:380
 msgid "Guile scripting is not supported in this copy of GDB."
 msgstr ""
 
-#: guile/guile.c:421
+#: guile/guile.c:422
 msgid "\"info guile\" must be followed by the name of an info command.\n"
 msgstr ""
 
-#: guile/guile.c:526
+#: guile/guile.c:527
 msgid "Error in function ~s:~%"
 msgstr ""
 
-#: guile/guile.c:550
+#: guile/guile.c:551
 msgid "Throw to key `~a' with args `~s'.~%"
 msgstr ""
 
-#: guile/guile.c:565
+#: guile/guile.c:566
 #, possible-c-format
 msgid ""
 "Could not complete Guile gdb module initialization from:\n"
@@ -14673,7 +14724,7 @@ msgid ""
 "Suggest passing --data-directory=/path/to/gdb/data-directory."
 msgstr ""
 
-#: guile/guile.c:712
+#: guile/guile.c:713
 msgid ""
 "Start an interactive Guile prompt.\n"
 "\n"
@@ -14681,7 +14732,7 @@ msgid ""
 "prompt) or ,quit."
 msgstr ""
 
-#: guile/guile.c:718
+#: guile/guile.c:719
 msgid ""
 "Start a Guile interactive prompt.\n"
 "\n"
@@ -14689,7 +14740,7 @@ msgid ""
 "This command is only a placeholder."
 msgstr ""
 
-#: guile/guile.c:731
+#: guile/guile.c:732
 msgid ""
 "Evaluate one or more Guile expressions.\n"
 "\n"
@@ -14714,7 +14765,7 @@ msgid ""
 "Type \",help\" once in a Guile interactive session."
 msgstr ""
 
-#: guile/guile.c:754
+#: guile/guile.c:755
 msgid ""
 "Evaluate a Guile expression.\n"
 "\n"
@@ -14722,23 +14773,23 @@ msgid ""
 "This command is only a placeholder."
 msgstr ""
 
-#: guile/guile.c:764 guile/guile.c:770
+#: guile/guile.c:765 guile/guile.c:771
 msgid "Prefix command for Guile preference settings."
 msgstr ""
 
-#: guile/guile.c:776
+#: guile/guile.c:777
 msgid "Prefix command for Guile info displays."
 msgstr ""
 
-#: guile/guile.c:784
+#: guile/guile.c:785
 msgid "Set mode for Guile exception printing on error."
 msgstr ""
 
-#: guile/guile.c:785
+#: guile/guile.c:786
 msgid "Show the mode of Guile exception printing on error."
 msgstr ""
 
-#: guile/guile.c:786 python/python.c:1821
+#: guile/guile.c:787 python/python.c:1797
 msgid ""
 "none  == no stack or message will be printed.\n"
 "full == a message and a stack will be printed.\n"
@@ -14827,29 +14878,29 @@ msgstr ""
 msgid "Bad completer result: "
 msgstr ""
 
-#: guile/scm-cmd.c:490 guile/scm-cmd.c:699
+#: guile/scm-cmd.c:490 guile/scm-cmd.c:696
 msgid "no command name found"
 msgstr ""
 
-#: guile/scm-cmd.c:521
+#: guile/scm-cmd.c:518
 #, possible-c-format
 msgid "could not find command prefix '%s'"
 msgstr ""
 
-#: guile/scm-cmd.c:537
+#: guile/scm-cmd.c:534
 #, possible-c-format
 msgid "'%s' is not a prefix command"
 msgstr ""
 
-#: guile/scm-cmd.c:719
+#: guile/scm-cmd.c:716
 msgid "integer or procedure"
 msgstr ""
 
-#: guile/scm-cmd.c:725
+#: guile/scm-cmd.c:722
 msgid "invalid completion type argument"
 msgstr ""
 
-#: guile/scm-cmd.c:754
+#: guile/scm-cmd.c:751
 msgid "command is already registered"
 msgstr ""
 
@@ -15750,7 +15801,7 @@ msgid "Argument given to \"disconnect\".
 msgstr ""
 
 #: infcmd.c:66 infcmd.c:2482 infcmd.c:2869 linux-fork.c:651
-#: record-btrace.c:387 remote-sim.c:896
+#: record-btrace.c:387 remote-sim.c:894
 msgid "The program is not being run."
 msgstr ""
 
@@ -16394,105 +16445,105 @@ msgstr ""
 msgid "[New inferior %d]\n"
 msgstr ""
 
-#: inferior.c:248 remote.c:5681
+#: inferior.c:240 remote.c:5681
 #, possible-c-format
 msgid "[Inferior %d (%s) detached]\n"
 msgstr ""
 
-#: inferior.c:432
+#: inferior.c:424
 msgid "<noexec>"
 msgstr ""
 
-#: inferior.c:434
+#: inferior.c:426
 #, possible-c-format
 msgid "[Switching to inferior %d [%s] (%s)]\n"
 msgstr ""
 
-#: inferior.c:498
+#: inferior.c:490
 msgid ""
 "\n"
 "\tis vfork child of inferior "
 msgstr ""
 
-#: inferior.c:503
+#: inferior.c:495
 msgid ""
 "\n"
 "\tis vfork parent of inferior "
 msgstr ""
 
-#: inferior.c:515
+#: inferior.c:507
 msgid "Requires argument (inferior id(s) to detach)"
 msgstr ""
 
-#: inferior.c:525 inferior.c:562 inferior.c:597 inferior.c:650 inferior.c:800
+#: inferior.c:517 inferior.c:554 inferior.c:589 inferior.c:642 inferior.c:792
 #, possible-c-format
 msgid "Inferior ID %d not known."
 msgstr ""
 
-#: inferior.c:531 inferior.c:568
+#: inferior.c:523 inferior.c:560
 #, possible-c-format
 msgid "Inferior ID %d is not running."
 msgstr ""
 
-#: inferior.c:538 inferior.c:575
+#: inferior.c:530 inferior.c:567
 #, possible-c-format
 msgid "Inferior ID %d has no threads."
 msgstr ""
 
-#: inferior.c:552
+#: inferior.c:544
 msgid "Requires argument (inferior id(s) to kill)"
 msgstr ""
 
-#: inferior.c:605 mi/mi-main.c:412
+#: inferior.c:597 mi/mi-main.c:412
 msgid "Inferior has no threads."
 msgstr ""
 
-#: inferior.c:640
+#: inferior.c:632
 msgid "Requires an argument (inferior id(s) to remove)"
 msgstr ""
 
-#: inferior.c:656
+#: inferior.c:648
 #, possible-c-format
 msgid "Can not remove current inferior %d."
 msgstr ""
 
-#: inferior.c:662
+#: inferior.c:654
 #, possible-c-format
 msgid "Can not remove active inferior %d."
 msgstr ""
 
-#: inferior.c:722 inferior.c:781
+#: inferior.c:714 inferior.c:773
 msgid "No argument to -copies"
 msgstr ""
 
-#: inferior.c:729
+#: inferior.c:721
 msgid "No argument to -exec"
 msgstr ""
 
-#: inferior.c:734 inferior.c:804 mi/mi-main.c:1611
+#: inferior.c:726 inferior.c:796 mi/mi-main.c:1611
 msgid "Invalid argument"
 msgstr ""
 
-#: inferior.c:744
+#: inferior.c:736
 #, possible-c-format
 msgid "Added inferior %d\n"
 msgstr ""
 
-#: inferior.c:785
+#: inferior.c:777
 msgid "Invalid copies number"
 msgstr ""
 
-#: inferior.c:837
+#: inferior.c:829
 #, possible-c-format
 msgid "Added inferior %d.\n"
 msgstr ""
 
-#: inferior.c:850
+#: inferior.c:842
 #, possible-c-format
 msgid "Printing of inferior events is %s.\n"
 msgstr ""
 
-#: inferior.c:894
+#: inferior.c:886
 msgid ""
 "Print a list of inferiors being managed.\n"
 "Usage: info inferiors [ID]...\n"
@@ -16500,7 +16551,7 @@ msgid ""
 "By default all inferiors are displayed."
 msgstr ""
 
-#: inferior.c:899
+#: inferior.c:891
 msgid ""
 "Add a new inferior.\n"
 "Usage: add-inferior [-copies N] [-exec FILENAME]\n"
@@ -16509,13 +16560,13 @@ msgid ""
 "as main program."
 msgstr ""
 
-#: inferior.c:907
+#: inferior.c:899
 msgid ""
 "Remove inferior ID (or list of IDs).\n"
 "Usage: remove-inferiors ID..."
 msgstr ""
 
-#: inferior.c:911
+#: inferior.c:903
 msgid ""
 "Clone inferior ID.\n"
 "Usage: clone-inferior [-copies N] [ID]\n"
@@ -16525,30 +16576,30 @@ msgid ""
 "that is cloned."
 msgstr ""
 
-#: inferior.c:919
+#: inferior.c:911
 msgid ""
 "Detach from inferior ID (or list of IDS).\n"
 "Usage; detach inferiors ID..."
 msgstr ""
 
-#: inferior.c:924
+#: inferior.c:916
 msgid ""
 "Kill inferior ID (or list of IDs).\n"
 "Usage: kill inferiors ID..."
 msgstr ""
 
-#: inferior.c:929
+#: inferior.c:921
 msgid ""
 "Use this command to switch between inferiors.\n"
 "Usage: inferior ID\n"
 "The new inferior ID must be currently known."
 msgstr ""
 
-#: inferior.c:936
+#: inferior.c:928
 msgid "Set printing of inferior events (such as inferior start and exit)."
 msgstr ""
 
-#: inferior.c:937
+#: inferior.c:929
 msgid "Show printing of inferior events (such as inferior start and exit)."
 msgstr ""
 
@@ -16679,17 +16730,17 @@ msgid ""
 "multiple\".\n"
 msgstr ""
 
-#: infrun.c:464
+#: infrun.c:463
 #, possible-c-format
 msgid "[Detaching after %s from child %s]\n"
 msgstr ""
 
-#: infrun.c:552
+#: infrun.c:551
 #, possible-c-format
 msgid "[Attaching after %s %s to child %s]\n"
 msgstr ""
 
-#: infrun.c:600
+#: infrun.c:599
 #, possible-c-format
 msgid "[Detaching after fork from parent %s]\n"
 msgstr ""
@@ -16700,191 +16751,191 @@ msgstr ""
 #. forked.  In that case, the resume command
 #. issued is most likely not applicable to the
 #. child, so just warn, and refuse to resume.
-#: infrun.c:790
+#: infrun.c:789
 msgid "Not resuming: switched threads before following fork child."
 msgstr ""
 
-#: infrun.c:970
+#: infrun.c:969
 #, possible-c-format
 msgid "[Detaching vfork parent %s after child exec]\n"
 msgstr ""
 
-#: infrun.c:976
+#: infrun.c:975
 #, possible-c-format
 msgid "[Detaching vfork parent %s after child exit]\n"
 msgstr ""
 
-#: infrun.c:1067
+#: infrun.c:1066
 #, possible-c-format
 msgid "Follow exec mode is \"%s\".\n"
 msgstr ""
 
-#: infrun.c:1149
+#: infrun.c:1148
 #, possible-c-format
 msgid "%s is executing new program: %s\n"
 msgstr ""
 
-#: infrun.c:1166
+#: infrun.c:1165
 #, possible-c-format
 msgid ""
 "Could not load symbols for executable %s.\n"
 "Do you need \"set sysroot\"?"
 msgstr ""
 
-#: infrun.c:1554
+#: infrun.c:1553
 #, possible-c-format
 msgid ""
 "Debugger's willingness to use displaced stepping to step over breakpoints is "
 "%s (currently %s).\n"
 msgstr ""
 
-#: infrun.c:1559
+#: infrun.c:1558
 #, possible-c-format
 msgid ""
 "Debugger's willingness to use displaced stepping to step over breakpoints is "
 "%s.\n"
 msgstr ""
 
-#: infrun.c:1714
+#: infrun.c:1713
 #, possible-c-format
 msgid ""
 "Error accessing memory address %s (%s) for displaced-stepping scratch space."
 msgstr ""
 
-#: infrun.c:1791
+#: infrun.c:1790
 #, possible-c-format
 msgid "disabling displaced stepping: %s"
 msgstr ""
 
-#: infrun.c:2005 infrun.c:3025 infrun.c:3035 utils.c:439
+#: infrun.c:2004 infrun.c:3024 infrun.c:3034 utils.c:439
 msgid "Command aborted."
 msgstr ""
 
-#: infrun.c:2066
+#: infrun.c:2065
 #, possible-c-format
 msgid "Mode for locking scheduler during execution is \"%s\".\n"
 msgstr ""
 
-#: infrun.c:2077
+#: infrun.c:2076
 #, possible-c-format
 msgid "Target '%s' cannot support this command."
 msgstr ""
 
-#: infrun.c:2260
+#: infrun.c:2259
 #, possible-c-format
 msgid "Couldn't deliver signal %s to %s."
 msgstr ""
 
-#: infrun.c:3500
+#: infrun.c:3499
 msgid "Program exited while detaching"
 msgstr ""
 
-#: infrun.c:3803
+#: infrun.c:3802
 msgid "completed.\n"
 msgstr ""
 
-#: infrun.c:4813
+#: infrun.c:4812
 #, possible-c-format
 msgid "unhandled stop_soon: %d"
 msgstr ""
 
-#: infrun.c:4880
+#: infrun.c:4879
 msgid "Cannot fill $_exitsignal with the correct signal number.\n"
 msgstr ""
 
-#: infrun.c:7787
+#: infrun.c:7786
 msgid "Unknown value."
 msgstr ""
 
-#: infrun.c:7842
+#: infrun.c:7841
 msgid ""
 "Cannot remove breakpoints because program is no longer writable.\n"
 "Further execution is probably impossible.\n"
 msgstr ""
 
-#: infrun.c:7995 linux-fork.c:354 linux-fork.c:387
+#: infrun.c:7994 linux-fork.c:354 linux-fork.c:387
 #, possible-c-format
 msgid "[Switching to %s]\n"
 msgstr ""
 
-#: infrun.c:8008
+#: infrun.c:8007
 msgid "No unwaited-for children left.\n"
 msgstr ""
 
-#: infrun.c:8192
+#: infrun.c:8191
 msgid "Signal        Stop\tPrint\tPass to program\tDescription\n"
 msgstr ""
 
-#: infrun.c:8225
+#: infrun.c:8224
 msgid "signal to handle"
 msgstr ""
 
 #. Not a number and not a recognized flag word => complain.
-#: infrun.c:8324
+#: infrun.c:8323
 #, possible-c-format
 msgid "Unrecognized or ambiguous flag word: \"%s\"."
 msgstr ""
 
-#: infrun.c:8339
+#: infrun.c:8338
 #, possible-c-format
 msgid ""
 "%s is used by the debugger.\n"
 "Are you sure you want to change it? "
 msgstr ""
 
-#: infrun.c:8346
+#: infrun.c:8345
 msgid "Not confirmed, unchanged.\n"
 msgstr ""
 
-#: infrun.c:8411
+#: infrun.c:8410
 msgid ""
 "Only signals 1-15 are valid as numeric signals.\n"
 "Use \"info signals\" for a list of symbolic signals."
 msgstr ""
 
-#: infrun.c:8454
+#: infrun.c:8453
 msgid ""
 "\n"
 "Use the \"handle\" command to change these tables.\n"
 msgstr ""
 
-#: infrun.c:8488
+#: infrun.c:8487
 msgid "Unable to read siginfo"
 msgstr ""
 
-#: infrun.c:8511
+#: infrun.c:8510
 msgid "Unable to write siginfo"
 msgstr ""
 
-#: infrun.c:8840
+#: infrun.c:8839
 msgid "Target does not support this operation."
 msgstr ""
 
-#: infrun.c:8850
+#: infrun.c:8849
 msgid "Forward.\n"
 msgstr ""
 
-#: infrun.c:8853
+#: infrun.c:8852
 msgid "Reverse.\n"
 msgstr ""
 
-#: infrun.c:8857
+#: infrun.c:8856
 #, possible-c-format
 msgid "bogus execution_direction value: %d"
 msgstr ""
 
-#: infrun.c:8866
+#: infrun.c:8865
 #, possible-c-format
 msgid "Resuming the execution of threads of all processes is %s.\n"
 msgstr ""
 
-#: infrun.c:8897
+#: infrun.c:8896
 msgid ""
 "What debugger does when program gets various signals.\n"
 "Specify a signal as argument to print info on that signal only."
 msgstr ""
 
-#: infrun.c:8902
+#: infrun.c:8901
 msgid ""
 "Specify how to handle signals.\n"
 "Usage: handle SIGNAL [ACTIONS]\n"
@@ -16911,46 +16962,46 @@ msgid ""
 "all signals cumulatively specified."
 msgstr ""
 
-#: infrun.c:8930
+#: infrun.c:8929
 msgid ""
 "There is no `stop' command, but you can set a hook on `stop'.\n"
 "This allows you to set a list of commands to be run each time execution\n"
 "of the program stops."
 msgstr ""
 
-#: infrun.c:8935
+#: infrun.c:8934
 msgid "Set inferior debugging."
 msgstr ""
 
-#: infrun.c:8936
+#: infrun.c:8935
 msgid "Show inferior debugging."
 msgstr ""
 
-#: infrun.c:8937
+#: infrun.c:8936
 msgid "When non-zero, inferior specific debugging is enabled."
 msgstr ""
 
-#: infrun.c:8944
+#: infrun.c:8943
 msgid "Set displaced stepping debugging."
 msgstr ""
 
-#: infrun.c:8945
+#: infrun.c:8944
 msgid "Show displaced stepping debugging."
 msgstr ""
 
-#: infrun.c:8946
+#: infrun.c:8945
 msgid "When non-zero, displaced stepping specific debugging is enabled."
 msgstr ""
 
-#: infrun.c:8953
+#: infrun.c:8952
 msgid "Set whether gdb controls the inferior in non-stop mode."
 msgstr ""
 
-#: infrun.c:8954
+#: infrun.c:8953
 msgid "Show whether gdb controls the inferior in non-stop mode."
 msgstr ""
 
-#: infrun.c:8955
+#: infrun.c:8954
 msgid ""
 "When debugging a multi-threaded program and this setting is\n"
 "off (the default, also called all-stop mode), when one thread stops\n"
@@ -16965,30 +17016,30 @@ msgid ""
 "leave it stopped or free to run as needed."
 msgstr ""
 
-#: infrun.c:9033
+#: infrun.c:9032
 msgid "Set stopping for shared library events."
 msgstr ""
 
-#: infrun.c:9034
+#: infrun.c:9033
 msgid "Show stopping for shared library events."
 msgstr ""
 
-#: infrun.c:9035
+#: infrun.c:9034
 msgid ""
 "If nonzero, gdb will give control to the user when the dynamic linker\n"
 "notifies gdb of shared library events.  The most common event of interest\n"
 "to the user would be loading/unloading of a new library."
 msgstr ""
 
-#: infrun.c:9045
+#: infrun.c:9044
 msgid "Set debugger response to a program call of fork or vfork."
 msgstr ""
 
-#: infrun.c:9046
+#: infrun.c:9045
 msgid "Show debugger response to a program call of fork or vfork."
 msgstr ""
 
-#: infrun.c:9047
+#: infrun.c:9046
 msgid ""
 "A fork or vfork creates a new process.  follow-fork-mode can be:\n"
 "  parent  - the original process is debugged after a fork\n"
@@ -16997,15 +17048,15 @@ msgid ""
 "By default, the debugger will follow the parent process."
 msgstr ""
 
-#: infrun.c:9059
+#: infrun.c:9058
 msgid "Set debugger response to a program call of exec."
 msgstr ""
 
-#: infrun.c:9060
+#: infrun.c:9059
 msgid "Show debugger response to a program call of exec."
 msgstr ""
 
-#: infrun.c:9061
+#: infrun.c:9060
 msgid ""
 "An exec call replaces the program image of a process.\n"
 "\n"
@@ -17024,15 +17075,15 @@ msgid ""
 "By default, the debugger will use the same inferior."
 msgstr ""
 
-#: infrun.c:9082
+#: infrun.c:9081
 msgid "Set mode for locking scheduler during execution."
 msgstr ""
 
-#: infrun.c:9083
+#: infrun.c:9082
 msgid "Show mode for locking scheduler during execution."
 msgstr ""
 
-#: infrun.c:9084
+#: infrun.c:9083
 msgid ""
 "off    == no locking (threads may preempt at any time)\n"
 "on     == full locking (no thread except the current thread may run)\n"
@@ -17045,15 +17096,15 @@ msgid ""
 "execution."
 msgstr ""
 
-#: infrun.c:9096
+#: infrun.c:9095
 msgid "Set mode for resuming threads of all processes."
 msgstr ""
 
-#: infrun.c:9097
+#: infrun.c:9096
 msgid "Show mode for resuming threads of all processes."
 msgstr ""
 
-#: infrun.c:9098
+#: infrun.c:9097
 msgid ""
 "When on, execution commands (such as 'continue' or 'next') resume all\n"
 "threads of all processes.  When off (which is the default), execution\n"
@@ -17062,30 +17113,30 @@ msgid ""
 "mode (see help set scheduler-locking)."
 msgstr ""
 
-#: infrun.c:9108
+#: infrun.c:9107
 msgid "Set mode of the step operation."
 msgstr ""
 
-#: infrun.c:9109
+#: infrun.c:9108
 msgid "Show mode of the step operation."
 msgstr ""
 
-#: infrun.c:9110
+#: infrun.c:9109
 msgid ""
 "When set, doing a step over a function without debug line information\n"
 "will stop at the first instruction of that function. Otherwise, the\n"
 "function is skipped and the step command stops at a different source line."
 msgstr ""
 
-#: infrun.c:9119
+#: infrun.c:9118
 msgid "Set debugger's willingness to use displaced stepping."
 msgstr ""
 
-#: infrun.c:9120
+#: infrun.c:9119
 msgid "Show debugger's willingness to use displaced stepping."
 msgstr ""
 
-#: infrun.c:9121
+#: infrun.c:9120
 msgid ""
 "If on, gdb will use displaced stepping to step over breakpoints if it is\n"
 "supported by the target architecture.  If off, gdb will not use displaced\n"
@@ -17097,57 +17148,57 @@ msgid ""
 "use it in all-stop mode (see help set non-stop)."
 msgstr ""
 
-#: infrun.c:9133
+#: infrun.c:9132
 msgid ""
 "Set direction of execution.\n"
 "Options are 'forward' or 'reverse'."
 msgstr ""
 
-#: infrun.c:9135
+#: infrun.c:9134
 msgid "Show direction of execution (forward/reverse)."
 msgstr ""
 
-#: infrun.c:9136
+#: infrun.c:9135
 msgid "Tells gdb whether to execute forward or backward."
 msgstr ""
 
 #. Set/show detach-on-fork: user-settable mode.
-#: infrun.c:9142
+#: infrun.c:9141
 msgid "Set whether gdb will detach the child of a fork."
 msgstr ""
 
-#: infrun.c:9143
+#: infrun.c:9142
 msgid "Show whether gdb will detach the child of a fork."
 msgstr ""
 
-#: infrun.c:9144
+#: infrun.c:9143
 msgid "Tells gdb whether to detach the child of a fork."
 msgstr ""
 
-#: infrun.c:9151
+#: infrun.c:9150
 msgid "Set disabling of debuggee's virtual address space randomization."
 msgstr ""
 
-#: infrun.c:9152
+#: infrun.c:9151
 msgid "Show disabling of debuggee's virtual address space randomization."
 msgstr ""
 
-#: infrun.c:9153
+#: infrun.c:9152
 msgid ""
 "When this mode is on (which is the default), randomization of the virtual\n"
 "address space is disabled.  Standalone programs run with the randomization\n"
 "enabled by default on some platforms."
 msgstr ""
 
-#: infrun.c:9177
+#: infrun.c:9176
 msgid "Set whether gdb controls the inferior in observer mode."
 msgstr ""
 
-#: infrun.c:9178
+#: infrun.c:9177
 msgid "Show whether gdb controls the inferior in observer mode."
 msgstr ""
 
-#: infrun.c:9179
+#: infrun.c:9178
 msgid ""
 "In observer mode, GDB can get data from the inferior, but not\n"
 "affect its execution.  Registers and memory may not be changed,\n"
@@ -17257,46 +17308,46 @@ msgid ""
 "%s."
 msgstr ""
 
-#: jit.c:1093
+#: jit.c:1096
 #, possible-c-format
 msgid "Could not recognize DWARF regnum %d"
 msgstr ""
 
-#: jit.c:1186
+#: jit.c:1189
 msgid "Successfully unwound frame using JIT reader.\n"
 msgstr ""
 
-#: jit.c:1191
+#: jit.c:1194
 msgid "Could not unwind frame using JIT reader.\n"
 msgstr ""
 
-#: jit.c:1319
+#: jit.c:1322
 #, possible-c-format
 msgid "Unsupported JIT protocol version %ld in descriptor (expected 1)\n"
 msgstr ""
 
-#: jit.c:1411
+#: jit.c:1414
 #, possible-c-format
 msgid "Unable to find JITed code entry at address: %s\n"
 msgstr ""
 
-#: jit.c:1419
+#: jit.c:1422
 msgid "Unknown action_flag value in JIT descriptor!"
 msgstr ""
 
-#: jit.c:1468
+#: jit.c:1471
 msgid "Set JIT debugging."
 msgstr ""
 
-#: jit.c:1469
+#: jit.c:1472
 msgid "Show JIT debugging."
 msgstr ""
 
-#: jit.c:1470
+#: jit.c:1473
 msgid "When non-zero, JIT debugging is enabled."
 msgstr ""
 
-#: jit.c:1486
+#: jit.c:1489
 msgid ""
 "Load FILE as debug info reader and unwinder for JIT compiled code.\n"
 "Usage: jit-reader-load FILE\n"
@@ -17304,7 +17355,7 @@ msgid ""
 "JIT compiled code.  The file is loaded from "
 msgstr ""
 
-#: jit.c:1495
+#: jit.c:1498
 msgid ""
 "Unload the currently loaded JIT debug info reader.\n"
 "Usage: jit-reader-unload\n"
@@ -17698,75 +17749,75 @@ msgstr ""
 msgid "IDs of currently known checkpoints."
 msgstr ""
 
-#: linux-nat.c:196
+#: linux-nat.c:197
 #, possible-c-format
 msgid "Debugging of GNU/Linux lwp module is %s.\n"
 msgstr ""
 
-#: linux-nat.c:495
+#: linux-nat.c:496
 msgid "Couldn't do single step"
 msgstr ""
 
-#: linux-nat.c:497
+#: linux-nat.c:498
 msgid "Couldn't wait vfork process"
 msgstr ""
 
-#: linux-nat.c:1220
+#: linux-nat.c:1221
 msgid "Unable to attach: program exited normally."
 msgstr ""
 
-#: linux-nat.c:1222
+#: linux-nat.c:1223
 #, possible-c-format
 msgid "Unable to attach: program exited with code %d."
 msgstr ""
 
-#: linux-nat.c:1233
+#: linux-nat.c:1234
 #, possible-c-format
 msgid "Unable to attach: program terminated with signal %s, %s."
 msgstr ""
 
-#: linux-nat.c:1240
+#: linux-nat.c:1241
 #, possible-c-format
 msgid "unexpected status %d for PID %ld"
 msgstr ""
 
-#: linux-nat.c:1957
+#: linux-nat.c:1958
 msgid "waiting for new child"
 msgstr ""
 
-#: linux-nat.c:1960
+#: linux-nat.c:1961
 #, possible-c-format
 msgid "wait returned unexpected PID %d"
 msgstr ""
 
-#: linux-nat.c:1963
+#: linux-nat.c:1964
 #, possible-c-format
 msgid "wait returned unexpected status 0x%x"
 msgstr ""
 
-#: linux-nat.c:4022 linux-nat.c:4035
+#: linux-nat.c:4023 linux-nat.c:4036
 #, possible-c-format
 msgid "Could not parse signal set: %s"
 msgstr ""
 
-#: linux-nat.c:4067
+#: linux-nat.c:4068
 #, possible-c-format
 msgid "Could not open %s"
 msgstr ""
 
-#: linux-nat.c:4541
+#: linux-nat.c:4542
 msgid "Set debugging of GNU/Linux lwp module."
 msgstr ""
 
-#: linux-nat.c:4542
+#: linux-nat.c:4543
 msgid "Show debugging of GNU/Linux lwp module."
 msgstr ""
 
-#: linux-nat.c:4550
+#: linux-nat.c:4551
 msgid "Set debugging of GNU/Linux namespaces module."
 msgstr ""
 
-#: linux-nat.c:4551
+#: linux-nat.c:4552
 msgid "Show debugging of GNU/Linux namespaces module."
 msgstr ""
 
@@ -18908,80 +18959,80 @@ msgstr ""
 msgid "no definition for macro `%s' in scope to #undef at %s:%d"
 msgstr ""
 
-#: main.c:126 source.c:569
+#: main.c:127 source.c:569
 #, possible-c-format
 msgid "%s is not a directory."
 msgstr ""
 
-#: main.c:455
+#: main.c:433
 #, possible-c-format
 msgid "%s: '--readnow' and '--readnever' cannot be specified simultaneously"
 msgstr ""
 
-#: main.c:562
+#: main.c:540
 msgid "fatal error: libbfd ABI mismatch"
 msgstr ""
 
-#: main.c:579
+#: main.c:557
 msgid "error finding working directory"
 msgstr ""
 
-#: main.c:754
+#: main.c:732
 #, possible-c-format
 msgid "%s: TUI mode is not supported"
 msgstr ""
 
-#: main.c:804
+#: main.c:782
 #, possible-c-format
 msgid "%s: empty path for `--data-directory'"
 msgstr ""
 
-#: main.c:813
+#: main.c:791
 #, possible-c-format
 msgid "%s: unable to load tclcommand file \"%s\""
 msgstr ""
 
-#: main.c:848
+#: main.c:826
 #, possible-c-format
 msgid "could not set baud rate to `%s'."
 msgstr ""
 
-#: main.c:861
+#: main.c:839
 #, possible-c-format
 msgid "could not set timeout limit to `%s'."
 msgstr ""
 
-#: main.c:883
+#: main.c:861
 #, possible-c-format
 msgid "Use `%s --help' for a complete list of options."
 msgstr ""
 
-#: main.c:914
+#: main.c:892
 #, possible-c-format
 msgid "%s: `--args' specified but no program specified"
 msgstr ""
 
-#: main.c:949
+#: main.c:927
 #, possible-c-format
 msgid "Excess command line arguments ignored. (%s%s)\n"
 msgstr ""
 
-#: main.c:1031
+#: main.c:1009
 msgid ""
 "\n"
 "warning: "
 msgstr ""
 
-#: main.c:1108
+#: main.c:1086
 msgid "Can't attach to process and specify a core file at the same time."
 msgstr ""
 
 #. Error messages should no longer be distinguished with extra output.
-#: main.c:1148
+#: main.c:1126
 msgid "warning: "
 msgstr ""
 
-#: main.c:1159
+#: main.c:1137
 #, possible-c-format
 msgid "auto-load: Loading .gdbinit file \"%s\".\n"
 msgstr ""
@@ -18989,7 +19040,7 @@ msgstr ""
 #. Note: The options in the list below are only approximately sorted
 #. in the alphabetical order, so as to group closely related options
 #. together.
-#: main.c:1268
+#: main.c:1246
 msgid ""
 "This is the GNU debugger.  Usage:\n"
 "\n"
@@ -18998,7 +19049,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: main.c:1273
+#: main.c:1251
 msgid ""
 "Selection of debuggee and its files:\n"
 "\n"
@@ -19015,7 +19066,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: main.c:1286
+#: main.c:1264
 msgid ""
 "Initial commands and command files:\n"
 "\n"
@@ -19033,7 +19084,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: main.c:1300
+#: main.c:1278
 msgid ""
 "Output and user interface control:\n"
 "\n"
@@ -19046,11 +19097,11 @@ msgid ""
 "  --nw               Do not use the GUI interface.\n"
 msgstr ""
 
-#: main.c:1310
+#: main.c:1288
 msgid "  --tui              Use a terminal user interface.\n"
 msgstr ""
 
-#: main.c:1314
+#: main.c:1292
 msgid ""
 "  --dbx              DBX compatibility mode.\n"
 "  -q, --quiet, --silent\n"
@@ -19058,7 +19109,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: main.c:1319
+#: main.c:1297
 msgid ""
 "Operating modes:\n"
 "\n"
@@ -19082,206 +19133,206 @@ msgid ""
 "                     Set GDB's data-directory to DIR.\n"
 msgstr ""
 
-#: main.c:1336
+#: main.c:1314
 msgid ""
 "\n"
 "At startup, GDB reads the following init files and executes their commands:\n"
 msgstr ""
 
-#: main.c:1348
+#: main.c:1326
 #, possible-c-format
 msgid "   * system-wide init files: %s\n"
 msgstr ""
 
-#: main.c:1353
+#: main.c:1331
 #, possible-c-format
 msgid "   * user-specific init file: %s\n"
 msgstr ""
 
-#: main.c:1357
+#: main.c:1335
 #, possible-c-format
 msgid "   * local init file (see also 'set auto-load local-gdbinit'): ./%s\n"
 msgstr ""
 
-#: main.c:1360
+#: main.c:1338
 msgid ""
 "\n"
 "For more information, type \"help\" from within GDB, or consult the\n"
 "GDB manual (available as on-line info or a printed manual).\n"
 msgstr ""
 
-#: main.c:1365
+#: main.c:1343
 #, possible-c-format
 msgid "Report bugs to \"%s\".\n"
 msgstr ""
 
-#: maint.c:56
+#: maint.c:60
 msgid ""
 "\"maintenance\" must be followed by the name of a maintenance command.\n"
 msgstr ""
 
-#: maint.c:65
+#: maint.c:69
 msgid "Should GDB dump core? "
 msgstr ""
 
-#: maint.c:117
+#: maint.c:121
 msgid "This command has been moved to \"demangle\".\n"
 msgstr ""
 
-#: maint.c:124
+#: maint.c:128
 msgid "\"maintenance time\" takes a numeric argument.\n"
 msgstr ""
 
-#: maint.c:145
+#: maint.c:149
 msgid "\"maintenance info\" must be followed by the name of an info command.\n"
 msgstr ""
 
-#: maint.c:158
+#: maint.c:162
 msgid ""
 "\"maintenance check\" must be followed by the name of a check command.\n"
 msgstr ""
 
-#: maint.c:442
+#: maint.c:446
 msgid "Exec file:\n"
 msgstr ""
 
-#: maint.c:460
+#: maint.c:464
 #, possible-c-format
 msgid "  Object file: %s\n"
 msgstr ""
 
-#: maint.c:477
+#: maint.c:481
 msgid "Core file:\n"
 msgstr ""
 
-#: maint.c:505 regcache-dump.c:231
+#: maint.c:509 regcache-dump.c:231
 msgid "maintenance print architecture"
 msgstr ""
 
-#: maint.c:517
+#: maint.c:521
 msgid ""
 "\"maintenance print\" must be followed by the name of a print command.\n"
 msgstr ""
 
-#: maint.c:537
+#: maint.c:541
 msgid "requires argument (address or section + address)"
 msgstr ""
 
 #. End of command?
-#: maint.c:547
+#: maint.c:551
 msgid "Need to specify section name and address"
 msgstr ""
 
-#: maint.c:559
+#: maint.c:563
 #, possible-c-format
 msgid "Unknown section %s."
 msgstr ""
 
-#: maint.c:589
+#: maint.c:593
 #, possible-c-format
 msgid "%s + %s in section %s of %s\n"
 msgstr ""
 
-#: maint.c:593
+#: maint.c:597
 #, possible-c-format
 msgid "%s + %s in section %s\n"
 msgstr ""
 
-#: maint.c:597
+#: maint.c:601
 #, possible-c-format
 msgid "%s + %s\n"
 msgstr ""
 
-#: maint.c:600
+#: maint.c:604
 #, possible-c-format
 msgid "no symbol at %s:%s\n"
 msgstr ""
 
-#: maint.c:603
+#: maint.c:607
 #, possible-c-format
 msgid "no symbol at %s\n"
 msgstr ""
 
-#: maint.c:618
+#: maint.c:622
 msgid ""
 "\"maintenance deprecate\" takes an argument,\n"
 "the command you want to deprecate, and optionally the replacement command\n"
 "enclosed in quotes.\n"
 msgstr ""
 
-#: maint.c:632
+#: maint.c:636
 msgid ""
 "\"maintenance undeprecate\" takes an argument, \n"
 "the command you want to undeprecate.\n"
 msgstr ""
 
-#: maint.c:663
+#: maint.c:667
 #, possible-c-format
 msgid "Can't find command '%s' to deprecate.\n"
 msgstr ""
 
-#: maint.c:741
+#: maint.c:745
 msgid "\"maintenance set\" must be followed by the name of a set command.\n"
 msgstr ""
 
-#: maint.c:778
+#: maint.c:782
 #, possible-c-format
 msgid "Internal profiling is %s.\n"
 msgstr ""
 
-#: maint.c:840
+#: maint.c:844
 msgid "Profiling support is not available on this system."
 msgstr ""
 
-#: maint.c:931
+#: maint.c:964
 msgid "command finished"
 msgstr ""
 
-#: maint.c:944
+#: maint.c:977
 #, possible-c-format
 msgid "Startup time: %.6f (cpu), %.6f (wall)\n"
 msgstr ""
 
-#: maint.c:945
+#: maint.c:978
 #, possible-c-format
 msgid "Command execution time: %.6f (cpu), %.6f (wall)\n"
 msgstr ""
 
-#: maint.c:959
+#: maint.c:992
 #, possible-c-format
 msgid "Space used: %ld (%s%ld during startup)\n"
 msgstr ""
 
-#: maint.c:960
+#: maint.c:993
 #, possible-c-format
 msgid "Space used: %ld (%s%ld for this command)\n"
 msgstr ""
 
-#: maint.c:972
+#: maint.c:1005
 #, possible-c-format
 msgid "#symtabs: %d (+%d), #compunits: %d (+%d), #blocks: %d (+%d)\n"
 msgstr ""
 
-#: maint.c:1008
+#: maint.c:1041
 msgid "command started"
 msgstr ""
 
-#: maint.c:1062
+#: maint.c:1095
 msgid "Bad value for 'mt set per-command no'."
 msgstr ""
 
-#: maint.c:1115
+#: maint.c:1148
 msgid ""
 "Commands for use by GDB maintainers.\n"
 "Includes commands to dump specific internal GDB structures in\n"
 "a human readable form, to cause GDB to deliberately dump core, etc."
 msgstr ""
 
-#: maint.c:1124
+#: maint.c:1157
 msgid "Commands for showing internal info about the program being debugged."
 msgstr ""
 
-#: maint.c:1130
+#: maint.c:1163
 msgid ""
 "List the BFD sections of the exec and core files.\n"
 "Arguments may be any combination of:\n"
@@ -19294,23 +19345,23 @@ msgid ""
 "lists all sections from all object files, including shared libraries."
 msgstr ""
 
-#: maint.c:1143
+#: maint.c:1176
 msgid "Maintenance command for printing GDB internal state."
 msgstr ""
 
-#: maint.c:1147
+#: maint.c:1180
 msgid ""
 "Set GDB internal variables used by the GDB maintainer.\n"
 "Configure variables internal to GDB that aid in GDB's maintenance"
 msgstr ""
 
-#: maint.c:1154
+#: maint.c:1187
 msgid ""
 "Show GDB internal variables used by the GDB maintainer.\n"
 "Configure variables internal to GDB that aid in GDB's maintenance"
 msgstr ""
 
-#: maint.c:1161
+#: maint.c:1194
 msgid ""
 "Like \"with\", but works with \"maintenance set\" variables.\n"
 "Usage: maintenance with SETTING [VALUE] [-- COMMAND]\n"
@@ -19319,81 +19370,81 @@ msgid ""
 "subcommands."
 msgstr ""
 
-#: maint.c:1171
+#: maint.c:1204
 msgid ""
 "Get fatal error; make debugger dump its core.\n"
 "GDB sets its handling of SIGQUIT back to SIG_DFL and then sends\n"
 "itself a SIGQUIT signal."
 msgstr ""
 
-#: maint.c:1179
+#: maint.c:1212
 msgid ""
 "Give GDB an internal error.\n"
 "Cause GDB to behave as if an internal error was detected."
 msgstr ""
 
-#: maint.c:1185
+#: maint.c:1218
 msgid ""
 "Give GDB an internal warning.\n"
 "Cause GDB to behave as if an internal warning was reported."
 msgstr ""
 
-#: maint.c:1191
+#: maint.c:1224
 msgid ""
 "Give GDB a demangler warning.\n"
 "Cause GDB to behave as if a demangler warning was reported."
 msgstr ""
 
-#: maint.c:1196
+#: maint.c:1229
 msgid "This command has been moved to \"demangle\"."
 msgstr ""
 
-#: maint.c:1201
+#: maint.c:1234
 msgid "Per-command statistics settings."
 msgstr ""
 
 #. allow-unknown
-#: maint.c:1206
+#: maint.c:1239
 msgid "Show per-command statistics settings."
 msgstr ""
 
-#: maint.c:1212
+#: maint.c:1245
 msgid "Set whether to display per-command execution time."
 msgstr ""
 
-#: maint.c:1213
+#: maint.c:1246
 msgid "Show whether to display per-command execution time."
 msgstr ""
 
-#: maint.c:1215
+#: maint.c:1248
 msgid ""
 "If enabled, the execution time for each command will be\n"
 "displayed following the command's output."
 msgstr ""
 
-#: maint.c:1222
+#: maint.c:1255
 msgid "Set whether to display per-command space usage."
 msgstr ""
 
-#: maint.c:1223
+#: maint.c:1256
 msgid "Show whether to display per-command space usage."
 msgstr ""
 
-#: maint.c:1225
+#: maint.c:1258
 msgid ""
 "If enabled, the space usage for each command will be\n"
 "displayed following the command's output."
 msgstr ""
 
-#: maint.c:1232
+#: maint.c:1265
 msgid "Set whether to display per-command symtab statistics."
 msgstr ""
 
-#: maint.c:1233
+#: maint.c:1266
 msgid "Show whether to display per-command symtab statistics."
 msgstr ""
 
-#: maint.c:1235
+#: maint.c:1268
 msgid ""
 "If enabled, the basic symtab statistics for each command will be\n"
 "displayed following the command's output."
@@ -19401,7 +19452,7 @@ msgstr ""
 
 #. This is equivalent to "mt set per-command time on".
 #. Kept because some people are used to typing "mt time 1".
-#: maint.c:1243
+#: maint.c:1276
 msgid ""
 "Set the display of time usage.\n"
 "If nonzero, will cause the execution time for each command to be\n"
@@ -19410,39 +19461,39 @@ msgstr ""
 
 #. This is equivalent to "mt set per-command space on".
 #. Kept because some people are used to typing "mt space 1".
-#: maint.c:1251
+#: maint.c:1284
 msgid ""
 "Set the display of space usage.\n"
 "If nonzero, will cause the execution space for each command to be\n"
 "displayed, following the command's output."
 msgstr ""
 
-#: maint.c:1257
+#: maint.c:1290
 msgid ""
 "Print a type chain for a given symbol.\n"
 "For each node in a type chain, print the raw data for each member of\n"
 "the type structure, and the interpretation of the data."
 msgstr ""
 
-#: maint.c:1264
+#: maint.c:1297
 msgid "Print statistics about internal gdb state."
 msgstr ""
 
-#: maint.c:1268
+#: maint.c:1301
 msgid ""
 "Print the internal architecture configuration.\n"
 "Takes an optional file parameter."
 msgstr ""
 
-#: maint.c:1273
+#: maint.c:1306
 msgid "Commands for checking internal gdb state."
 msgstr ""
 
-#: maint.c:1280
+#: maint.c:1313
 msgid "Translate a section name and address to a symbol."
 msgstr ""
 
-#: maint.c:1283
+#: maint.c:1316
 msgid ""
 "Deprecate a command (for testing purposes).\n"
 "Usage: maintenance deprecate COMMANDNAME [\"REPLACEMENT\"]\n"
@@ -19451,7 +19502,7 @@ msgid ""
 "rather you should use the C function deprecate_cmd()."
 msgstr ""
 
-#: maint.c:1290
+#: maint.c:1323
 msgid ""
 "Undeprecate a command (for testing purposes).\n"
 "Usage: maintenance undeprecate COMMANDNAME\n"
@@ -19459,7 +19510,7 @@ msgid ""
 "You probably shouldn't use this."
 msgstr ""
 
-#: maint.c:1297
+#: maint.c:1330
 msgid ""
 "Run gdb's unit tests.\n"
 "Usage: maintenance selftest [FILTER]\n"
@@ -19467,22 +19518,36 @@ msgid ""
 "If a filter is given, only the tests with that value in their name will ran."
 msgstr ""
 
-#: maint.c:1305
+#: maint.c:1338
 msgid "List the registered selftests."
 msgstr ""
 
-#: maint.c:1308
+#: maint.c:1341
 msgid "Set internal profiling."
 msgstr ""
 
-#: maint.c:1309
+#: maint.c:1342
 msgid "Show internal profiling."
 msgstr ""
 
-#: maint.c:1310
+#: maint.c:1343
 msgid "When enabled GDB is profiled."
 msgstr ""
 
+#: maint.c:1352
+msgid "Set the number of worker threads GDB can use."
+msgstr ""
+
+#: maint.c:1353
+msgid "Show the number of worker threads GDB can use."
+msgstr ""
+
+#: maint.c:1354
+msgid ""
+"GDB may use multiple threads to speed up certain CPU-intensive operations,\n"
+"such as demangling symbol names."
+msgstr ""
+
 #: maint-test-options.c:152
 #, possible-c-format
 msgid ""
@@ -19651,7 +19716,7 @@ msgstr ""
 msgid "bad register number %d (max %d) in symbol %s"
 msgstr ""
 
-#: mdebugread.c:743 mdebugread.c:1354
+#: mdebugread.c:743 mdebugread.c:1353
 #, possible-c-format
 msgid "unknown symbol type 0x%x"
 msgstr ""
@@ -19661,123 +19726,123 @@ msgstr ""
 msgid "declaration block contains unhandled symbol type %d"
 msgstr ""
 
-#: mdebugread.c:1239
+#: mdebugread.c:1238
 #, possible-c-format
 msgid "stEnd with storage class %d not handled"
 msgstr ""
 
-#: mdebugread.c:1596
+#: mdebugread.c:1595
 #, possible-c-format
 msgid "can't handle TIR fBitfield for %s"
 msgstr ""
 
-#: mdebugread.c:1625
+#: mdebugread.c:1624
 #, possible-c-format
 msgid "unable to cross ref btIndirect for %s"
 msgstr ""
 
-#: mdebugread.c:1740
+#: mdebugread.c:1739
 #, possible-c-format
 msgid "unable to cross ref btTypedef for %s"
 msgstr ""
 
-#: mdebugread.c:1786
+#: mdebugread.c:1785
 #, possible-c-format
 msgid "illegal TIR continued for %s"
 msgstr ""
 
-#: mdebugread.c:1848
+#: mdebugread.c:1847
 #, possible-c-format
 msgid "illegal array index type for %s, assuming int"
 msgstr ""
 
-#: mdebugread.c:1895
+#: mdebugread.c:1894
 #, possible-c-format
 msgid "unknown type qualifier 0x%x"
 msgstr ""
 
 #. Static procedure at address pr->adr.  Sigh.
 #. FIXME-32x64.  assuming pr->adr fits in long.
-#: mdebugread.c:1927
+#: mdebugread.c:1926
 #, possible-c-format
 msgid "can't handle PDR for static proc at 0x%lx"
 msgstr ""
 
-#: mdebugread.c:1990
+#: mdebugread.c:1989
 #, possible-c-format
 msgid "PDR for %s, but no symbol"
 msgstr ""
 
-#: mdebugread.c:2115
+#: mdebugread.c:2114
 #, possible-c-format
 msgid "Warning: %s `%s' is undefined (in %s)\n"
 msgstr ""
 
-#: mdebugread.c:2213
+#: mdebugread.c:2212
 #, possible-c-format
 msgid "guessed size of linetable for %s incorrectly"
 msgstr ""
 
-#: mdebugread.c:2467
+#: mdebugread.c:2466
 #, possible-c-format
 msgid "bad ifd for external symbol: %d (max %ld)"
 msgstr ""
 
-#: mdebugread.c:2473
+#: mdebugread.c:2472
 #, possible-c-format
 msgid "bad iss for external symbol: %ld (max %ld)"
 msgstr ""
 
 #. This should not happen either... FIXME.
-#: mdebugread.c:3436
+#: mdebugread.c:3435
 #, possible-c-format
 msgid "bad proc end in aux found from symbol %s"
 msgstr ""
 
 #. This happens with the Ultrix kernel.
-#: mdebugread.c:3548
+#: mdebugread.c:3547
 #, possible-c-format
 msgid "bad aux index at block symbol %s"
 msgstr ""
 
 #. Both complaints are valid:  one gives symbol sym_name,
 #. the other the offending symbol type.
-#: mdebugread.c:3569
+#: mdebugread.c:3568
 #, possible-c-format
 msgid "unknown local symbol %s"
 msgstr ""
 
-#: mdebugread.c:3571
+#: mdebugread.c:3570
 #, possible-c-format
 msgid "with type %d"
 msgstr ""
 
-#: mdebugread.c:3732
+#: mdebugread.c:3731
 #, possible-c-format
 msgid "bad file number %ld"
 msgstr ""
 
-#: mdebugread.c:4043
+#: mdebugread.c:4042
 #, possible-c-format
 msgid "unknown stabs symbol %s"
 msgstr ""
 
-#: mdebugread.c:4226
+#: mdebugread.c:4225
 #, possible-c-format
 msgid "File %s contains %d unresolved references:"
 msgstr ""
 
-#: mdebugread.c:4402
+#: mdebugread.c:4401
 #, possible-c-format
 msgid "illegal tq0 in forward typedef for %s"
 msgstr ""
 
-#: mdebugread.c:4438
+#: mdebugread.c:4437
 #, possible-c-format
 msgid "illegal bt %d in forward typedef for %s"
 msgstr ""
 
-#: mdebugread.c:4805
+#: mdebugread.c:4804
 #, possible-c-format
 msgid "Error reading ECOFF debugging information: %s"
 msgstr ""
@@ -20193,20 +20258,20 @@ msgstr ""
 msgid "-data-disassemble: No function contains specified address"
 msgstr ""
 
-#: mi/mi-interp.c:194
+#: mi/mi-interp.c:197
 msgid "-interpreter-exec: Usage: -interpreter-exec interp command"
 msgstr ""
 
-#: mi/mi-interp.c:199
+#: mi/mi-interp.c:202
 #, possible-c-format
 msgid "-interpreter-exec: could not find interpreter \"%s\""
 msgstr ""
 
-#: mi/mi-symbol-cmds.c:39
+#: mi/mi-symbol-cmds.c:41
 msgid "-symbol-list-lines: Usage: SOURCE_FILENAME"
 msgstr ""
 
-#: mi/mi-symbol-cmds.c:45
+#: mi/mi-symbol-cmds.c:47
 msgid "-symbol-list-lines: Unknown source file name."
 msgstr ""
 
@@ -20340,7 +20405,7 @@ msgstr ""
 msgid "-var-set-update-range: Usage: VAROBJ FROM TO"
 msgstr ""
 
-#: mi/mi-cmds.c:271
+#: mi/mi-cmds.c:275
 #, possible-c-format
 msgid "command `%s' appears to be duplicated"
 msgstr ""
@@ -20677,25 +20742,25 @@ msgid ""
 "time"
 msgstr ""
 
-#: minsyms.c:935
+#: minsyms.c:939
 #, possible-c-format
 msgid ""
 "GDB cannot resolve STT_GNU_IFUNC symbol at address %s without the ELF "
 "support compiled in."
 msgstr ""
 
-#: minsyms.c:946
+#: minsyms.c:950
 #, possible-c-format
 msgid ""
 "GDB cannot resolve STT_GNU_IFUNC symbol \"%s\" without the ELF support "
 "compiled in."
 msgstr ""
 
-#: minsyms.c:957
+#: minsyms.c:961
 msgid "elf_gnu_ifunc_resolver_stop cannot be reached."
 msgstr ""
 
-#: minsyms.c:966
+#: minsyms.c:970
 msgid "elf_gnu_ifunc_resolver_return_stop cannot be reached."
 msgstr ""
 
@@ -21524,8 +21589,8 @@ msgid "Invalid OpenCL vector size: %d"
 msgstr ""
 
 #: opencl-lang.c:182 opencl-lang.c:211 opencl-lang.c:390 opencl-lang.c:507
-#: opencl-lang.c:600 opencl-lang.c:911 valarith.c:1297 valarith.c:1343
-#: valarith.c:1645 valarith.c:1678 valops.c:865
+#: opencl-lang.c:600 opencl-lang.c:911 valarith.c:1308 valarith.c:1354
+#: valarith.c:1656 valarith.c:1689 valops.c:865
 msgid "Could not determine the vector bounds"
 msgstr ""
 
@@ -21547,11 +21612,11 @@ msgstr ""
 msgid "Vector operations are not supported on scalar types"
 msgstr ""
 
-#: opencl-lang.c:607 opencl-lang.c:918 valarith.c:1353
+#: opencl-lang.c:607 opencl-lang.c:918 valarith.c:1364
 msgid "Cannot perform operation on vectors with different types"
 msgstr ""
 
-#: opencl-lang.c:714 valarith.c:1396
+#: opencl-lang.c:714 valarith.c:1407
 msgid "Argument to operation not a number or boolean."
 msgstr ""
 
@@ -22747,45 +22812,45 @@ msgstr ""
 msgid "Show printing of pascal static members."
 msgstr ""
 
-#: python/py-cmd.c:119 python/py-cmd.c:186
+#: python/py-cmd.c:116 python/py-cmd.c:183
 msgid "Invalid invocation of Python command object."
 msgstr ""
 
-#: python/py-cmd.c:127
+#: python/py-cmd.c:124
 msgid "Python command object missing 'invoke' method."
 msgstr ""
 
-#: python/py-cmd.c:137
+#: python/py-cmd.c:134
 msgid "Could not convert arguments to Python string."
 msgstr ""
 
-#: python/py-cmd.c:196 python/py-cmd.c:209
+#: python/py-cmd.c:193 python/py-cmd.c:206
 msgid "Could not convert argument to Python string."
 msgstr ""
 
-#: python/py-cmd.c:372
+#: python/py-cmd.c:369
 msgid "No command name found."
 msgstr ""
 
-#: python/py-cmd.c:402
+#: python/py-cmd.c:396
 #, possible-c-format
 msgid "Could not find command prefix %s."
 msgstr ""
 
-#: python/py-cmd.c:414
+#: python/py-cmd.c:408
 #, possible-c-format
 msgid "'%s' is not a prefix command."
 msgstr ""
 
-#: python/py-cmd.c:460
+#: python/py-cmd.c:454
 msgid "Command object already initialized."
 msgstr ""
 
-#: python/py-cmd.c:476 python/py-param.c:682
+#: python/py-cmd.c:470 python/py-param.c:682
 msgid "Invalid command class argument."
 msgstr ""
 
-#: python/py-cmd.c:483
+#: python/py-cmd.c:477
 msgid "Invalid completion type argument."
 msgstr ""
 
@@ -22834,8 +22899,8 @@ msgid ""
 msgstr ""
 
 #: python/py-xmethods.c:537 python/py-xmethods.c:544 python/py-xmethods.c:558
-#: python/py-xmethods.c:569 python/py-xmethods.c:578 python/python.c:310
-#: python/python.c:393 python/python.c:409 python/py-function.c:94
+#: python/py-xmethods.c:569 python/py-xmethods.c:578 python/python.c:309
+#: python/python.c:392 python/python.c:408 python/py-function.c:94
 #: python/py-prettyprint.c:519
 msgid "Error while executing Python code."
 msgstr ""
@@ -23099,57 +23164,57 @@ msgstr ""
 msgid "Linetable information not found in symbol table"
 msgstr ""
 
-#: python/python.c:206
+#: python/python.c:205
 msgid "Python not initialized"
 msgstr ""
 
-#: python/python.c:226 python/python.c:1914
+#: python/python.c:225 python/python.c:1890
 msgid "internal error: Unhandled Python exception"
 msgstr ""
 
-#: python/python.c:344
+#: python/python.c:343
 msgid "Installation error: gdb._execute_file function is missing"
 msgstr ""
 
-#: python/python.c:386
+#: python/python.c:385
 msgid "Invalid \"python\" block structure."
 msgstr ""
 
-#: python/python.c:487
+#: python/python.c:486
 msgid "Programmer error: unhandled type."
 msgstr ""
 
-#: python/python.c:516
+#: python/python.c:515
 #, possible-c-format
 msgid "Could not find parameter `%s'."
 msgstr ""
 
-#: python/python.c:520
+#: python/python.c:519
 #, possible-c-format
 msgid "`%s' is not a parameter."
 msgstr ""
 
-#: python/python.c:766
+#: python/python.c:750
 msgid "Number of breakpoints exceeds throttled maximum."
 msgstr ""
 
-#: python/python.c:1007
+#: python/python.c:1009
 msgid "Posted event is not callable"
 msgstr ""
 
-#: python/python.c:1095
+#: python/python.c:1072
 msgid "Return from prompt_hook must be either a Python string, or None"
 msgstr ""
 
-#: python/python.c:1254
+#: python/python.c:1231
 msgid "Error occurred computing Python errormessage.\n"
 msgstr ""
 
-#: python/python.c:1505
+#: python/python.c:1482
 msgid "Python scripting is not supported in this copy of GDB."
 msgstr ""
 
-#: python/python.c:1763
+#: python/python.c:1739
 msgid ""
 "Start an interactive Python prompt.\n"
 "\n"
@@ -23164,7 +23229,7 @@ msgid ""
 "    5"
 msgstr ""
 
-#: python/python.c:1776
+#: python/python.c:1752
 msgid ""
 "Start a Python interactive prompt.\n"
 "\n"
@@ -23172,7 +23237,7 @@ msgid ""
 "This command is only a placeholder."
 msgstr ""
 
-#: python/python.c:1787
+#: python/python.c:1763
 msgid ""
 "Evaluate a Python command.\n"
 "\n"
@@ -23185,7 +23250,7 @@ msgid ""
 "the end of the command."
 msgstr ""
 
-#: python/python.c:1798
+#: python/python.c:1774
 msgid ""
 "Evaluate a Python command.\n"
 "\n"
@@ -23193,21 +23258,21 @@ msgid ""
 "This command is only a placeholder."
 msgstr ""
 
-#: python/python.c:1809 python/python.c:1814
+#: python/python.c:1785 python/python.c:1790
 msgid "Prefix command for python preference settings."
 msgstr ""
 
-#: python/python.c:1819
+#: python/python.c:1795
 msgid "Set mode for Python stack dump on error."
 msgstr ""
 
-#: python/python.c:1820
+#: python/python.c:1796
 msgid "Show the mode of Python stack printing on error."
 msgstr ""
 
 #. This is passed in one call to warning so that blank lines aren't
 #. inserted between each line of text.
-#: python/python.c:1887
+#: python/python.c:1863
 #, possible-c-format
 msgid ""
 "\n"
@@ -25854,70 +25919,70 @@ msgid ""
 "When non-zero, debugging output about async remote notifications is enabled."
 msgstr ""
 
-#: remote-sim.c:81
+#: remote-sim.c:79
 msgid "simulator"
 msgstr ""
 
-#: remote-sim.c:82
+#: remote-sim.c:80
 msgid "Use the compiled-in simulator."
 msgstr ""
 
-#: remote-sim.c:227
+#: remote-sim.c:225
 #, possible-c-format
 msgid "Unable to create simulator instance for inferior %d."
 msgstr ""
 
-#: remote-sim.c:242
+#: remote-sim.c:240
 #, possible-c-format
 msgid ""
 "Inferior %d and inferior %d would have identical simulator state.\n"
 "(This simulator does not support the running of more than one inferior.)"
 msgstr ""
 
-#: remote-sim.c:539
+#: remote-sim.c:537
 msgid "Register size different to expected"
 msgstr ""
 
-#: remote-sim.c:542
+#: remote-sim.c:540
 #, possible-c-format
 msgid "Register %d not updated"
 msgstr ""
 
-#: remote-sim.c:544
+#: remote-sim.c:542
 #, possible-c-format
 msgid "Register %s not updated"
 msgstr ""
 
-#: remote-sim.c:582
+#: remote-sim.c:580
 msgid "program to load"
 msgstr ""
 
-#: remote-sim.c:589
+#: remote-sim.c:587
 msgid "GDB sim does not yet support a load offset."
 msgstr ""
 
-#: remote-sim.c:598
+#: remote-sim.c:596
 msgid "unable to load program"
 msgstr ""
 
-#: remote-sim.c:629 remote-sim.c:1068
+#: remote-sim.c:627 remote-sim.c:1066
 msgid "No program loaded."
 msgstr ""
 
-#: remote-sim.c:657
+#: remote-sim.c:655
 msgid "Unable to create sim inferior."
 msgstr ""
 
-#: remote-sim.c:749
+#: remote-sim.c:747
 msgid "unable to create simulator instance"
 msgstr ""
 
-#: remote-sim.c:864
+#: remote-sim.c:862
 #, possible-c-format
 msgid "gdbsim_resume: pid %d, step %d, signal %d\n"
 msgstr ""
 
-#: remote-sim.c:976
+#: remote-sim.c:974
 #, possible-c-format
 msgid "Unable to wait for pid %d.  Inferior not found."
 msgstr ""
@@ -25930,11 +25995,11 @@ msgstr ""
 #. Consistent with that model, access to the simulator, via sim
 #. commands, is restricted to the period when the channel to the
 #. simulator is open.
-#: remote-sim.c:1194
+#: remote-sim.c:1192
 msgid "Not connected to the simulator target"
 msgstr ""
 
-#: remote-sim.c:1307
+#: remote-sim.c:1305
 msgid "Send a command to the simulator."
 msgstr ""
 
@@ -27999,98 +28064,98 @@ msgstr ""
 msgid "GDB internal error: bad real_filenum"
 msgstr ""
 
-#: stabsread.c:682
+#: stabsread.c:681
 #, possible-c-format
 msgid "Bad stabs string '%s'"
 msgstr ""
 
-#: stabsread.c:734
+#: stabsread.c:733
 #, possible-c-format
 msgid "Unknown C++ symbol name `%s'"
 msgstr ""
 
-#: stabsread.c:1489
+#: stabsread.c:1488
 msgid "couldn't parse type; debugger out of date?"
 msgstr ""
 
 #. Complain and keep going, so compilers can invent new
 #. cross-reference types.
-#: stabsread.c:1609
+#: stabsread.c:1608
 #, possible-c-format
 msgid "Unrecognized cross-reference type `%c'"
 msgstr ""
 
-#: stabsread.c:1834
+#: stabsread.c:1833
 #, possible-c-format
 msgid ""
 "Prototyped function type didn't end arguments with `#':\n"
 "%s"
 msgstr ""
 
-#: stabsread.c:1946
+#: stabsread.c:1945
 #, possible-c-format
 msgid "invalid (minimal) member type data format at symtab pos %d."
 msgstr ""
 
-#: stabsread.c:2050
+#: stabsread.c:2049
 msgid "GDB internal error, type is NULL in stabsread.c."
 msgstr ""
 
-#: stabsread.c:2079
+#: stabsread.c:2078
 #, possible-c-format
 msgid "Unknown builtin type %d"
 msgstr ""
 
-#: stabsread.c:2245
+#: stabsread.c:2244
 #, possible-c-format
 msgid "Method has bad physname %s\n"
 msgstr ""
 
-#: stabsread.c:2434
+#: stabsread.c:2433
 #, possible-c-format
 msgid "const/volatile indicator missing, got '%c'"
 msgstr ""
 
 #. error
-#: stabsread.c:2517
+#: stabsread.c:2516
 #, possible-c-format
 msgid "member function type missing, got '%c'"
 msgstr ""
 
-#: stabsread.c:2771
+#: stabsread.c:2770
 #, possible-c-format
 msgid "C++ abbreviated type name unknown at symtab pos %d"
 msgstr ""
 
-#: stabsread.c:3131
+#: stabsread.c:3130
 #, possible-c-format
 msgid "Unknown virtual character `%c' for baseclass"
 msgstr ""
 
-#: stabsread.c:3148
+#: stabsread.c:3147
 #, possible-c-format
 msgid "Unknown visibility `%c' for baseclass"
 msgstr ""
 
 #. Virtual function table field not found.
-#: stabsread.c:3256
+#: stabsread.c:3255
 #, possible-c-format
 msgid "virtual function table pointer not found when defining class `%s'"
 msgstr ""
 
-#: stabsread.c:3368
+#: stabsread.c:3367
 #, possible-c-format
 msgid "Unknown visibility `%c' for field"
 msgstr ""
 
-#: stabsread.c:3404
+#: stabsread.c:3403
 #, possible-c-format
 msgid "struct/union type gets multiply defined: %s%s"
 msgstr ""
 
 #. Does this actually ever happen?  Is that why we are worrying
 #. about dealing with it rather than just calling error_type?
-#: stabsread.c:4195
+#: stabsread.c:4194
 #, possible-c-format
 msgid "base type %d of range type is not defined"
 msgstr ""
@@ -28099,33 +28164,33 @@ msgstr ""
 #. output contained `(0,41),(0,42)=@s8;-16;,(0,43),(0,1);' where should
 #. have been present ";-16,(0,43)" reference instead.  This way the
 #. excessive ";" marker prematurely stops the parameters parsing.
-#: stabsread.c:4236
+#: stabsread.c:4235
 msgid "Invalid (empty) method arguments"
 msgstr ""
 
-#: stabsread.c:4278
+#: stabsread.c:4277
 msgid "Invalid symbol data: common block within common block"
 msgstr ""
 
-#: stabsread.c:4303
+#: stabsread.c:4302
 msgid "ECOMM symbol unmatched by BCOMM"
 msgstr ""
 
-#: stabsread.c:4507
+#: stabsread.c:4506
 msgid "need a type name"
 msgstr ""
 
-#: stabsread.c:4532
+#: stabsread.c:4531
 #, possible-c-format
 msgid "forward-referenced types left unresolved, type code %d."
 msgstr ""
 
-#: stabsread.c:4680
+#: stabsread.c:4679
 #, possible-c-format
 msgid "%s: common block `%s' from global_sym_chain unresolved"
 msgstr ""
 
-#: stabsread.c:4762 stabsread.c:4767
+#: stabsread.c:4761 stabsread.c:4766
 #, possible-c-format
 msgid "invalid symbol name \"%s\""
 msgstr ""
@@ -29431,31 +29496,31 @@ msgid ""
 "With an argument REGEXP, only expand the symbol tables with matching names."
 msgstr ""
 
-#: symtab.c:1298
+#: symtab.c:1304
 #, possible-c-format
 msgid "Symbol cache size is too large, max is %u."
 msgstr ""
 
-#: symtab.c:1540
+#: symtab.c:1546
 #, possible-c-format
 msgid ""
 "Symbol cache for pspace %d\n"
 "%s:\n"
 msgstr ""
 
-#: symtab.c:1611
+#: symtab.c:1617
 #, possible-c-format
 msgid ""
 "Symbol cache statistics for pspace %d\n"
 "%s:\n"
 msgstr ""
 
-#: symtab.c:2083
+#: symtab.c:2089
 #, possible-c-format
 msgid "Internal error: `%s' is not an aggregate"
 msgstr ""
 
-#: symtab.c:2354
+#: symtab.c:2360
 #, possible-c-format
 msgid ""
 "Internal: %s symbol `%s' found in %s psymtab but not in symtab.\n"
@@ -29463,193 +29528,193 @@ msgid ""
 "\t (if a template, try specifying an instantiation: %s<type>)."
 msgstr ""
 
-#: symtab.c:4031
+#: symtab.c:4037
 msgid "mismatched quoting on brackets, try 'operator\\[\\]'"
 msgstr ""
 
-#: symtab.c:4039
+#: symtab.c:4045
 msgid "nothing is allowed between '[' and ']'"
 msgstr ""
 
-#: symtab.c:4095
+#: symtab.c:4101
 msgid "`operator ()' must be specified without whitespace in `()'"
 msgstr ""
 
-#: symtab.c:4101
+#: symtab.c:4107
 msgid "`operator ?:' must be specified without whitespace in `?:'"
 msgstr ""
 
-#: symtab.c:4107
+#: symtab.c:4113
 msgid "`operator []' must be specified without whitespace in `[]'"
 msgstr ""
 
-#: symtab.c:4112
+#: symtab.c:4118
 #, possible-c-format
 msgid "`operator %s' not supported"
 msgstr ""
 
-#: symtab.c:4221
+#: symtab.c:4227
 msgid "Show only the files having a dirname matching REGEXP."
 msgstr ""
 
-#: symtab.c:4227
+#: symtab.c:4233
 msgid "Show only the files having a basename matching REGEXP."
 msgstr ""
 
-#: symtab.c:4254
+#: symtab.c:4260
 #, possible-c-format
 msgid "(dirname matching regular expression \"%s\")"
 msgstr ""
 
-#: symtab.c:4257
+#: symtab.c:4263
 #, possible-c-format
 msgid "(basename matching regular expression \"%s\")"
 msgstr ""
 
-#: symtab.c:4260
+#: symtab.c:4266
 #, possible-c-format
 msgid "(filename matching regular expression \"%s\")"
 msgstr ""
 
-#: symtab.c:4303
+#: symtab.c:4309
 msgid "You cannot give both -basename and -dirname to 'info sources'."
 msgstr ""
 
-#: symtab.c:4306
+#: symtab.c:4312
 msgid "Missing REGEXP for 'info sources'."
 msgstr ""
 
-#: symtab.c:4321
+#: symtab.c:4327
 msgid "Source files for which symbols have been read in:\n"
 msgstr ""
 
-#: symtab.c:4338
+#: symtab.c:4344
 msgid "Source files for which symbols will be read in on demand:\n"
 msgstr ""
 
-#: symtab.c:4750
+#: symtab.c:4796
 #, possible-c-format
 msgid ""
 "\n"
 "File %ps:\n"
 msgstr ""
 
-#: symtab.c:4822
+#: symtab.c:4832
 #, possible-c-format
 msgid "%ps  %ps\n"
 msgstr ""
 
-#: symtab.c:4858
+#: symtab.c:4868
 #, possible-c-format
 msgid ""
 "All %ss matching regular expression \"%s\" with type matching regular "
 "expression \"%s\":\n"
 msgstr ""
 
-#: symtab.c:4862
+#: symtab.c:4872
 #, possible-c-format
 msgid "All %ss matching regular expression \"%s\":\n"
 msgstr ""
 
-#: symtab.c:4869
+#: symtab.c:4879
 #, possible-c-format
 msgid "All defined %ss with type matching regular expression \"%s\" :\n"
 msgstr ""
 
-#: symtab.c:4873
+#: symtab.c:4883
 #, possible-c-format
 msgid "All defined %ss:\n"
 msgstr ""
 
-#: symtab.c:4886
+#: symtab.c:4896
 msgid ""
 "\n"
 "Non-debugging symbols:\n"
 msgstr ""
 
-#: symtab.c:6411
+#: symtab.c:6408
 msgid "All variables in all modules:"
 msgstr ""
 
-#: symtab.c:6412
+#: symtab.c:6409
 msgid "All functions in all modules:"
 msgstr ""
 
-#: symtab.c:6416
+#: symtab.c:6413
 #, possible-c-format
 msgid "All variables matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6418
+#: symtab.c:6415
 #, possible-c-format
 msgid "All functions matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6427
+#: symtab.c:6424
 #, possible-c-format
 msgid ""
 "All variables with type matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6429
+#: symtab.c:6426
 #, possible-c-format
 msgid ""
 "All functions with type matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6435
+#: symtab.c:6432
 #, possible-c-format
 msgid ""
 "All variables matching regular expression \"%s\",\n"
 "\twith type matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6438
+#: symtab.c:6435
 #, possible-c-format
 msgid ""
 "All functions matching regular expression \"%s\",\n"
 "\twith type matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6451
+#: symtab.c:6448
 #, possible-c-format
 msgid "All variables in all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6453
+#: symtab.c:6450
 #, possible-c-format
 msgid "All functions in all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6459
+#: symtab.c:6456
 #, possible-c-format
 msgid ""
 "All variables matching regular expression \"%s\",\n"
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6462
+#: symtab.c:6459
 #, possible-c-format
 msgid ""
 "All functions matching regular expression \"%s\",\n"
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6472
+#: symtab.c:6469
 #, possible-c-format
 msgid ""
 "All variables with type matching regular expression \"%s\"\n"
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6475
+#: symtab.c:6472
 #, possible-c-format
 msgid ""
 "All functions with type matching regular expression \"%s\"\n"
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6482
+#: symtab.c:6479
 #, possible-c-format
 msgid ""
 "All variables matching regular expression \"%s\",\n"
@@ -29657,7 +29722,7 @@ msgid ""
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6486
+#: symtab.c:6483
 #, possible-c-format
 msgid ""
 "All functions matching regular expression \"%s\",\n"
@@ -29665,41 +29730,41 @@ msgid ""
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6525
+#: symtab.c:6522
 #, possible-c-format
 msgid "Module \"%s\":\n"
 msgstr ""
 
-#: symtab.c:6647
+#: symtab.c:6644
 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:6651 symtab.c:6661
+#: symtab.c:6648 symtab.c:6658
 msgid "global and static variables"
 msgstr ""
 
-#: symtab.c:6657
+#: symtab.c:6654
 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:6667
+#: symtab.c:6664
 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:6671
+#: symtab.c:6668
 msgid "functions"
 msgstr ""
 
-#: symtab.c:6675
+#: symtab.c:6672
 msgid ""
 "All type names, or those matching REGEXP.\n"
 "Usage: info types [-q] [REGEXP]\n"
@@ -29707,7 +29772,7 @@ msgid ""
 "REGEXP is given.  The optional flag -q disables printing of headers."
 msgstr ""
 
-#: symtab.c:6685
+#: symtab.c:6682
 msgid ""
 "All source files in the program or those matching REGEXP.\n"
 "Usage: info sources [OPTION]... [REGEXP]\n"
@@ -29717,15 +29782,15 @@ msgid ""
 "%OPTIONS%"
 msgstr ""
 
-#: symtab.c:6698
+#: symtab.c:6695
 msgid "All module names, or those matching REGEXP."
 msgstr ""
 
-#: symtab.c:6701
+#: symtab.c:6698
 msgid "Print information about modules."
 msgstr ""
 
-#: symtab.c:6706
+#: symtab.c:6703
 msgid ""
 "Display functions arranged by modules.\n"
 "Usage: info module functions [-q] [-m MODREGEXP] [-t TYPEREGEXP] [REGEXP]\n"
@@ -29741,7 +29806,7 @@ msgid ""
 "The -q flag suppresses printing some header information."
 msgstr ""
 
-#: symtab.c:6723
+#: symtab.c:6720
 msgid ""
 "Display variables arranged by modules.\n"
 "Usage: info module variables [-q] [-m MODREGEXP] [-t TYPEREGEXP] [REGEXP]\n"
@@ -29757,32 +29822,32 @@ msgid ""
 "The -q flag suppresses printing some header information."
 msgstr ""
 
-#: symtab.c:6741
+#: symtab.c:6738
 msgid "Set a breakpoint for all functions matching REGEXP."
 msgstr ""
 
-#: symtab.c:6745
+#: symtab.c:6742
 msgid "Set how the debugger handles ambiguities in expressions."
 msgstr ""
 
-#: symtab.c:6746
+#: symtab.c:6743
 msgid "Show how the debugger handles ambiguities in expressions."
 msgstr ""
 
-#: symtab.c:6747
+#: symtab.c:6744
 msgid ""
 "Valid values are \"ask\", \"all\", \"cancel\", and the default is \"all\"."
 msgstr ""
 
-#: symtab.c:6752
+#: symtab.c:6749
 msgid "Set whether a source file may have multiple base names."
 msgstr ""
 
-#: symtab.c:6753
+#: symtab.c:6750
 msgid "Show whether a source file may have multiple base names."
 msgstr ""
 
-#: symtab.c:6754
+#: symtab.c:6751
 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"
@@ -29793,60 +29858,60 @@ msgid ""
 "one base name, and gdb will do file name comparisons more efficiently."
 msgstr ""
 
-#: symtab.c:6766
+#: symtab.c:6763
 msgid "Set debugging of symbol table creation."
 msgstr ""
 
-#: symtab.c:6767
+#: symtab.c:6764
 msgid "Show debugging of symbol table creation."
 msgstr ""
 
-#: symtab.c:6767
+#: symtab.c:6764
 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:6776
+#: symtab.c:6773
 msgid "Set debugging of symbol lookup."
 msgstr ""
 
-#: symtab.c:6777
+#: symtab.c:6774
 msgid "Show debugging of symbol lookup."
 msgstr ""
 
-#: symtab.c:6778
+#: symtab.c:6775
 msgid "When enabled (non-zero), symbol lookups are logged."
 msgstr ""
 
-#: symtab.c:6785
+#: symtab.c:6782
 msgid "Set the size of the symbol cache."
 msgstr ""
 
-#: symtab.c:6786
+#: symtab.c:6783
 msgid "Show the size of the symbol cache."
 msgstr ""
 
-#: symtab.c:6786
+#: symtab.c:6783
 msgid ""
 "The size of the symbol cache.\n"
 "If zero then the symbol cache is disabled."
 msgstr ""
 
-#: symtab.c:6794
+#: symtab.c:6791
 msgid "Dump the symbol cache for each program space."
 msgstr ""
 
-#: symtab.c:6799
+#: symtab.c:6796
 msgid "Print symbol cache statistics for each program space."
 msgstr ""
 
-#: symtab.c:6804
+#: symtab.c:6801
 msgid "Flush the symbol cache for each program space."
 msgstr ""
 
-#: symtab.h:1320
+#: symtab.h:1335
 msgid "Section index is uninitialized"
 msgstr ""
 
@@ -30707,273 +30772,273 @@ msgstr ""
 msgid "Usage: new-ui INTERPRETER TTY"
 msgstr ""
 
-#: top.c:635
+#: top.c:647
 msgid "That is not a command, just a help topic."
 msgstr ""
 
-#: top.c:751
+#: top.c:763
 msgid "No previous command to relaunch"
 msgstr ""
 
-#: top.c:878
+#: top.c:890
 #, possible-c-format
 msgid "Saving of the history record on exit is %s.\n"
 msgstr ""
 
-#: top.c:890
+#: top.c:902
 #, possible-c-format
 msgid "The size of the command history is %s.\n"
 msgstr ""
 
-#: top.c:903
+#: top.c:915
 #, possible-c-format
 msgid "The number of history entries to look back at for duplicates is %s.\n"
 msgstr ""
 
-#: top.c:913
+#: top.c:925
 #, possible-c-format
 msgid "The filename in which to record the command history is \"%s\".\n"
 msgstr ""
 
-#: top.c:1182 top.c:1212
+#: top.c:1194 top.c:1224
 #, possible-c-format
 msgid "Could not rename %s to %s: %s"
 msgstr ""
 
-#: top.c:1388
+#: top.c:1400
 msgid "Type \"show configuration\" for configuration details.\n"
 msgstr ""
 
-#: top.c:1394
+#: top.c:1406
 msgid "For bug reporting instructions, please see:\n"
 msgstr ""
 
-#: top.c:1398
+#: top.c:1410
 msgid ""
 "Find the GDB manual and other documentation resources online at:\n"
 "    <http://www.gnu.org/software/gdb/documentation/>."
 msgstr ""
 
-#: top.c:1401
+#: top.c:1413
 msgid "For help, type \"help\".\n"
 msgstr ""
 
-#: top.c:1403
+#: top.c:1415
 msgid "Type \"apropos word\" to search for commands related to \"word\"."
 msgstr ""
 
-#: top.c:1411
+#: top.c:1423
 #, possible-c-format
 msgid ""
 "This GDB was configured as follows:\n"
 "   configure --host=%s --target=%s\n"
 msgstr ""
 
-#: top.c:1415
+#: top.c:1427
 #, possible-c-format
 msgid ""
 "             --with-auto-load-dir=%s\n"
 "             --with-auto-load-safe-path=%s\n"
 msgstr ""
 
-#: top.c:1420
+#: top.c:1432
 msgid "             --with-expat\n"
 msgstr ""
 
-#: top.c:1424
+#: top.c:1436
 msgid "             --without-expat\n"
 msgstr ""
 
-#: top.c:1429
+#: top.c:1441
 #, possible-c-format
 msgid "             --with-gdb-datadir=%s%s\n"
 msgstr ""
 
-#: top.c:1433
+#: top.c:1445
 #, possible-c-format
 msgid "             --with-iconv-bin=%s%s\n"
 msgstr ""
 
-#: top.c:1438
+#: top.c:1450
 #, possible-c-format
 msgid "             --with-jit-reader-dir=%s%s\n"
 msgstr ""
 
-#: top.c:1442
+#: top.c:1454
 msgid "             --with-libunwind-ia64\n"
 msgstr ""
 
-#: top.c:1446
+#: top.c:1458
 msgid "             --without-libunwind-ia64\n"
 msgstr ""
 
-#: top.c:1451
+#: top.c:1463
 msgid "             --with-lzma\n"
 msgstr ""
 
-#: top.c:1455
+#: top.c:1467
 msgid "             --without-lzma\n"
 msgstr ""
 
-#: top.c:1460
+#: top.c:1472
 msgid "             --with-babeltrace\n"
 msgstr ""
 
-#: top.c:1464
+#: top.c:1476
 msgid "             --without-babeltrace\n"
 msgstr ""
 
-#: top.c:1469
+#: top.c:1481
 msgid "             --with-intel-pt\n"
 msgstr ""
 
-#: top.c:1473
+#: top.c:1485
 msgid "             --without-intel-pt\n"
 msgstr ""
 
-#: top.c:1478
+#: top.c:1490
 msgid "             --with-mpfr\n"
 msgstr ""
 
-#: top.c:1482
+#: top.c:1494
 msgid "             --without-mpfr\n"
 msgstr ""
 
-#: top.c:1487
+#: top.c:1499
 #, possible-c-format
 msgid "             --with-python=%s%s\n"
 msgstr ""
 
-#: top.c:1491
+#: top.c:1503
 msgid "             --without-python\n"
 msgstr ""
 
-#: top.c:1496
+#: top.c:1508
 msgid "             --with-guile\n"
 msgstr ""
 
-#: top.c:1500
+#: top.c:1512
 msgid "             --without-guile\n"
 msgstr ""
 
-#: top.c:1505
+#: top.c:1517
 msgid "             --enable-source-highlight\n"
 msgstr ""
 
-#: top.c:1509
+#: top.c:1521
 msgid "             --disable-source-highlight\n"
 msgstr ""
 
-#: top.c:1514
+#: top.c:1526
 #, possible-c-format
 msgid "             --with-relocated-sources=%s\n"
 msgstr ""
 
-#: top.c:1519
+#: top.c:1531
 #, possible-c-format
 msgid "             --with-separate-debug-dir=%s%s\n"
 msgstr ""
 
-#: top.c:1523
+#: top.c:1535
 #, possible-c-format
 msgid "             --with-sysroot=%s%s\n"
 msgstr ""
 
-#: top.c:1527
+#: top.c:1539
 #, possible-c-format
 msgid "             --with-system-gdbinit=%s%s\n"
 msgstr ""
 
-#: top.c:1531
+#: top.c:1543
 #, possible-c-format
 msgid "             --with-system-gdbinit-dir=%s%s\n"
 msgstr ""
 
 #. We assume "relocatable" will be printed at least once, thus we always
 #. print this text.  It's a reasonably safe assumption for now.
-#: top.c:1536
+#: top.c:1548
 msgid ""
 "\n"
 "(\"Relocatable\" means the directory can be moved with the GDB installation\n"
 "tree, and GDB will still find it.)\n"
 msgstr ""
 
-#: top.c:1615
+#: top.c:1627
 #, possible-c-format
 msgid "\tInferior %d [%s] will be detached.\n"
 msgstr ""
 
-#: top.c:1619
+#: top.c:1631
 #, possible-c-format
 msgid "\tInferior %d [%s] will be killed.\n"
 msgstr ""
 
-#: top.c:1638
+#: top.c:1650
 msgid ""
 "A debugging session is active.\n"
 "\n"
 msgstr ""
 
-#: top.c:1640
+#: top.c:1652
 msgid ""
 "\n"
 "Quit anyway? "
 msgstr ""
 
-#: top.c:1884
+#: top.c:1896
 msgid "\"set history\" must be followed by the name of a history subcommand.\n"
 msgstr ""
 
-#: top.c:1913
+#: top.c:1925
 msgid "Set verbose printing of informational messages."
 msgstr ""
 
-#: top.c:1914
+#: top.c:1926
 msgid "Show verbose printing of informational messages."
 msgstr ""
 
-#: top.c:1999
+#: top.c:2011
 #, possible-c-format
 msgid "Gdb's prompt is \"%s\".\n"
 msgstr ""
 
-#: top.c:2017
+#: top.c:2029
 #, possible-c-format
 msgid "Editing of command lines as they are typed is %s.\n"
 msgstr ""
 
-#: top.c:2019
+#: top.c:2031
 msgid "on"
 msgstr ""
 
-#: top.c:2019
+#: top.c:2031
 msgid "off"
 msgstr ""
 
-#: top.c:2026
+#: top.c:2038
 #, possible-c-format
 msgid "Annotation_level is %s.\n"
 msgstr ""
 
-#: top.c:2033
+#: top.c:2045
 #, possible-c-format
 msgid "Notification of completion for asynchronous execution commands is %s.\n"
 msgstr ""
 
-#: top.c:2056
+#: top.c:2068
 #, possible-c-format
 msgid "GDB's data directory is \"%s\".\n"
 msgstr ""
 
-#: top.c:2112
+#: top.c:2124
 msgid "Set gdb's prompt."
 msgstr ""
 
-#: top.c:2113
+#: top.c:2125
 msgid "Show gdb's prompt."
 msgstr ""
 
-#: top.c:2118
+#: top.c:2130
 msgid ""
 "Don't repeat this command.\n"
 "Primarily used inside of user-defined commands that should not be repeated "
@@ -30981,44 +31046,44 @@ msgid ""
 "hitting return."
 msgstr ""
 
-#: top.c:2124
+#: top.c:2136
 msgid "Set editing of command lines as they are typed."
 msgstr ""
 
-#: top.c:2125
+#: top.c:2137
 msgid "Show editing of command lines as they are typed."
 msgstr ""
 
-#: top.c:2126
+#: top.c:2138
 msgid ""
 "Use \"on\" to enable the editing, and \"off\" to disable it.\n"
 "Without an argument, command line editing is enabled.  To edit, use\n"
 "EMACS-like or VI-like commands like control-P or ESC."
 msgstr ""
 
-#: top.c:2134
+#: top.c:2146
 msgid "Set saving of the history record on exit."
 msgstr ""
 
-#: top.c:2135
+#: top.c:2147
 msgid "Show saving of the history record on exit."
 msgstr ""
 
-#: top.c:2136
+#: top.c:2148
 msgid ""
 "Use \"on\" to enable the saving, and \"off\" to disable it.\n"
 "Without an argument, saving is enabled."
 msgstr ""
 
-#: top.c:2144
+#: top.c:2156
 msgid "Set the size of the command history."
 msgstr ""
 
-#: top.c:2145
+#: top.c:2157
 msgid "Show the size of the command history."
 msgstr ""
 
-#: top.c:2146
+#: top.c:2158
 msgid ""
 "This is the number of previous commands to keep a record of.\n"
 "If set to \"unlimited\", the number of commands kept in the history\n"
@@ -31026,15 +31091,15 @@ msgid ""
 "variable \"GDBHISTSIZE\", or to 256 if this variable is not set."
 msgstr ""
 
-#: top.c:2156
+#: top.c:2168
 msgid "Set how far back in history to look for and remove duplicate entries."
 msgstr ""
 
-#: top.c:2157
+#: top.c:2169
 msgid "Show how far back in history to look for and remove duplicate entries."
 msgstr ""
 
-#: top.c:2158
+#: top.c:2170
 msgid ""
 "If set to a nonzero value N, GDB will look back at the last N history "
 "entries\n"
@@ -31046,73 +31111,73 @@ msgid ""
 "By default this option is set to 0."
 msgstr ""
 
-#: top.c:2170
+#: top.c:2182
 msgid "Set the filename in which to record the command history."
 msgstr ""
 
-#: top.c:2171
+#: top.c:2183
 msgid "Show the filename in which to record the command history."
 msgstr ""
 
-#: top.c:2172
+#: top.c:2184
 msgid "(the list of previous commands of which a record is kept)."
 msgstr ""
 
-#: top.c:2178
+#: top.c:2190
 msgid "Set whether to confirm potentially dangerous operations."
 msgstr ""
 
-#: top.c:2179
+#: top.c:2191
 msgid "Show whether to confirm potentially dangerous operations."
 msgstr ""
 
-#: top.c:2185
+#: top.c:2197
 msgid "Set annotation_level."
 msgstr ""
 
-#: top.c:2186
+#: top.c:2198
 msgid "Show annotation_level."
 msgstr ""
 
-#: top.c:2187
+#: top.c:2199
 msgid ""
 "0 == normal;     1 == fullname (for use when running under emacs)\n"
 "2 == output annotated suitably for use by programs that control GDB."
 msgstr ""
 
-#: top.c:2195
+#: top.c:2207
 msgid "Set notification of completion for asynchronous execution commands."
 msgstr ""
 
-#: top.c:2196
+#: top.c:2208
 msgid "Show notification of completion for asynchronous execution commands."
 msgstr ""
 
-#: top.c:2197
+#: top.c:2209
 msgid "Use \"on\" to enable the notification, and \"off\" to disable it."
 msgstr ""
 
-#: top.c:2204
+#: top.c:2216
 msgid "Set GDB's data directory."
 msgstr ""
 
-#: top.c:2205
+#: top.c:2217
 msgid "Show GDB's data directory."
 msgstr ""
 
-#: top.c:2206
+#: top.c:2218
 msgid "When set, GDB uses the specified path to search for data files."
 msgstr ""
 
-#: top.c:2213
+#: top.c:2225
 msgid "Set whether GDB's standard input is a terminal."
 msgstr ""
 
-#: top.c:2214
+#: top.c:2226
 msgid "Show whether GDB's standard input is a terminal."
 msgstr ""
 
-#: top.c:2215
+#: top.c:2227
 msgid ""
 "If on, GDB assumes that standard input is a terminal.  In practice, it\n"
 "means that GDB should wait for the user to answer queries associated to\n"
@@ -31122,7 +31187,7 @@ msgid ""
 "input settings."
 msgstr ""
 
-#: top.c:2226
+#: top.c:2238
 msgid ""
 "Create a new UI.\n"
 "Usage: new-ui INTERPRETER TTY\n"
@@ -32036,11 +32101,11 @@ msgid ""
 "Cannot enable the TUI: terminal doesn't support cursor addressing [TERM=%s]"
 msgstr ""
 
-#: tui/tui.c:681
+#: tui/tui.c:682
 msgid "Enable TUI display mode."
 msgstr ""
 
-#: tui/tui.c:684
+#: tui/tui.c:685
 msgid "Disable TUI display mode."
 msgstr ""
 
@@ -32118,148 +32183,157 @@ msgstr ""
 msgid "TUI command to control the register window."
 msgstr ""
 
-#: tui/tui-win.c:197
+#: tui/tui-win.c:198
 #, possible-c-format
 msgid "The attribute mode to use for the active TUI window border is \"%s\".\n"
 msgstr ""
 
-#: tui/tui-win.c:209
+#: tui/tui-win.c:210
 #, possible-c-format
 msgid "The attribute mode to use for the TUI window borders is \"%s\".\n"
 msgstr ""
 
-#: tui/tui-win.c:221
+#: tui/tui-win.c:222
 #, possible-c-format
 msgid "The kind of border for TUI windows is \"%s\".\n"
 msgstr ""
 
-#: tui/tui-win.c:320
+#: tui/tui-win.c:321
 msgid "\"tui\" must be followed by the name of a tui command.\n"
 msgstr ""
 
-#: tui/tui-win.c:330
+#: tui/tui-win.c:331
 msgid "Text User Interface commands."
 msgstr ""
 
-#: tui/tui-win.c:356
+#: tui/tui-win.c:358
 #, possible-c-format
 msgid "TUI resize messaging is %s.\n"
 msgstr ""
 
-#: tui/tui-win.c:832 tui/tui-win.c:974
+#: tui/tui-win.c:834 tui/tui-win.c:1005
 #, possible-c-format
 msgid "Unrecognized window name \"%s\""
 msgstr ""
 
-#: tui/tui-win.c:834 tui/tui-win.c:976
+#: tui/tui-win.c:836 tui/tui-win.c:1007
 #, possible-c-format
 msgid "Window \"%s\" is not visible"
 msgstr ""
 
-#: tui/tui-win.c:838
+#: tui/tui-win.c:840
 #, possible-c-format
 msgid "Focus set to %s window.\n"
 msgstr ""
 
-#: tui/tui-win.c:842
+#: tui/tui-win.c:844
 #, possible-c-format
 msgid ""
 "Incorrect Number of Arguments.\n"
 "%s"
 msgstr ""
 
-#: tui/tui-win.c:865
+#: tui/tui-win.c:852
+msgid "The TUI is not active.\n"
+msgstr ""
+
+#: tui/tui-win.c:873
 msgid "(has focus)"
 msgstr ""
 
-#: tui/tui-win.c:912
+#: tui/tui-win.c:920
 msgid "Tab width must not be 0"
 msgstr ""
 
-#: tui/tui-win.c:925
+#: tui/tui-win.c:933
 #, possible-c-format
 msgid "TUI tab width is %s spaces.\n"
 msgstr ""
 
-#: tui/tui-win.c:941
+#: tui/tui-win.c:957
+#, possible-c-format
+msgid "TUI source window compactness is %s.\n"
+msgstr ""
+
+#: tui/tui-win.c:972
 msgid "Tab widths greater than 0 must be specified."
 msgstr ""
 
-#: tui/tui-win.c:1008 tui/tui-win.c:1014
+#: tui/tui-win.c:1039 tui/tui-win.c:1045
 #, possible-c-format
 msgid ""
 "Invalid window height specified.\n"
 "%s"
 msgstr ""
 
-#: tui/tui-win.c:1350
+#: tui/tui-win.c:1381
 #, possible-c-format
 msgid "Unrecognized window `%s'"
 msgstr ""
 
-#: tui/tui-win.c:1352
+#: tui/tui-win.c:1383
 msgid "Window is not visible"
 msgstr ""
 
-#: tui/tui-win.c:1373 tui/tui-win.c:1377
+#: tui/tui-win.c:1404 tui/tui-win.c:1408
 msgid "TUI configuration variables."
 msgstr ""
 
-#: tui/tui-win.c:1382
+#: tui/tui-win.c:1413
 msgid "Refresh the terminal display."
 msgstr ""
 
-#: tui/tui-win.c:1384
+#: tui/tui-win.c:1415
 msgid ""
 "Set the width (in characters) of tab stops.\n"
 "Usage: tabset N"
 msgstr ""
 
-#: tui/tui-win.c:1389
+#: tui/tui-win.c:1420
 msgid "Set or modify the height of a specified window.\n"
 msgstr ""
 
-#: tui/tui-win.c:1400
+#: tui/tui-win.c:1431
 msgid "List of all displayed windows."
 msgstr ""
 
-#: tui/tui-win.c:1401
+#: tui/tui-win.c:1432
 msgid "Set focus to named window or next/prev window.\n"
 msgstr ""
 
-#: tui/tui-win.c:1411
+#: tui/tui-win.c:1442
 msgid ""
 "Scroll window forward.\n"
 "Usage: + [WIN] [N]"
 msgstr ""
 
-#: tui/tui-win.c:1414
+#: tui/tui-win.c:1445
 msgid ""
 "Scroll window backward.\n"
 "Usage: - [WIN] [N]"
 msgstr ""
 
-#: tui/tui-win.c:1417
+#: tui/tui-win.c:1448
 msgid ""
 "Scroll window text to the left.\n"
 "Usage: < [WIN] [N]"
 msgstr ""
 
-#: tui/tui-win.c:1420
+#: tui/tui-win.c:1451
 msgid ""
 "Scroll window text to the right.\n"
 "Usage: > [WIN] [N]"
 msgstr ""
 
-#: tui/tui-win.c:1426
+#: tui/tui-win.c:1457
 msgid "Set the kind of border for TUI windows."
 msgstr ""
 
-#: tui/tui-win.c:1427
+#: tui/tui-win.c:1458
 msgid "Show the kind of border for TUI windows."
 msgstr ""
 
-#: tui/tui-win.c:1428
+#: tui/tui-win.c:1459
 msgid ""
 "This variable controls the border of TUI windows:\n"
 "   space           use a white space\n"
@@ -32267,15 +32341,15 @@ msgid ""
 "   acs             use the Alternate Character Set"
 msgstr ""
 
-#: tui/tui-win.c:1438
+#: tui/tui-win.c:1469
 msgid "Set the attribute mode to use for the TUI window borders."
 msgstr ""
 
-#: tui/tui-win.c:1439
+#: tui/tui-win.c:1470
 msgid "Show the attribute mode to use for the TUI window borders."
 msgstr ""
 
-#: tui/tui-win.c:1440
+#: tui/tui-win.c:1471
 msgid ""
 "This variable controls the attributes to use for the window borders:\n"
 "   normal          normal display\n"
@@ -32287,15 +32361,15 @@ msgid ""
 "   bold-standout   use extra bright or bold with standout mode"
 msgstr ""
 
-#: tui/tui-win.c:1454
+#: tui/tui-win.c:1485
 msgid "Set the attribute mode to use for the active TUI window border."
 msgstr ""
 
-#: tui/tui-win.c:1455
+#: tui/tui-win.c:1486
 msgid "Show the attribute mode to use for the active TUI window border."
 msgstr ""
 
-#: tui/tui-win.c:1456
+#: tui/tui-win.c:1487
 msgid ""
 "This variable controls the attributes to use for the active window border:\n"
 "   normal          normal display\n"
@@ -32307,31 +32381,46 @@ msgid ""
 "   bold-standout   use extra bright or bold with standout mode"
 msgstr ""
 
-#: tui/tui-win.c:1470
+#: tui/tui-win.c:1501
 msgid "Set the tab width, in characters, for the TUI."
 msgstr ""
 
-#: tui/tui-win.c:1471
+#: tui/tui-win.c:1502
 msgid "Show the tab witdh, in characters, for the TUI."
 msgstr ""
 
-#: tui/tui-win.c:1472
+#: tui/tui-win.c:1503
 msgid ""
 "This variable controls how many spaces are used to display a tab character."
 msgstr ""
 
-#: tui/tui-win.c:1478
+#: tui/tui-win.c:1509
 msgid "Set TUI resize messaging."
 msgstr ""
 
-#: tui/tui-win.c:1479
+#: tui/tui-win.c:1510
 msgid "Show TUI resize messaging."
 msgstr ""
 
-#: tui/tui-win.c:1480
+#: tui/tui-win.c:1511
 msgid "When enabled GDB will print a message when the terminal is resized."
 msgstr ""
 
+#: tui/tui-win.c:1519
+msgid "Set whether the TUI source window is compact."
+msgstr ""
+
+#: tui/tui-win.c:1520
+msgid "Show whether the TUI source window is compact."
+msgstr ""
+
+#: tui/tui-win.c:1521
+msgid ""
+"This variable controls whether the TUI source window is shown\n"
+"in a compact form.  The compact form puts the source closer to\n"
+"the line numbers and uses less horizontal space."
+msgstr ""
+
 #: typeprint.c:377
 msgid "Language not supported."
 msgstr ""
@@ -32781,134 +32870,134 @@ msgstr ""
 msgid "not an array or string"
 msgstr ""
 
-#: valarith.c:200
+#: valarith.c:211
 msgid "no such vector element (vector not associated)"
 msgstr ""
 
-#: valarith.c:202
+#: valarith.c:213
 msgid "no such vector element (vector not allocated)"
 msgstr ""
 
-#: valarith.c:204
+#: valarith.c:215
 msgid "no such vector element"
 msgstr ""
 
-#: valarith.c:309
+#: valarith.c:320
 #, possible-c-format
 msgid "Could not find %s."
 msgstr ""
 
-#: valarith.c:357
+#: valarith.c:368
 msgid "Can't do that binary op on that type"
 msgstr ""
 
-#: valarith.c:444 valarith.c:470
+#: valarith.c:455 valarith.c:481
 msgid "Invalid binary operation specified."
 msgstr ""
 
-#: valarith.c:510 valarith.c:624
+#: valarith.c:521 valarith.c:635
 #, possible-c-format
 msgid "member function %s not found"
 msgstr ""
 
-#: valarith.c:533
+#: valarith.c:544
 msgid "Can't do that unary op on that type"
 msgstr ""
 
-#: valarith.c:584
+#: valarith.c:595
 msgid "Invalid unary operation specified."
 msgstr ""
 
-#: valarith.c:719
+#: valarith.c:730
 msgid "unimplemented support for boolean repeats"
 msgstr ""
 
-#: valarith.c:723
+#: valarith.c:734
 msgid "can't repeat values of that type"
 msgstr ""
 
-#: valarith.c:733
+#: valarith.c:744
 msgid "Strings can only be concatenated with other strings."
 msgstr ""
 
-#: valarith.c:766
+#: valarith.c:777
 msgid "Booleans can only be concatenated with other bitstrings or booleans."
 msgstr ""
 
-#: valarith.c:769
+#: valarith.c:780
 msgid "unimplemented support for boolean concatenation."
 msgstr ""
 
 #. We don't know how to concatenate these operands.
-#: valarith.c:774
+#: valarith.c:785
 msgid "illegal operands for concatenation."
 msgstr ""
 
-#: valarith.c:788 valarith.c:819
+#: valarith.c:799 valarith.c:830
 msgid "Attempt to raise 0 to negative power."
 msgstr ""
 
 #. The DFP extension to the C language does not allow mixing of
 #. * decimal float types with other float types in expressions
 #. * (see WDTR 24732, page 12).
-#: valarith.c:861
+#: valarith.c:872
 msgid "Mixing decimal floating types with other floating types is not allowed."
 msgstr ""
 
-#: valarith.c:880 valarith.c:899
+#: valarith.c:891 valarith.c:910
 #, possible-c-format
 msgid "Don't know how to convert from %s to %s."
 msgstr ""
 
-#: valarith.c:983
+#: valarith.c:994
 msgid "Invalid operation on booleans."
 msgstr ""
 
-#: valarith.c:1043 valarith.c:1054 valarith.c:1168 valarith.c:1179
+#: valarith.c:1054 valarith.c:1065 valarith.c:1179 valarith.c:1190
 msgid "Division by zero"
 msgstr ""
 
-#: valarith.c:1133 valarith.c:1262
+#: valarith.c:1144 valarith.c:1273
 msgid "Invalid binary operation on numbers."
 msgstr ""
 
-#: valarith.c:1308
+#: valarith.c:1319
 msgid "conversion of scalar to vector involves truncation"
 msgstr ""
 
-#: valarith.c:1339
+#: valarith.c:1350
 msgid "Vector operations are only supported among vectors"
 msgstr ""
 
-#: valarith.c:1532
+#: valarith.c:1543
 msgid "Invalid type combination in equality test."
 msgstr ""
 
-#: valarith.c:1605
+#: valarith.c:1616
 msgid "Invalid type combination in ordering comparison."
 msgstr ""
 
-#: valarith.c:1624
+#: valarith.c:1635
 msgid "Argument to positive operation not a number."
 msgstr ""
 
-#: valarith.c:1656
+#: valarith.c:1667
 msgid "Argument to negate operation not a number."
 msgstr ""
 
-#: valarith.c:1689
+#: valarith.c:1700
 msgid "Argument to complement operation not an integer, boolean."
 msgstr ""
 
-#: valarith.c:1730
+#: valarith.c:1741
 msgid "Second argument of 'IN' has wrong type"
 msgstr ""
 
-#: valarith.c:1735
+#: valarith.c:1746
 msgid "First argument of 'IN' has wrong type"
 msgstr ""
 
-#: valarith.c:1739
+#: valarith.c:1750
 msgid "First argument of 'IN' not in range"
 msgstr ""
 
@@ -33157,86 +33246,86 @@ msgid ""
 "Using non-standard conversion to match function %s to supplied arguments"
 msgstr ""
 
-#: valops.c:3141
+#: valops.c:3148
 msgid "name of destructor must equal name of class"
 msgstr ""
 
-#: valops.c:3180
+#: valops.c:3187
 #, possible-c-format
 msgid "no constant named \"%s\" in enum \"%s\""
 msgstr ""
 
-#: valops.c:3211
+#: valops.c:3218
 msgid "non-aggregate type in value_aggregate_elt"
 msgstr ""
 
-#: valops.c:3330
+#: valops.c:3337
 msgid "Internal error: non-aggregate type to value_struct_elt_for_reference"
 msgstr ""
 
-#: valops.c:3438
+#: valops.c:3445
 msgid "no member function matches that type instantiation"
 msgstr ""
 
-#: valops.c:3464
+#: valops.c:3471
 #, possible-c-format
 msgid "non-unique member `%s' requires type instantiation"
 msgstr ""
 
-#: valops.c:3471
+#: valops.c:3478
 msgid "no matching member function"
 msgstr ""
 
-#: valops.c:3502
+#: valops.c:3509
 #, possible-c-format
 msgid "Cannot reference virtual member function \"%s\""
 msgstr ""
 
-#: valops.c:3656
+#: valops.c:3663
 msgid "Unexpected value type."
 msgstr ""
 
-#: valops.c:3722
+#: valops.c:3729
 #, possible-c-format
 msgid ""
 "Couldn't retrieve complete object of RTTI type %s; object may be in register"
 "(s)."
 msgstr ""
 
-#: valops.c:3754
+#: valops.c:3761
 msgid "no `this' in current language"
 msgstr ""
 
-#: valops.c:3762
+#: valops.c:3769
 #, possible-c-format
 msgid "current stack frame does not contain a variable named `%s'"
 msgstr ""
 
-#: valops.c:3805
+#: valops.c:3812
 msgid "array not allocated"
 msgstr ""
 
-#: valops.c:3807
+#: valops.c:3814
 msgid "array not associated"
 msgstr ""
 
-#: valops.c:3811
+#: valops.c:3818
 msgid "slice from bad array or bitstring"
 msgstr ""
 
-#: valops.c:3815
+#: valops.c:3822
 msgid "slice out of range"
 msgstr ""
 
-#: valops.c:3902
+#: valops.c:3909
 msgid "cannot cast non-number to complex"
 msgstr ""
 
-#: valops.c:3909
+#: valops.c:3916
 msgid "Set overload resolution in evaluating C++ functions."
 msgstr ""
 
-#: valops.c:3910
+#: valops.c:3917
 msgid "Show overload resolution in evaluating C++ functions."
 msgstr ""
 
@@ -33641,67 +33730,67 @@ msgstr ""
 #. The user can't create them except via Python, and if Python support
 #. is installed this message will never be printed ($_streq will
 #. exist).
-#: value.c:2555
+#: value.c:2565
 msgid ""
 "No debugger convenience variables now defined.\n"
 "Convenience variables have names starting with \"$\";\n"
 "use \"set\" as in \"set $foo = 5\" to define them.\n"
 msgstr ""
 
-#: value.c:2779
+#: value.c:2789
 msgid "Value can't be converted to integer."
 msgstr ""
 
-#: value.c:2812
+#: value.c:2822
 msgid "Invalid floating value found in program."
 msgstr ""
 
 #. FIXME: would like to include fieldval in the message, but
 #. we don't have a sprintf_longest.
-#: value.c:3291
+#: value.c:3301
 #, possible-c-format
 msgid "Value does not fit in %s bits."
 msgstr ""
 
-#: value.c:3350
+#: value.c:3360
 #, possible-c-format
 msgid "Unexpected type (%d) encountered for integer constant."
 msgstr ""
 
-#: value.c:3392
+#: value.c:3402
 #, possible-c-format
 msgid "Unexpected type (%d) encountered for unsigned integer constant."
 msgstr ""
 
-#: value.c:3692
+#: value.c:3702
 msgid "Function return type unknown."
 msgstr ""
 
-#: value.c:3823
+#: value.c:3833
 msgid "infinite loop while fetching a register"
 msgstr ""
 
-#: value.c:3918
+#: value.c:3928
 msgid "Unexpected lazy value type."
 msgstr ""
 
-#: value.c:3933
+#: value.c:3943
 msgid "You must provide one argument for $_isvoid."
 msgstr ""
 
-#: value.c:3949
+#: value.c:3959
 msgid "You must provide one argument for $_creal."
 msgstr ""
 
-#: value.c:3954 value.c:3973
+#: value.c:3964 value.c:3983
 msgid "expected a complex number"
 msgstr ""
 
-#: value.c:3968
+#: value.c:3978
 msgid "You must provide one argument for $_cimag."
 msgstr ""
 
-#: value.c:4123
+#: value.c:4133
 msgid ""
 "Debugger convenience (\"$foo\") variables and functions.\n"
 "Convenience variables are created when you assign them values;\n"
@@ -33714,11 +33803,11 @@ msgid ""
 "Convenience functions are defined via the Python API."
 msgstr ""
 
-#: value.c:4138
+#: value.c:4148
 msgid "Elements of value history around item number IDX (or last ten)."
 msgstr ""
 
-#: value.c:4142
+#: value.c:4152
 msgid ""
 "Initialize a convenience variable if necessary.\n"
 "init-if-undefined VARIABLE = EXPRESSION\n"
@@ -33727,18 +33816,18 @@ msgid ""
 "VARIABLE is already initialized."
 msgstr ""
 
-#: value.c:4149
+#: value.c:4159
 msgid "Placeholder command for showing help on convenience functions."
 msgstr ""
 
-#: value.c:4153
+#: value.c:4163
 msgid ""
 "Check whether an expression is void.\n"
 "Usage: $_isvoid (expression)\n"
 "Return 1 if the expression is void, zero otherwise."
 msgstr ""
 
-#: value.c:4159
+#: value.c:4169
 msgid ""
 "Extract the real part of a complex number.\n"
 "Usage: $_creal (expression)\n"
@@ -33746,7 +33835,7 @@ msgid ""
 "type of a complex number."
 msgstr ""
 
-#: value.c:4166
+#: value.c:4176
 msgid ""
 "Extract the imaginary part of a complex number.\n"
 "Usage: $_cimag (expression)\n"
@@ -33754,15 +33843,15 @@ msgid ""
 "type of a complex number."
 msgstr ""
 
-#: value.c:4174
+#: value.c:4184
 msgid "Set maximum sized value gdb will load from the inferior."
 msgstr ""
 
-#: value.c:4175
+#: value.c:4185
 msgid "Show maximum sized value gdb will load from the inferior."
 msgstr ""
 
-#: value.c:4176
+#: value.c:4186
 msgid ""
 "Use this to control the maximum size, in bytes, of a value that gdb\n"
 "will load from the inferior.  Setting this value to 'unlimited'\n"
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.20191126/gdb/ppc-linux-tdep.c ./gdb/ppc-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/ppc-linux-tdep.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/ppc-linux-tdep.c	2019-12-03 01:49:15.000000000 +0000
@@ -1961,7 +1961,7 @@ ppc_init_linux_record_tdep (struct linux
    length LEN in bits.  If non-NULL, NAME is the name of its type.
    If no suitable type is found, return NULL.  */
 
-const struct floatformat **
+static const struct floatformat **
 ppc_floatformat_for_type (struct gdbarch *gdbarch,
                           const char *name, int len)
 {
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.20191126/gdb/python/py-cmd.c ./gdb/python/py-cmd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/python/py-cmd.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/python/py-cmd.c	2019-12-03 01:49:15.000000000 +0000
@@ -98,10 +98,7 @@ cmdpy_destroyer (struct cmd_list_element
   gdbpy_ref<cmdpy_object> cmd ((cmdpy_object *) context);
   cmd->command = NULL;
 
-  /* We allocated the name, doc string, and perhaps the prefix
-     name.  */
-  xfree ((char *) self->name);
-  xfree ((char *) self->doc);
+  /* We may have allocated the prefix name.  */
   xfree ((char *) self->prefixname);
 }
 
@@ -375,10 +372,7 @@ gdbpy_parse_command_name (const char *na
   lastchar = i;
 
   /* Find first character of the final word.  */
-  for (; i > 0 && (isalnum (name[i - 1])
-		   || name[i - 1] == '-'
-		   || name[i - 1] == '_');
-       --i)
+  for (; i > 0 && valid_cmd_char_p (name[i - 1]); --i)
     ;
   result = (char *) xmalloc (lastchar - i + 2);
   memcpy (result, &name[i], lastchar - i + 1);
@@ -563,6 +557,8 @@ cmdpy_init (PyObject *self, PyObject *ar
       /* There appears to be no API to set this.  */
       cmd->func = cmdpy_function;
       cmd->destroyer = cmdpy_destroyer;
+      cmd->doc_allocated = 1;
+      cmd->name_allocated = 1;
 
       obj->command = cmd;
       set_cmd_context (cmd, self_ref.release ());
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.20191126/gdb/python/py-function.c ./gdb/python/py-function.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/python/py-function.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/python/py-function.c	2019-12-03 01:49:15.000000000 +0000
@@ -127,8 +127,8 @@ fnpy_init (PyObject *self, PyObject *arg
   if (! docstring)
     docstring.reset (xstrdup (_("This function is not documented.")));
 
-  add_internal_function (name, docstring.release (), fnpy_call,
-			 self_ref.release ());
+  add_internal_function (make_unique_xstrdup (name), std::move (docstring),
+			 fnpy_call, self_ref.release ());
   return 0;
 }
 
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.20191126/gdb/python/python.c ./gdb/python/python.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/python/python.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/python/python.c	2019-12-03 01:49:15.000000000 +0000
@@ -28,14 +28,13 @@
 #include "value.h"
 #include "language.h"
 #include "event-loop.h"
-#include "serial.h"
 #include "readline/tilde.h"
 #include "python.h"
 #include "extension-priv.h"
 #include "cli/cli-utils.h"
 #include <ctype.h>
 #include "location.h"
-#include "ser-event.h"
+#include "run-on-main-thread.h"
 
 /* Declared constants and enum for python stack printing.  */
 static const char python_excp_none[] = "none";
@@ -228,11 +227,11 @@ gdbpy_enter::~gdbpy_enter ()
 
   m_error->restore ();
 
-  PyGILState_Release (m_state);
   python_gdbarch = m_gdbarch;
   python_language = m_language;
 
   restore_active_ext_lang (m_previous_active);
+  PyGILState_Release (m_state);
 }
 
 /* Set the quit flag.  */
@@ -645,19 +644,6 @@ execute_gdb_command (PyObject *self, PyO
 static PyObject *
 gdbpy_rbreak (PyObject *self, PyObject *args, PyObject *kw)
 {
-  /* A simple type to ensure clean up of a vector of allocated strings
-     when a C interface demands a const char *array[] type
-     interface.  */
-  struct symtab_list_type
-  {
-    ~symtab_list_type ()
-    {
-      for (const char *elem: vec)
-	xfree ((void *) elem);
-    }
-    std::vector<const char *> vec;
-  };
-
   char *regex = NULL;
   std::vector<symbol_search> symbols;
   unsigned long count = 0;
@@ -667,7 +653,6 @@ gdbpy_rbreak (PyObject *self, PyObject *
   unsigned int throttle = 0;
   static const char *keywords[] = {"regex","minsyms", "throttle",
 				   "symtabs", NULL};
-  symtab_list_type symtab_paths;
 
   if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "s|O!IO", keywords,
 					&regex, &PyBool_Type,
@@ -684,6 +669,12 @@ gdbpy_rbreak (PyObject *self, PyObject *
       minsyms_p = cmp;
     }
 
+  global_symbol_searcher spec (FUNCTIONS_DOMAIN, regex);
+  SCOPE_EXIT {
+    for (const char *elem : spec.filenames)
+      xfree ((void *) elem);
+  };
+
   /* The "symtabs" keyword is any Python iterable object that returns
      a gdb.Symtab on each iteration.  If specified, iterate through
      the provided gdb.Symtabs and extract their full path.  As
@@ -729,20 +720,13 @@ gdbpy_rbreak (PyObject *self, PyObject *
 
 	  /* Make sure there is a definite place to store the value of
 	     filename before it is released.  */
-	  symtab_paths.vec.push_back (nullptr);
-	  symtab_paths.vec.back () = filename.release ();
+	  spec.filenames.push_back (nullptr);
+	  spec.filenames.back () = filename.release ();
 	}
     }
 
-  if (symtab_list)
-    {
-      const char **files = symtab_paths.vec.data ();
-
-      symbols = search_symbols (regex, FUNCTIONS_DOMAIN, NULL,
-				symtab_paths.vec.size (), files, false);
-    }
-  else
-    symbols = search_symbols (regex, FUNCTIONS_DOMAIN, NULL, 0, NULL, false);
+  /* The search spec.  */
+  symbols = spec.search ();
 
   /* Count the number of symbols (both symbols and optionally minimal
      symbols) so we can correctly check the throttle limit.  */
@@ -940,63 +924,81 @@ gdbpy_source_script (const struct extens
 
 /* Posting and handling events.  */
 
+/* A helper class to save and restore the GIL, but without touching
+   the other globals that are handled by gdbpy_enter.  */
+
+class gdbpy_gil
+{
+public:
+
+  gdbpy_gil ()
+    : m_state (PyGILState_Ensure ())
+  {
+  }
+
+  ~gdbpy_gil ()
+  {
+    PyGILState_Release (m_state);
+  }
+
+  DISABLE_COPY_AND_ASSIGN (gdbpy_gil);
+
+private:
+
+  PyGILState_STATE m_state;
+};
+
 /* A single event.  */
 struct gdbpy_event
 {
-  /* The Python event.  This is just a callable object.  */
-  PyObject *event;
-  /* The next event.  */
-  struct gdbpy_event *next;
-};
+  gdbpy_event (gdbpy_ref<> &&func)
+    : m_func (func.release ())
+  {
+  }
 
-/* All pending events.  */
-static struct gdbpy_event *gdbpy_event_list;
-/* The final link of the event list.  */
-static struct gdbpy_event **gdbpy_event_list_end;
-
-/* So that we can wake up the main thread even when it is blocked in
-   poll().  */
-static struct serial_event *gdbpy_serial_event;
-
-/* The file handler callback.  This reads from the internal pipe, and
-   then processes the Python event queue.  This will always be run in
-   the main gdb thread.  */
+  gdbpy_event (gdbpy_event &&other)
+    : m_func (other.m_func)
+  {
+    other.m_func = nullptr;
+  }
 
-static void
-gdbpy_run_events (int error, gdb_client_data client_data)
-{
-  gdbpy_enter enter_py (get_current_arch (), current_language);
+  gdbpy_event (const gdbpy_event &other)
+    : m_func (other.m_func)
+  {
+    gdbpy_gil gil;
+    Py_XINCREF (m_func);
+  }
 
-  /* Clear the event fd.  Do this before flushing the events list, so
-     that any new event post afterwards is sure to re-awake the event
-     loop.  */
-  serial_event_clear (gdbpy_serial_event);
-
-  while (gdbpy_event_list)
-    {
-      /* Dispatching the event might push a new element onto the event
-	 loop, so we update here "atomically enough".  */
-      struct gdbpy_event *item = gdbpy_event_list;
-      gdbpy_event_list = gdbpy_event_list->next;
-      if (gdbpy_event_list == NULL)
-	gdbpy_event_list_end = &gdbpy_event_list;
+  ~gdbpy_event ()
+  {
+    gdbpy_gil gil;
+    Py_XDECREF (m_func);
+  }
 
-      gdbpy_ref<> call_result (PyObject_CallObject (item->event, NULL));
-      if (call_result == NULL)
-	gdbpy_print_stack ();
+  gdbpy_event &operator= (const gdbpy_event &other) = delete;
 
-      Py_DECREF (item->event);
-      xfree (item);
-    }
-}
+  void operator() ()
+  {
+    gdbpy_enter enter_py (get_current_arch (), current_language);
+
+    gdbpy_ref<> call_result (PyObject_CallObject (m_func, NULL));
+    if (call_result == NULL)
+      gdbpy_print_stack ();
+  }
+
+private:
+
+  /* The Python event.  This is just a callable object.  Note that
+     this is not a gdbpy_ref<>, because we have to take particular
+     care to only destroy the reference when holding the GIL. */
+  PyObject *m_func;
+};
 
 /* Submit an event to the gdb thread.  */
 static PyObject *
 gdbpy_post_event (PyObject *self, PyObject *args)
 {
-  struct gdbpy_event *event;
   PyObject *func;
-  int wakeup;
 
   if (!PyArg_ParseTuple (args, "O", &func))
     return NULL;
@@ -1008,38 +1010,13 @@ gdbpy_post_event (PyObject *self, PyObje
       return NULL;
     }
 
-  Py_INCREF (func);
-
-  /* From here until the end of the function, we have the GIL, so we
-     can operate on our global data structures without worrying.  */
-  wakeup = gdbpy_event_list == NULL;
-
-  event = XNEW (struct gdbpy_event);
-  event->event = func;
-  event->next = NULL;
-  *gdbpy_event_list_end = event;
-  gdbpy_event_list_end = &event->next;
-
-  /* Wake up gdb when needed.  */
-  if (wakeup)
-    serial_event_set (gdbpy_serial_event);
+  gdbpy_ref<> func_ref = gdbpy_ref<>::new_reference (func);
+  gdbpy_event event (std::move (func_ref));
+  run_on_main_thread (event);
 
   Py_RETURN_NONE;
 }
 
-/* Initialize the Python event handler.  */
-static int
-gdbpy_initialize_events (void)
-{
-  gdbpy_event_list_end = &gdbpy_event_list;
-
-  gdbpy_serial_event = make_serial_event ();
-  add_file_handler (serial_event_fd (gdbpy_serial_event),
-		    gdbpy_run_events, NULL);
-
-  return 0;
-}
-
 
 
 /* This is the extension_language_ops.before_prompt "method".  */
@@ -1704,7 +1681,6 @@ do_start_initialization ()
       || gdbpy_initialize_linetable () < 0
       || gdbpy_initialize_thread () < 0
       || gdbpy_initialize_inferior () < 0
-      || gdbpy_initialize_events () < 0
       || gdbpy_initialize_eventregistry () < 0
       || gdbpy_initialize_py_events () < 0
       || gdbpy_initialize_event () < 0
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.20191126/gdb/remote.c ./gdb/remote.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/remote.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/remote.c	2019-12-03 01:49:15.000000000 +0000
@@ -5056,7 +5056,7 @@ remote_target::remote_packet_size (const
   rs->explicit_packet_size = packet_size;
 }
 
-void
+static void
 remote_packet_size (remote_target *remote, const protocol_feature *feature,
 		    enum packet_support support, const char *value)
 {
@@ -6826,7 +6826,7 @@ remote_target::stop_reply_queue_length (
   return rs->stop_reply_queue.size ();
 }
 
-void
+static void
 remote_notif_stop_parse (remote_target *remote,
 			 struct notif_client *self, const char *buf,
 			 struct notif_event *event)
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.20191126/gdb/remote-sim.c ./gdb/remote-sim.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/remote-sim.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/remote-sim.c	2019-12-03 01:49:15.000000000 +0000
@@ -69,8 +69,6 @@ static void gdb_os_evprintf_filtered (ho
 static void gdb_os_error (host_callback *, const char *, ...)
      ATTRIBUTE_NORETURN;
 
-void simulator_command (char *args, int from_tty);
-
 /* Naming convention:
 
    sim_* are the interface to the simulator (see remote-sim.h).
@@ -1162,7 +1160,7 @@ gdbsim_target::mourn_inferior ()
 /* Pass the command argument through to the simulator verbatim.  The
    simulator must do any command interpretation work.  */
 
-void
+static void
 simulator_command (const char *args, int from_tty)
 {
   struct sim_inferior_data *sim_data;
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.20191126/gdb/rs6000-aix-tdep.c ./gdb/rs6000-aix-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/rs6000-aix-tdep.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/rs6000-aix-tdep.c	2019-12-03 01:49:15.000000000 +0000
@@ -141,7 +141,7 @@ aix_sighandle_frame_prev_register (struc
   return trad_frame_get_register (this_trad_cache, this_frame, regnum);
 }
 
-int
+static int
 aix_sighandle_frame_sniffer (const struct frame_unwind *self,
 			     struct frame_info *this_frame,
 			     void **this_prologue_cache)
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.20191126/gdb/run-on-main-thread.c ./gdb/run-on-main-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/run-on-main-thread.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/run-on-main-thread.c	2019-12-03 01:49:15.000000000 +0000
@@ -0,0 +1,97 @@
+/* Run a function on the main thread
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include "defs.h"
+#include "run-on-main-thread.h"
+#include "ser-event.h"
+#if CXX_STD_THREAD
+#include <mutex>
+#endif
+#include "event-loop.h"
+
+/* The serial event used when posting runnables.  */
+
+static struct serial_event *runnable_event;
+
+/* Runnables that have been posted.  */
+
+static std::vector<std::function<void ()>> runnables;
+
+#if CXX_STD_THREAD
+
+/* Mutex to hold when handling RUNNABLE_EVENT or RUNNABLES.  */
+
+static std::mutex runnable_mutex;
+
+#endif
+
+/* Run all the queued runnables.  */
+
+static void
+run_events (int error, gdb_client_data client_data)
+{
+  std::vector<std::function<void ()>> local;
+
+  /* Hold the lock while changing the globals, but not while running
+     the runnables.  */
+  {
+#if CXX_STD_THREAD
+    std::lock_guard<std::mutex> lock (runnable_mutex);
+#endif
+
+    /* Clear the event fd.  Do this before flushing the events list,
+       so that any new event post afterwards is sure to re-awaken the
+       event loop.  */
+    serial_event_clear (runnable_event);
+
+    /* Move the vector in case running a runnable pushes a new
+       runnable.  */
+    local = std::move (runnables);
+  }
+
+  for (auto &item : local)
+    {
+      try
+	{
+	  item ();
+	}
+      catch (...)
+	{
+	  /* Ignore exceptions in the callback.  */
+	}
+    }
+}
+
+/* See run-on-main-thread.h.  */
+
+void
+run_on_main_thread (std::function<void ()> &&func)
+{
+#if CXX_STD_THREAD
+  std::lock_guard<std::mutex> lock (runnable_mutex);
+#endif
+  runnables.emplace_back (std::move (func));
+  serial_event_set (runnable_event);
+}
+
+void
+_initialize_run_on_main_thread ()
+{
+  runnable_event = make_serial_event ();
+  add_file_handler (serial_event_fd (runnable_event), run_events, nullptr);
+}
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.20191126/gdb/run-on-main-thread.h ./gdb/run-on-main-thread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/run-on-main-thread.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/run-on-main-thread.h	2019-12-03 01:49:15.000000000 +0000
@@ -0,0 +1,28 @@
+/* Run a function on the main thread
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef GDB_RUN_ON_MAIN_THREAD_H
+#define GDB_RUN_ON_MAIN_THREAD_H
+
+#include <functional>
+
+/* Send a runnable to the main thread.  */
+
+extern void run_on_main_thread (std::function<void ()> &&);
+
+#endif /* GDB_RUN_ON_MAIN_THREAD_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.20191126/gdb/s12z-tdep.c ./gdb/s12z-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/s12z-tdep.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/s12z-tdep.c	2019-12-03 01:49:15.000000000 +0000
@@ -147,7 +147,7 @@ s12z_fprintf_disasm (void *stream, const
   return 0;
 }
 
-struct disassemble_info
+static struct disassemble_info
 s12z_disassemble_info (struct gdbarch *gdbarch)
 {
   struct disassemble_info di;
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.20191126/gdb/source.c ./gdb/source.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/source.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/source.c	2019-12-03 01:49:15.000000000 +0000
@@ -679,7 +679,7 @@ info_source_command (const char *ignore,
    letters (for dos) as well as leading '/' characters and './'
    sequences.  */
 
-const char *
+static const char *
 prepare_path_for_appending (const char *path)
 {
   /* For dos paths, d:/foo -> /foo, and d:foo -> foo.  */
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.20191126/gdb/sparc64-linux-tdep.c ./gdb/sparc64-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/sparc64-linux-tdep.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/sparc64-linux-tdep.c	2019-12-03 01:49:15.000000000 +0000
@@ -120,7 +120,7 @@ sparc64_linux_sigframe_init (const struc
    gdbarch hook.
    Displays information related to ADI memory corruptions.  */
 
-void
+static void
 sparc64_linux_handle_segmentation_fault (struct gdbarch *gdbarch,
 				      struct ui_out *uiout)
 {
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.20191126/gdb/sparc-nat.c ./gdb/sparc-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/sparc-nat.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/sparc-nat.c	2019-12-03 01:49:15.000000000 +0000
@@ -252,7 +252,7 @@ sparc_store_inferior_registers (struct r
    TARGET_OBJECT_WCOOKIE.  Fetch StackGhost Per-Process XOR cookie.  */
 
 enum target_xfer_status
-sparc_xfer_wcookie (struct target_ops *ops, enum target_object object,
+sparc_xfer_wcookie (enum target_object object,
 		    const char *annex, gdb_byte *readbuf,
 		    const gdb_byte *writebuf, ULONGEST offset, ULONGEST len,
 		    ULONGEST *xfered_len)
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.20191126/gdb/stabsread.c ./gdb/stabsread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/stabsread.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/stabsread.c	2019-12-03 01:49:15.000000000 +0000
@@ -426,9 +426,8 @@ patch_block_stabs (struct pending *symbo
 	      sym = allocate_symbol (objfile);
 	      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
 	      SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
-	      SYMBOL_SET_LINKAGE_NAME
-		(sym, obstack_strndup (&objfile->objfile_obstack,
-				       name, pp - name));
+	      sym->set_linkage_name
+		(obstack_strndup (&objfile->objfile_obstack, name, pp - name));
 	      pp += 2;
 	      if (*(pp - 1) == 'F' || *(pp - 1) == 'f')
 		{
@@ -710,14 +709,14 @@ define_symbol (CORE_ADDR valu, const cha
       switch (string[1])
 	{
 	case 't':
-	  SYMBOL_SET_LINKAGE_NAME (sym, "this");
+	  sym->set_linkage_name ("this");
 	  break;
 
 	case 'v':		/* $vtbl_ptr_type */
 	  goto normal;
 
 	case 'e':
-	  SYMBOL_SET_LINKAGE_NAME (sym, "eh_throw");
+	  sym->set_linkage_name ("eh_throw");
 	  break;
 
 	case '_':
@@ -1202,7 +1201,7 @@ define_symbol (CORE_ADDR valu, const cha
 	      const char *new_name = gdbarch_static_transform_name
 		(gdbarch, sym->linkage_name ());
 
-	      SYMBOL_SET_LINKAGE_NAME (sym, new_name);
+	      sym->set_linkage_name (new_name);
 	      SET_SYMBOL_VALUE_ADDRESS (sym,
 					BMSYMBOL_VALUE_ADDRESS (msym));
 	    }
@@ -1385,7 +1384,7 @@ define_symbol (CORE_ADDR valu, const cha
 	      const char *new_name = gdbarch_static_transform_name
 		(gdbarch, sym->linkage_name ());
 
-	      SYMBOL_SET_LINKAGE_NAME (sym, new_name);
+	      sym->set_linkage_name (new_name);
 	      SET_SYMBOL_VALUE_ADDRESS (sym, BMSYMBOL_VALUE_ADDRESS (msym));
 	    }
 	}
@@ -3638,7 +3637,7 @@ read_enum_type (const char **pp, struct 
 	return error_type (pp, objfile);
 
       sym = allocate_symbol (objfile);
-      SYMBOL_SET_LINKAGE_NAME (sym, name);
+      sym->set_linkage_name (name);
       SYMBOL_SET_LANGUAGE (sym, get_current_subfile ()->language,
 			   &objfile->objfile_obstack);
       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
@@ -4306,7 +4305,7 @@ common_block_end (struct objfile *objfil
 
   sym = allocate_symbol (objfile);
   /* Note: common_block_name already saved on objfile_obstack.  */
-  SYMBOL_SET_LINKAGE_NAME (sym, common_block_name);
+  sym->set_linkage_name (common_block_name);
   SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
 
   /* Now we copy all the symbols which have been defined since the BCOMM.  */
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.20191126/gdb/stack.c ./gdb/stack.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/stack.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/stack.c	2019-12-03 01:49:15.000000000 +0000
@@ -1432,7 +1432,7 @@ print_frame (const frame_print_options &
 /* Completion function for "frame function", "info frame function", and
    "select-frame function" commands.  */
 
-void
+static void
 frame_selection_by_function_completer (struct cmd_list_element *ignore,
 				       completion_tracker &tracker,
 				       const char *text, const char *word)
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.20191126/gdb/symtab.c ./gdb/symtab.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/symtab.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/symtab.c	2019-12-03 01:49:15.000000000 +0000
@@ -787,13 +787,9 @@ create_demangled_names_hash (struct objf
      free_demangled_name_entry, xcalloc, xfree));
 }
 
-/* Try to determine the demangled name for a symbol, based on the
-   language of that symbol.  If the language is set to language_auto,
-   it will attempt to find any demangling algorithm that works and
-   then set the language appropriately.  The returned name is allocated
-   by the demangler and should be xfree'd.  */
+/* See symtab.h  */
 
-static char *
+char *
 symbol_find_demangled_name (struct general_symbol_info *gsymbol,
 			    const char *mangled)
 {
@@ -840,7 +836,8 @@ symbol_find_demangled_name (struct gener
 void
 symbol_set_names (struct general_symbol_info *gsymbol,
 		  gdb::string_view linkage_name, bool copy_name,
-		  struct objfile_per_bfd_storage *per_bfd)
+		  struct objfile_per_bfd_storage *per_bfd,
+		  gdb::optional<hashval_t> hash)
 {
   struct demangled_name_entry **slot;
 
@@ -868,9 +865,11 @@ symbol_set_names (struct general_symbol_
     create_demangled_names_hash (per_bfd);
 
   struct demangled_name_entry entry (linkage_name);
+  if (!hash.has_value ())
+    hash = hash_demangled_name_entry (&entry);
   slot = ((struct demangled_name_entry **)
-	  htab_find_slot (per_bfd->demangled_names_hash.get (),
-			  &entry, INSERT));
+          htab_find_slot_with_hash (per_bfd->demangled_names_hash.get (),
+				    &entry, *hash, INSERT));
 
   /* If this name is not in the hash table, add it.  */
   if (*slot == NULL
@@ -894,8 +893,15 @@ symbol_set_names (struct general_symbol_
       else
 	linkage_name_copy = linkage_name;
 
-      gdb::unique_xmalloc_ptr<char> demangled_name_ptr
-	(symbol_find_demangled_name (gsymbol, linkage_name_copy.data ()));
+      /* The const_cast is safe because the only reason it is already
+         initialized is if we purposefully set it from a background
+         thread to avoid doing the work here.  However, it is still
+         allocated from the heap and needs to be freed by us, just
+         like if we called symbol_find_demangled_name here.  */
+      gdb::unique_xmalloc_ptr<char> demangled_name
+	(gsymbol->language_specific.demangled_name
+	 ? const_cast<char *> (gsymbol->language_specific.demangled_name)
+	 : symbol_find_demangled_name (gsymbol, linkage_name_copy.data ()));
 
       /* Suppose we have demangled_name==NULL, copy_name==0, and
 	 linkage_name_copy==linkage_name.  In this case, we already have the
@@ -929,7 +935,7 @@ symbol_set_names (struct general_symbol_
 	  new (*slot) demangled_name_entry
 	    (gdb::string_view (mangled_ptr, linkage_name.length ()));
 	}
-      (*slot)->demangled = std::move (demangled_name_ptr);
+      (*slot)->demangled = std::move (demangled_name);
       (*slot)->language = gsymbol->language;
     }
   else if (gsymbol->language == language_unknown
@@ -4344,27 +4350,24 @@ info_sources_command (const char *args, 
   printf_filtered ("\n");
 }
 
-/* Compare FILE against all the NFILES entries of FILES.  If BASENAMES is
-   non-zero compare only lbasename of FILES.  */
+/* Compare FILE against all the entries of FILENAMES.  If BASENAMES is
+   true compare only lbasename of FILENAMES.  */
 
-static int
-file_matches (const char *file, const char *files[], int nfiles, int basenames)
+static bool
+file_matches (const char *file, const std::vector<const char *> &filenames,
+	      bool basenames)
 {
-  int i;
+  if (filenames.empty ())
+    return true;
 
-  if (file != NULL && nfiles != 0)
+  for (const char *name : filenames)
     {
-      for (i = 0; i < nfiles; i++)
-	{
-	  if (compare_filenames_for_search (file, (basenames
-						   ? lbasename (files[i])
-						   : files[i])))
-	    return 1;
-	}
+      name = (basenames ? lbasename (name) : name);
+      if (compare_filenames_for_search (file, name))
+	return true;
     }
-  else if (nfiles == 0)
-    return 1;
-  return 0;
+
+  return false;
 }
 
 /* Helper function for sort_search_symbols_remove_dups and qsort.  Can only
@@ -4440,30 +4443,10 @@ sort_search_symbols_remove_dups (std::ve
 		 result->end ());
 }
 
-/* Search the symbol table for matches to the regular expression REGEXP,
-   returning the results.
-
-   Only symbols of KIND are searched:
-   VARIABLES_DOMAIN - search all symbols, excluding functions, type names,
-                      and constants (enums).
-		      if T_REGEXP is not NULL, only returns var that have
-		      a type matching regular expression T_REGEXP.
-   FUNCTIONS_DOMAIN - search all functions
-   TYPES_DOMAIN     - search all type names
-   ALL_DOMAIN       - an internal error for this function
-
-   Within each file the results are sorted locally; each symtab's global and
-   static blocks are separately alphabetized.
-   Duplicate entries are removed.
-
-   When EXCLUDE_MINSYMS is false then matching minsyms are also returned,
-   otherwise they are excluded.  */
+/* See symtab.h.  */
 
 std::vector<symbol_search>
-search_symbols (const char *regexp, enum search_domain kind,
-		const char *t_regexp,
-		int nfiles, const char *files[],
-		bool exclude_minsyms)
+global_symbol_searcher::search () const
 {
   const struct blockvector *bv;
   const struct block *b;
@@ -4487,21 +4470,23 @@ search_symbols (const char *regexp, enum
   gdb::optional<compiled_regex> preg;
   gdb::optional<compiled_regex> treg;
 
-  gdb_assert (kind != ALL_DOMAIN);
+  gdb_assert (m_kind != ALL_DOMAIN);
 
-  ourtype = types[kind];
-  ourtype2 = types2[kind];
-  ourtype3 = types3[kind];
-  ourtype4 = types4[kind];
+  ourtype = types[m_kind];
+  ourtype2 = types2[m_kind];
+  ourtype3 = types3[m_kind];
+  ourtype4 = types4[m_kind];
 
-  if (regexp != NULL)
+  if (m_symbol_name_regexp != NULL)
     {
+      const char *symbol_name_regexp = m_symbol_name_regexp;
+
       /* Make sure spacing is right for C++ operators.
          This is just a courtesy to make the matching less sensitive
          to how many spaces the user leaves between 'operator'
          and <TYPENAME> or <OPERATOR>.  */
       const char *opend;
-      const char *opname = operator_chars (regexp, &opend);
+      const char *opname = operator_chars (symbol_name_regexp, &opend);
 
       if (*opname)
 	{
@@ -4526,28 +4511,30 @@ search_symbols (const char *regexp, enum
 	      char *tmp = (char *) alloca (8 + fix + strlen (opname) + 1);
 
 	      sprintf (tmp, "operator%.*s%s", fix, " ", opname);
-	      regexp = tmp;
+	      symbol_name_regexp = tmp;
 	    }
 	}
 
       int cflags = REG_NOSUB | (case_sensitivity == case_sensitive_off
 				? REG_ICASE : 0);
-      preg.emplace (regexp, cflags, _("Invalid regexp"));
+      preg.emplace (symbol_name_regexp, cflags,
+		    _("Invalid regexp"));
     }
 
-  if (t_regexp != NULL)
+  if (m_symbol_type_regexp != NULL)
     {
       int cflags = REG_NOSUB | (case_sensitivity == case_sensitive_off
 				? REG_ICASE : 0);
-      treg.emplace (t_regexp, cflags, _("Invalid regexp"));
+      treg.emplace (m_symbol_type_regexp, cflags,
+		    _("Invalid regexp"));
     }
 
-  /* Search through the partial symtabs *first* for all symbols
-     matching the regexp.  That way we don't have to reproduce all of
-     the machinery below.  */
+  /* Search through the partial symtabs *first* for all symbols matching
+     the m_symbol_name_regexp (in preg).  That way we don't have to
+     reproduce all of the machinery below.  */
   expand_symtabs_matching ([&] (const char *filename, bool basenames)
 			   {
-			     return file_matches (filename, files, nfiles,
+			     return file_matches (filename, filenames,
 						  basenames);
 			   },
 			   lookup_name_info::match_any (),
@@ -4558,7 +4545,7 @@ search_symbols (const char *regexp, enum
 						    0, NULL, 0) == 0);
 			   },
 			   NULL,
-			   kind);
+			   m_kind);
 
   /* Here, we search through the minimal symbol tables for functions
      and variables that match, and force their symbols to be read.
@@ -4576,7 +4563,8 @@ search_symbols (const char *regexp, enum
      all objfiles.  In large programs (1000s of shared libs) searching all
      objfiles is not worth the pain.  */
 
-  if (nfiles == 0 && (kind == VARIABLES_DOMAIN || kind == FUNCTIONS_DOMAIN))
+  if (filenames.empty () && (m_kind == VARIABLES_DOMAIN
+			     || m_kind == FUNCTIONS_DOMAIN))
     {
       for (objfile *objfile : current_program_space->objfiles ())
 	{
@@ -4600,7 +4588,7 @@ search_symbols (const char *regexp, enum
 			 lookup functions is to expand the symbol
 			 table if msymbol is found, for the benefit of
 			 the next loop on compunits.  */
-		      if (kind == FUNCTIONS_DOMAIN
+		      if (m_kind == FUNCTIONS_DOMAIN
 			  ? (find_pc_compunit_symtab
 			     (MSYMBOL_VALUE_ADDRESS (objfile, msymbol))
 			     == NULL)
@@ -4631,16 +4619,16 @@ search_symbols (const char *regexp, enum
 		  /* Check first sole REAL_SYMTAB->FILENAME.  It does
 		     not need to be a substring of symtab_to_fullname as
 		     it may contain "./" etc.  */
-		  if ((file_matches (real_symtab->filename, files, nfiles, 0)
+		  if ((file_matches (real_symtab->filename, filenames, false)
 		       || ((basenames_may_differ
 			    || file_matches (lbasename (real_symtab->filename),
-					     files, nfiles, 1))
+					     filenames, true))
 			   && file_matches (symtab_to_fullname (real_symtab),
-					    files, nfiles, 0)))
+					    filenames, false)))
 		      && ((!preg.has_value ()
 			   || preg->exec (sym->natural_name (), 0,
 					  NULL, 0) == 0)
-			  && ((kind == VARIABLES_DOMAIN
+			  && ((m_kind == VARIABLES_DOMAIN
 			       && SYMBOL_CLASS (sym) != LOC_TYPEDEF
 			       && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
 			       && SYMBOL_CLASS (sym) != LOC_BLOCK
@@ -4653,15 +4641,15 @@ search_symbols (const char *regexp, enum
 					== TYPE_CODE_ENUM))
 			       && (!treg.has_value ()
 				   || treg_matches_sym_type_name (*treg, sym)))
-			      || (kind == FUNCTIONS_DOMAIN
+			      || (m_kind == FUNCTIONS_DOMAIN
 				  && SYMBOL_CLASS (sym) == LOC_BLOCK
 				  && (!treg.has_value ()
 				      || treg_matches_sym_type_name (*treg,
 								     sym)))
-			      || (kind == TYPES_DOMAIN
+			      || (m_kind == TYPES_DOMAIN
 				  && SYMBOL_CLASS (sym) == LOC_TYPEDEF
 				  && SYMBOL_DOMAIN (sym) != MODULE_DOMAIN)
-			      || (kind == MODULES_DOMAIN
+			      || (m_kind == MODULES_DOMAIN
 				  && SYMBOL_DOMAIN (sym) == MODULE_DOMAIN
 				  && SYMBOL_LINE (sym) != 0))))
 		    {
@@ -4676,13 +4664,13 @@ search_symbols (const char *regexp, enum
   if (!result.empty ())
     sort_search_symbols_remove_dups (&result);
 
-  /* If there are no eyes, avoid all contact.  I mean, if there are
-     no debug symbols, then add matching minsyms.  But if the user wants
-     to see symbols matching a type regexp, then never give a minimal symbol,
-     as we assume that a minimal symbol does not have a type.  */
+  /* If there are no debug symbols, then add matching minsyms.  But if the
+     user wants to see symbols matching a type m_symbol_type_regexp, then
+     never give a minimal symbol, as we assume that a minimal symbol does
+     not have a type.  */
 
-  if ((found_misc || (nfiles == 0 && kind != FUNCTIONS_DOMAIN))
-      && !exclude_minsyms
+  if ((found_misc || (filenames.empty () && m_kind != FUNCTIONS_DOMAIN))
+      && !m_exclude_minsyms
       && !treg.has_value ())
     {
       for (objfile *objfile : current_program_space->objfiles ())
@@ -4705,7 +4693,7 @@ search_symbols (const char *regexp, enum
 		    {
 		      /* For functions we can do a quick check of whether the
 			 symbol might be found via find_pc_symtab.  */
-		      if (kind != FUNCTIONS_DOMAIN
+		      if (m_kind != FUNCTIONS_DOMAIN
 			  || (find_pc_compunit_symtab
 			      (MSYMBOL_VALUE_ADDRESS (objfile, msymbol))
 			      == NULL))
@@ -4727,44 +4715,25 @@ search_symbols (const char *regexp, enum
   return result;
 }
 
-/* Helper function for symtab_symbol_info, this function uses
-   the data returned from search_symbols() to print information
-   regarding the match to gdb_stdout.  If LAST is not NULL,
-   print file and line number information for the symbol as
-   well.  Skip printing the filename if it matches LAST.  */
+/* See symtab.h.  */
 
-static void
-print_symbol_info (enum search_domain kind,
-		   struct symbol *sym,
-		   int block, const char *last)
+std::string
+symbol_to_info_string (struct symbol *sym, int block,
+		       enum search_domain kind)
 {
-  scoped_switch_to_sym_language_if_auto l (sym);
-  struct symtab *s = symbol_symtab (sym);
-
-  if (last != NULL)
-    {
-      const char *s_filename = symtab_to_filename_for_display (s);
-
-      if (filename_cmp (last, s_filename) != 0)
-	{
-	  printf_filtered (_("\nFile %ps:\n"),
-			   styled_string (file_name_style.style (),
-					  s_filename));
-	}
+  std::string str;
 
-      if (SYMBOL_LINE (sym) != 0)
-	printf_filtered ("%d:\t", SYMBOL_LINE (sym));
-      else
-	puts_filtered ("\t");
-    }
+  gdb_assert (block == GLOBAL_BLOCK || block == STATIC_BLOCK);
 
   if (kind != TYPES_DOMAIN && block == STATIC_BLOCK)
-    printf_filtered ("static ");
+    str += "static ";
 
   /* Typedef that is not a C++ class.  */
   if (kind == TYPES_DOMAIN
       && SYMBOL_DOMAIN (sym) != STRUCT_DOMAIN)
     {
+      string_file tmp_stream;
+
       /* FIXME: For C (and C++) we end up with a difference in output here
 	 between how a typedef is printed, and non-typedefs are printed.
 	 The TYPEDEF_PRINT code places a ";" at the end in an attempt to
@@ -4774,28 +4743,69 @@ print_symbol_info (enum search_domain ki
 	 printing of the ";" in this function, which is going to be wrong
 	 for languages that don't require a ";" between statements.  */
       if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_TYPEDEF)
-	typedef_print (SYMBOL_TYPE (sym), sym, gdb_stdout);
+	typedef_print (SYMBOL_TYPE (sym), sym, &tmp_stream);
       else
-	type_print (SYMBOL_TYPE (sym), "", gdb_stdout, -1);
-      printf_filtered ("\n");
+	type_print (SYMBOL_TYPE (sym), "", &tmp_stream, -1);
+      str += tmp_stream.string ();
     }
   /* variable, func, or typedef-that-is-c++-class.  */
   else if (kind < TYPES_DOMAIN
 	   || (kind == TYPES_DOMAIN
 	       && SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN))
     {
+      string_file tmp_stream;
+
       type_print (SYMBOL_TYPE (sym),
 		  (SYMBOL_CLASS (sym) == LOC_TYPEDEF
 		   ? "" : sym->print_name ()),
-		  gdb_stdout, 0);
+		  &tmp_stream, 0);
 
-      printf_filtered (";\n");
+      str += tmp_stream.string ();
+      str += ";";
     }
   /* Printing of modules is currently done here, maybe at some future
      point we might want a language specific method to print the module
      symbol so that we can customise the output more.  */
   else if (kind == MODULES_DOMAIN)
-    printf_filtered ("%s\n", sym->print_name ());
+    str += sym->print_name ();
+
+  return str;
+}
+
+/* Helper function for symbol info commands, for example 'info functions',
+   'info variables', etc.  KIND is the kind of symbol we searched for, and
+   BLOCK is the type of block the symbols was found in, either GLOBAL_BLOCK
+   or STATIC_BLOCK.  SYM is the symbol we found.  If LAST is not NULL,
+   print file and line number information for the symbol as well.  Skip
+   printing the filename if it matches LAST.  */
+
+static void
+print_symbol_info (enum search_domain kind,
+		   struct symbol *sym,
+		   int block, const char *last)
+{
+  scoped_switch_to_sym_language_if_auto l (sym);
+  struct symtab *s = symbol_symtab (sym);
+
+  if (last != NULL)
+    {
+      const char *s_filename = symtab_to_filename_for_display (s);
+
+      if (filename_cmp (last, s_filename) != 0)
+	{
+	  printf_filtered (_("\nFile %ps:\n"),
+			   styled_string (file_name_style.style (),
+					  s_filename));
+	}
+
+      if (SYMBOL_LINE (sym) != 0)
+	printf_filtered ("%d:\t", SYMBOL_LINE (sym));
+      else
+	puts_filtered ("\t");
+    }
+
+  std::string str = symbol_to_info_string (sym, block, kind);
+  printf_filtered ("%s\n", str.c_str ());
 }
 
 /* This help function for symtab_symbol_info() prints information
@@ -4844,10 +4854,10 @@ symtab_symbol_info (bool quiet, bool exc
   if (regexp != nullptr && *regexp == '\0')
     regexp = nullptr;
 
-  /* Must make sure that if we're interrupted, symbols gets freed.  */
-  std::vector<symbol_search> symbols = search_symbols (regexp, kind,
-						       t_regexp, 0, NULL,
-						       exclude_minsyms);
+  global_symbol_searcher spec (kind, regexp);
+  spec.set_symbol_type_regexp (t_regexp);
+  spec.set_exclude_minsyms (exclude_minsyms);
+  std::vector<symbol_search> symbols = spec.search ();
 
   if (!quiet)
     {
@@ -5074,23 +5084,13 @@ info_modules_command (const char *args, 
 		      from_tty);
 }
 
-/* Breakpoint all functions matching regular expression.  */
-
-void
-rbreak_command_wrapper (char *regexp, int from_tty)
-{
-  rbreak_command (regexp, from_tty);
-}
-
 static void
 rbreak_command (const char *regexp, int from_tty)
 {
   std::string string;
-  const char **files = NULL;
-  const char *file_name;
-  int nfiles = 0;
+  const char *file_name = nullptr;
 
-  if (regexp)
+  if (regexp != nullptr)
     {
       const char *colon = strchr (regexp, ':');
 
@@ -5106,17 +5106,14 @@ rbreak_command (const char *regexp, int 
 	  while (isspace (local_name[colon_index]))
 	    local_name[colon_index--] = 0;
 	  file_name = local_name;
-	  files = &file_name;
-	  nfiles = 1;
 	  regexp = skip_spaces (colon + 1);
 	}
     }
 
-  std::vector<symbol_search> symbols = search_symbols (regexp,
-						       FUNCTIONS_DOMAIN,
-						       NULL,
-						       nfiles, files,
-						       false);
+  global_symbol_searcher spec (FUNCTIONS_DOMAIN, regexp);
+  if (file_name != nullptr)
+    spec.filenames.push_back (file_name);
+  std::vector<symbol_search> symbols = spec.search ();
 
   scoped_rbreak_breakpoints finalize;
   for (const symbol_search &p : symbols)
@@ -6350,17 +6347,17 @@ search_module_symbols (const char *modul
   std::vector<module_symbol_search> results;
 
   /* Search for all modules matching MODULE_REGEXP.  */
-  std::vector<symbol_search> modules = search_symbols (module_regexp,
-						       MODULES_DOMAIN,
-						       NULL, 0, NULL,
-						       true);
+  global_symbol_searcher spec1 (MODULES_DOMAIN, module_regexp);
+  spec1.set_exclude_minsyms (true);
+  std::vector<symbol_search> modules = spec1.search ();
 
   /* Now search for all symbols of the required KIND matching the required
      regular expressions.  We figure out which ones are in which modules
      below.  */
-  std::vector<symbol_search> symbols = search_symbols (regexp, kind,
-						       type_regexp, 0,
-						       NULL, true);
+  global_symbol_searcher spec2 (kind, regexp);
+  spec2.set_symbol_type_regexp (type_regexp);
+  spec2.set_exclude_minsyms (true);
+  std::vector<symbol_search> symbols = spec2.search ();
 
   /* Now iterate over all MODULES, checking to see which items from
      SYMBOLS are in each 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.20191126/gdb/symtab.h ./gdb/symtab.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/symtab.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/symtab.h	2019-12-03 01:49:15.000000000 +0000
@@ -416,6 +416,14 @@ struct general_symbol_info
      returns the same value (same pointer) as linkage_name ().  */
   const char *search_name () const;
 
+  /* Set just the linkage name of a symbol; do not try to demangle
+     it.  Used for constructs which do not have a mangled name,
+     e.g. struct tags.  Unlike SYMBOL_SET_NAMES, linkage_name must
+     be terminated and either already on the objfile's obstack or
+     permanently allocated.  */
+  void set_linkage_name (const char *linkage_name)
+  { name = linkage_name; }
+
   /* Name of the symbol.  This is a required field.  Storage for the
      name is allocated on the objfile_obstack for the associated
      objfile.  For languages like C++ that make a distinction between
@@ -528,13 +536,14 @@ extern void symbol_set_language (struct 
                                  enum language language,
 				 struct obstack *obstack);
 
-/* Set just the linkage name of a symbol; do not try to demangle
-   it.  Used for constructs which do not have a mangled name,
-   e.g. struct tags.  Unlike SYMBOL_SET_NAMES, linkage_name must
-   be terminated and either already on the objfile's obstack or
-   permanently allocated.  */
-#define SYMBOL_SET_LINKAGE_NAME(symbol,linkage_name) \
-  (symbol)->name = (linkage_name)
+/* Try to determine the demangled name for a symbol, based on the
+   language of that symbol.  If the language is set to language_auto,
+   it will attempt to find any demangling algorithm that works and
+   then set the language appropriately.  The returned name is allocated
+   by the demangler and should be xfree'd.  */
+
+extern char *symbol_find_demangled_name (struct general_symbol_info *gsymbol,
+					 const char *mangled);
 
 /* Set the linkage and natural names of a symbol, by demangling
    the linkage name.  If linkage_name may not be nullterminated,
@@ -544,7 +553,9 @@ extern void symbol_set_language (struct 
 		    (objfile)->per_bfd)
 extern void symbol_set_names (struct general_symbol_info *symbol,
 			      gdb::string_view linkage_name, bool copy_name,
-			      struct objfile_per_bfd_storage *per_bfd);
+			      struct objfile_per_bfd_storage *per_bfd,
+			      gdb::optional<hashval_t> hash
+			        = gdb::optional<hashval_t> ());
 
 /* Return true if NAME matches the "search" name of SYMBOL, according
    to the symbol's language.  */
@@ -668,6 +679,10 @@ struct minimal_symbol : public general_s
 
   unsigned maybe_copied : 1;
 
+  /* Non-zero if this symbol ever had its demangled name set (even if
+     it was set to NULL).  */
+  unsigned int name_set : 1;
+
   /* Minimal symbols with the same hash key are kept on a linked
      list.  This is the link.  */
 
@@ -783,7 +798,7 @@ gdb_static_assert (NR_DOMAINS <= (1 << S
 
 extern const char *domain_name (domain_enum);
 
-/* Searching domains, used for `search_symbols'.  Element numbers are
+/* Searching domains, used when searching for symbols.  Element numbers are
    hardcoded in GDB, check all enum uses before changing it.  */
 
 enum search_domain
@@ -1997,11 +2012,9 @@ extern struct symbol *fixup_symbol_secti
 extern symbol *find_function_alias_target (bound_minimal_symbol msymbol);
 
 /* Symbol searching */
-/* Note: struct symbol_search, search_symbols, et.al. are declared here,
-   instead of making them local to symtab.c, for gdbtk's sake.  */
 
-/* When using search_symbols, a vector of the following structs is
-   returned.  */
+/* When using the symbol_searcher struct to search for symbols, a vector of
+   the following structs is returned.  */
 struct symbol_search
 {
   symbol_search (int block_, struct symbol *symbol_)
@@ -2050,12 +2063,68 @@ private:
 				  const symbol_search &sym_b);
 };
 
-extern std::vector<symbol_search> search_symbols (const char *,
-						  enum search_domain,
-						  const char *,
-						  int,
-						  const char **,
-						  bool);
+/* In order to search for global symbols of a particular kind matching
+   particular regular expressions, create an instance of this structure and
+   call the SEARCH member function.  */
+class global_symbol_searcher
+{
+public:
+
+  /* Constructor.  */
+  global_symbol_searcher (enum search_domain kind,
+			  const char *symbol_name_regexp)
+    : m_kind (kind),
+      m_symbol_name_regexp (symbol_name_regexp)
+  {
+    /* The symbol searching is designed to only find one kind of thing.  */
+    gdb_assert (m_kind != ALL_DOMAIN);
+  }
+
+  /* Set the optional regexp that matches against the symbol type.  */
+  void set_symbol_type_regexp (const char *regexp)
+  {
+    m_symbol_type_regexp = regexp;
+  }
+
+  /* Set the flag to exclude minsyms from the search results.  */
+  void set_exclude_minsyms (bool exclude_minsyms)
+  {
+    m_exclude_minsyms = exclude_minsyms;
+  }
+
+  /* Search the symbols from all objfiles in the current program space
+     looking for matches as defined by the current state of this object.
+
+     Within each file the results are sorted locally; each symtab's global
+     and static blocks are separately alphabetized.  Duplicate entries are
+     removed.  */
+  std::vector<symbol_search> search () const;
+
+  /* The set of source files to search in for matching symbols.  This is
+     currently public so that it can be populated after this object has
+     been constructed.  */
+  std::vector<const char *> filenames;
+
+private:
+  /* The kind of symbols are we searching for.
+     VARIABLES_DOMAIN - Search all symbols, excluding functions, type
+                        names, and constants (enums).
+     FUNCTIONS_DOMAIN - Search all functions..
+     TYPES_DOMAIN     - Search all type names.
+     MODULES_DOMAIN   - Search all Fortran modules.
+     ALL_DOMAIN       - Not valid for this function.  */
+  enum search_domain m_kind;
+
+  /* Regular expression to match against the symbol name.  */
+  const char *m_symbol_name_regexp = nullptr;
+
+  /* Regular expression to match against the symbol type.  */
+  const char *m_symbol_type_regexp = nullptr;
+
+  /* When this flag is false then minsyms that match M_SYMBOL_REGEXP will
+     be included in the results, otherwise they are excluded.  */
+  bool m_exclude_minsyms = false;
+};
 
 /* When searching for Fortran symbols within modules (functions/variables)
    we return a vector of this type.  The first item in the pair is the
@@ -2072,6 +2141,14 @@ extern std::vector<module_symbol_search>
 	(const char *module_regexp, const char *regexp,
 	 const char *type_regexp, search_domain kind);
 
+/* Convert a global or static symbol SYM (based on BLOCK, which should be
+   either GLOBAL_BLOCK or STATIC_BLOCK) into a string for use in 'info'
+   type commands (e.g. 'info variables', 'info functions', etc).  KIND is
+   the type of symbol that was searched for which gave us SYM.  */
+
+extern std::string symbol_to_info_string (struct symbol *sym, int block,
+					  enum search_domain kind);
+
 extern bool treg_matches_sym_type_name (const compiled_regex &treg,
 					const struct symbol *sym);
 
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.20191126/gdb/testsuite/ChangeLog ./gdb/testsuite/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/ChangeLog	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/testsuite/ChangeLog	2019-12-03 01:49:15.000000000 +0000
@@ -1,3 +1,58 @@
+2019-12-01  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.fortran/array-slices.exp: Add test for dynamic strings.
+
+2019-12-01  Richard Bunt  <richard.bunt@arm.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.fortran/derived-type-striding.exp: New file.
+	* gdb.fortran/derived-type-striding.f90: New file.
+	* gdb.fortran/array-slices.exp: New file.
+	* gdb.fortran/array-slices.f90: New file.
+
+2019-11-30  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.base/define.exp: Test . in command names.
+	* gdb.base/setshow.exp: Update test, as . is now part of
+	command name.
+
+2019-11-30  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.base/define-prefix.exp: New file.
+
+2019-11-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* lib/gdb.exp (skip_btrace_tests): Return 1 if the test fails to
+	compile.
+	(skip_btrace_pt_tests): Likewise.
+
+2019-11-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.fortran/info-modules.exp: Compile source files in correct
+	order.
+
+2019-11-27  Kevin Buettner  <kevinb@redhat.com>
+
+	* gdb.dwarf2/imported-unit.exp: New file.
+	* gdb.dwarf2/imported-unit.c: New file.
+
+2019-11-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.mi/mi-fortran-modules-2.f90: New file.
+	* gdb.mi/mi-fortran-modules.exp: New file.
+	* gdb.mi/mi-fortran-modules.f90: New file.
+
+2019-11-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.mi/mi-sym-info-1.c: New file.
+	* gdb.mi/mi-sym-info-2.c: New file.
+	* gdb.mi/mi-sym-info.exp: New file.
+
+2019-11-22  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/tasks.exp: Add -ada-task-info regression test.
+	* gdb.ada/tasks/foo.adb: Add another stopping location.
+
 2019-11-21  Peeter Joot  <peeter.joot@lzlabs.com>
 
 	* gdb.base/endianity.c: New test.
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.20191126/gdb/testsuite/gdb.base/define.exp ./gdb/testsuite/gdb.base/define.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/gdb.base/define.exp	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/testsuite/gdb.base/define.exp	2019-12-03 01:49:16.000000000 +0000
@@ -130,6 +130,31 @@ gdb_test "help nextwhere" \
     "   A next command that first shows you where you're stepping from.*" \
     "preserve whitespace in help string"
 
+# Verify that GDB allows a user to use . in a command name.
+#
+gdb_test_multiple "define dot.command" "define user command: dot.command" {
+    -re "Type commands for definition of \"dot.command\".\r\nEnd with a line saying just \"end\".\r\n>$" {
+	gdb_test "echo dot command\\n\nend" "" \
+	    "define user command: dot.command"
+    }
+}
+
+# Verify that dot.command works.
+#
+gdb_test "dot.command" \
+    "dot command" \
+    "full name dot.command"
+gdb_test "dot" \
+    "dot command" \
+    "partial name dot"
+gdb_test "dot." \
+    "dot command" \
+    "partial name dot."
+gdb_test "dot.c" \
+    "dot command" \
+    "partial name dot.c"
+
+
 # Verify that the command parser doesn't require a space after an 'if'
 # command in a user defined function.
 #
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.20191126/gdb/testsuite/gdb.base/define-prefix.exp ./gdb/testsuite/gdb.base/define-prefix.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/gdb.base/define-prefix.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/define-prefix.exp	2019-12-03 01:49:16.000000000 +0000
@@ -0,0 +1,164 @@
+# This testcase is part of GDB, the GNU debugger.
+
+# Copyright 2019 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+# This test verifies the "define-prefix" command.
+
+gdb_start
+
+####################
+# Verify the definition of user defined prefix commands.
+# Test the definition of a command using these prefixes.
+
+# Define an empty prefix command.
+gdb_test_no_output "define-prefix abc-prefix"
+
+# Verify an empty prefix command cannot be used as a command.
+gdb_test "abc-prefix" \
+    "\"abc-prefix\" must be followed by the name of a subcommand.*" \
+    "execute prefix command not followed by subcommand"
+
+# Define a sub-prefix command.
+gdb_test_no_output "define-prefix abc-prefix def-prefix"
+
+# Define ghi-cmd using the prefixes.
+gdb_test_multiple "define abc-prefix def-prefix ghi-cmd" \
+    "define user command: abc-prefix def-prefix ghi-cmd" {
+	-re "Type commands for definition of \"abc-prefix def-prefix ghi-cmd\".\r\nEnd with a line saying just \"end\".\r\n>$" {
+	    gdb_test "echo command ghi-cmd\\n\nend" "" \
+		"define user command: ghi-cmd"
+	}
+    }
+# Verify ghi-cmd works.
+gdb_test "abc-prefix def-prefix ghi-cmd" \
+    "command ghi-cmd" \
+    "use user command: ghi-cmd"
+
+
+####################
+# Verify an existing (empty) command can be marked as a prefix command.
+# Then verify an empty prefix command can be transformed into an executable command.
+
+# Define ghi-prefix-cmd as an empty command.
+gdb_test_multiple "define abc-prefix def-prefix ghi-prefix-cmd" \
+    "define user command: abc-prefix def-prefix ghi-prefix-cmd" {
+	-re "Type commands for definition of \"abc-prefix def-prefix ghi-prefix-cmd\".\r\nEnd with a line saying just \"end\".\r\n>$" {
+	    gdb_test "end" "" \
+		"define user command: ghi-prefix-cmd"
+	}
+    }
+gdb_test_no_output "define-prefix abc-prefix def-prefix ghi-prefix-cmd"
+
+# Verify a sequence ending with an empty prefix command cannot be used as
+# a command.
+gdb_test "abc-prefix def-prefix ghi-prefix-cmd" \
+    "\"abc-prefix def-prefix ghi-prefix-cmd\" must be followed by the name of a subcommand.*" \
+    "execute sequence of prefix commands not followed by a subcommand"
+
+# Define jkl-cmd command.
+gdb_test_multiple "define abc-prefix def-prefix ghi-prefix-cmd jkl-cmd" \
+    "define user command: abc-prefix def-prefix ghi-prefix-cmd jkl-cmd" {
+	-re "Type commands for definition of \"abc-prefix def-prefix ghi-prefix-cmd jkl-cmd\".\r\nEnd with a line saying just \"end\".\r\n>$" {
+	    gdb_test "echo command jkl-cmd\\n\nend" "" \
+		"define user command: jkl-cmd"
+	}
+    }
+# Verify jkl-cmd command works.
+gdb_test "abc-prefix def-prefix ghi-prefix-cmd jkl-cmd" \
+    "command jkl-cmd" \
+    "use user command: jkl-cmd"
+
+# Define alternate-jkl-cmd and check it works.
+# Define alternate-jkl-cmd command.
+gdb_test_multiple "define abc-prefix def-prefix ghi-prefix-cmd alternate-jkl-cmd" \
+    "define user command: abc-prefix def-prefix ghi-prefix-cmd alternate-jkl-cmd" {
+	-re "Type commands for definition of \"abc-prefix def-prefix ghi-prefix-cmd alternate-jkl-cmd\".\r\nEnd with a line saying just \"end\".\r\n>$" {
+	    gdb_test "echo command alternate-jkl-cmd\\n\nend" "" \
+		"define user command: alternate-jkl-cmd"
+	}
+    }
+# Verify alternate-jkl-cmd command works.
+gdb_test "abc-prefix def-prefix ghi-prefix-cmd alternate-jkl-cmd" \
+    "command alternate-jkl-cmd" \
+    "use user command: alternate-jkl-cmd"
+
+
+
+# Now define ghi-prefix-cmd as a real command, and check it is working.
+send_gdb "define abc-prefix def-prefix ghi-prefix-cmd\n"
+gdb_expect {
+    -re "Type commands for definition of \"abc-prefix def-prefix ghi-prefix-cmd\".\r\nEnd with a line saying just \"end\".\r\n>$" {
+	send_gdb "echo defined command ghi-prefix-cmd\\n\nend\n"
+	gdb_expect {
+	    -re "$gdb_prompt $" {pass "define user command: ghi-prefix-cmd"}
+	    timeout {fail "(timeout) define user command: ghi-prefix-cmd"}
+	}
+    }
+    timeout {fail "(timeout) define user command: ghi-prefix-cmd"}
+}
+
+# Verify ghi-prefix-cmd command works.
+gdb_test "abc-prefix def-prefix ghi-prefix-cmd" \
+    "defined command ghi-prefix-cmd" \
+    "use defined user command: ghi-prefix-cmd"
+
+# Now redefine ghi-prefix-cmd, and check it is working.
+send_gdb "define abc-prefix def-prefix ghi-prefix-cmd\n"
+gdb_expect {
+    -re "Keeping subcommands of prefix command \"ghi-prefix-cmd\"\.\r\nRedefine command \"ghi-prefix-cmd\".*y or n. $" {
+	send_gdb "y\n"
+	gdb_expect {
+	    -re "Type commands for definition of \"abc-prefix def-prefix ghi-prefix-cmd\".\r\nEnd with a line saying just \"end\".\r\n>$" {
+		send_gdb "echo redefined command ghi-prefix-cmd\\n\nend\n"
+		gdb_expect {
+		    -re "$gdb_prompt $" {pass "redefine user command: ghi-prefix-cmd"}
+		    timeout {fail "(timeout) redefine user command: ghi-prefix-cmd"}
+		}
+	    }
+	    timeout {fail "(timeout) redefine user command: ghi-prefix-cmd"}
+	}
+    }
+    -re "$gdb_prompt $" {fail "redefine user command: ghi-prefix-cmd"}
+    timeout {fail "(timeout) redefine user command: ghi-prefix-cmd"}
+}
+
+# Verify redefined ghi-prefix-cmd command works.
+gdb_test "abc-prefix def-prefix ghi-prefix-cmd" \
+    "redefined command ghi-prefix-cmd" \
+    "use redefined user command: ghi-prefix-cmd"
+
+# Check jkl-cmd still works.
+gdb_test "abc-prefix def-prefix ghi-prefix-cmd jkl-cmd" \
+    "command jkl-cmd" \
+    "use user command after redefining ghi-prefix-cmd: jkl-cmd"
+
+# Check alternate-jkl-cmd still works.
+gdb_test "abc-prefix def-prefix ghi-prefix-cmd alternate-jkl-cmd" \
+    "command alternate-jkl-cmd" \
+    "use user command after redefining ghi-prefix-cmd: alternate-jkl-cmd"
+
+####################
+# Check error behaviour.
+
+gdb_test "define-prefix print" ".* is built-in.*"
+
+gdb_test "define-prefix something-not-existing something-else" \
+    "Undefined command: \"something-not-existing\".*"
+
+gdb_test "define-prefix abc-prefix something-not-existing something-else" \
+    "Undefined abc-prefix command: \"something-not-existing\".*"
+
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.20191126/gdb/testsuite/gdb.base/setshow.exp ./gdb/testsuite/gdb.base/setshow.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/gdb.base/setshow.exp	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/testsuite/gdb.base/setshow.exp	2019-12-03 01:49:16.000000000 +0000
@@ -355,7 +355,7 @@ gdb_test_no_output "set verbose off" "se
 gdb_test "show verbose" "Verbosity is off..*" "show verbose (off)" 
 #test argument must be preceded by space
 foreach x {"history file" "solib-search-path" "data-directory"} {
-    foreach y {"/home/" "." "~/home" "=home"} {
+    foreach y {"/home/" "~/home" "=home"} {
         gdb_test "set $x$y" "Argument must be preceded by space." \
             "$x is not set to $y"
     }
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.20191126/gdb/testsuite/gdb.dwarf2/imported-unit.c ./gdb/testsuite/gdb.dwarf2/imported-unit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/gdb.dwarf2/imported-unit.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/imported-unit.c	2019-12-03 01:49:16.000000000 +0000
@@ -0,0 +1,56 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2019 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Using the DWARF assembler - see imported-unit.exp - we'll be constructing
+   debug info corresponding to the following C++ code that also might have
+   been compiled using -flto...
+
+  int main()
+  {
+    class Foo {
+    public:
+      int doit ()
+      {
+	return 0;
+      }
+    };
+
+    Foo foo;
+
+    return foo.doit ();
+  }
+
+  An attempt was made to try to use the above code directly, but
+  finding the start and end address of doit turned out to be
+  difficult.
+*/
+
+
+int doit (void)
+{
+  asm ("doit_label: .globl doit_label");
+
+  return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+  asm ("main_label: .globl main_label");
+
+  return doit ();
+}
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.20191126/gdb/testsuite/gdb.dwarf2/imported-unit.exp ./gdb/testsuite/gdb.dwarf2/imported-unit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/gdb.dwarf2/imported-unit.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/imported-unit.exp	2019-12-03 01:49:16.000000000 +0000
@@ -0,0 +1,157 @@
+# Copyright 2019 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Import a CU into an "artificial" CU.  For each DW_TAG DIE in the
+# artificial CU, use DW_AT_abstract_origin to refer to a DIE in the
+# imported CU.  This DWARF file organization is frequently found in
+# programs compiled with -flto (and -g) using GCC.
+#
+# This test reproduces the bug described in BZ 25065 without relying
+# on specific compiler versions or use of optimization switches, in
+# this case -flto.
+
+if [skip_cplus_tests] {
+    continue
+}
+
+load_lib dwarf.exp
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+if {![dwarf2_support]} {
+    return 0
+};
+
+standard_testfile .c .S
+
+# ${testfile} is now "implref-struct".  srcfile2 is "implref-struct.S".
+set executable ${testfile}
+set asm_file [standard_output_file ${srcfile2}]
+
+# We need to know the size of integer and address types in order
+# to write some of the debugging info we'd like to generate.
+if [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {debug c++}] {
+    return -1
+}
+
+# Create the DWARF.
+Dwarf::assemble $asm_file {
+    declare_labels cu_label main_label doit_label int_label
+    declare_labels Foo_label Foo_pointer_type doit_self_label
+    declare_labels foo_label Foo_destructor_obj_pointer_label
+    declare_labels Foo_constructor_obj_pointer_label
+    set int_size [get_sizeof "int" 4]
+    set addr_size [get_sizeof "void *" 8]
+
+    global srcdir subdir srcfile
+
+    extern main
+    extern doit
+
+    set main_range [function_range main ${srcdir}/${subdir}/${srcfile}]
+    set main_start [lindex $main_range 0]
+    set main_length [lindex $main_range 1]
+
+    set doit_range [function_range doit ${srcdir}/${subdir}/${srcfile}]
+    set doit_start [lindex $doit_range 0]
+    set doit_length [lindex $doit_range 1]
+
+    cu {} {
+	compile_unit {
+	    {language @DW_LANG_C_plus_plus}
+	    {name "<artificial>"}
+	} {
+	    imported_unit {
+		{import :$cu_label ref_addr}
+	    }
+	    subprogram {
+		{abstract_origin :$main_label}
+		{low_pc $main_start addr}
+		{high_pc "$main_start + $main_length" addr}
+	    } {
+		subprogram {
+		    {abstract_origin :$doit_label}
+		    {low_pc $doit_start addr}
+		    {high_pc "$doit_start + $doit_length" addr}
+		} {
+		    formal_parameter {
+			{abstract_origin :$doit_self_label}
+		    }
+		}
+	        DW_TAG_variable {
+		    {abstract_origin :$foo_label}
+		    {location 4 data1}
+		}
+	    }
+	}
+    }
+
+    cu {} {
+	cu_label: compile_unit {
+	    {language @DW_LANG_C_plus_plus}
+	    {name "imported_unit.c"}
+	} {
+	    int_label: base_type {
+		{byte_size $int_size sdata}
+		{encoding @DW_ATE_signed}
+		{name int}
+	    }
+
+	    main_label: subprogram {
+		{name main}
+		{type :$int_label}
+		{external 1 flag}
+	    } {
+		Foo_label: class_type {
+		    {name Foo}
+		    {byte_size 1 sdata}
+		} {
+		    doit_label: subprogram {
+			{name doit}
+			{type :$int_label}
+			{accessibility 1 DW_FORM_data1}
+		    } {
+			doit_self_label: formal_parameter {
+			    {name this}
+			    {artificial 1 DW_FORM_flag_present}
+			    {type :$Foo_pointer_type}
+			}
+		    }
+		    Foo_pointer_type: pointer_type {
+			{byte_size $addr_size sdata}
+			{type :$Foo_label}
+		    }
+		}
+		foo_label: DW_TAG_variable {
+		    {name foo}
+		    {type :$Foo_label}
+		}
+	    }
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] {nodebug}] } {
+    return -1
+}
+
+gdb_test_no_output "set language c++"
+
+# Sanity check
+gdb_test "ptype main" "= int \\(void\\)"
+
+# Each of these tests caused a segfault prior to fixing BZ 25065.
+gdb_test "ptype main::Foo" "= class Foo \{\\s+public:\\s+int doit\\(void\\);\\s+\}"
+gdb_test "ptype main::foo" "= class Foo \{\\s+public:\\s+int doit\\(void\\);\\s+\}"
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.20191126/gdb/testsuite/gdb.fortran/array-slices.exp ./gdb/testsuite/gdb.fortran/array-slices.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/gdb.fortran/array-slices.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/array-slices.exp	2019-12-03 01:49:16.000000000 +0000
@@ -0,0 +1,67 @@
+# Copyright 2019 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/> .
+
+# Print a 2 dimensional assumed shape array.  We pass different slices
+# of the array to a subroutine and print the array as recieved within
+# the subroutine.  This should exercise GDB's ability to handle
+# different strides for the different dimensions.
+
+if {[skip_fortran_tests]} { return -1 }
+
+standard_testfile ".f90"
+
+if {[prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
+	 {debug f90}]} {
+    return -1
+}
+
+if ![runto_main] {
+    untested "could not run to main"
+    return -1
+}
+
+gdb_breakpoint "show"
+gdb_breakpoint [gdb_get_line_number "Final Breakpoint"]
+
+set array_contents \
+    [list \
+	 " = \\(\\( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10\\) \\( 11, 12, 13, 14, 15, 16, 17, 18, 19, 20\\) \\( 21, 22, 23, 24, 25, 26, 27, 28, 29, 30\\) \\( 31, 32, 33, 34, 35, 36, 37, 38, 39, 40\\) \\( 41, 42, 43, 44, 45, 46, 47, 48, 49, 50\\) \\( 51, 52, 53, 54, 55, 56, 57, 58, 59, 60\\) \\( 61, 62, 63, 64, 65, 66, 67, 68, 69, 70\\) \\( 71, 72, 73, 74, 75, 76, 77, 78, 79, 80\\) \\( 81, 82, 83, 84, 85, 86, 87, 88, 89, 90\\) \\( 91, 92, 93, 94, 95, 96, 97, 98, 99, 100\\) \\)" \
+	 " = \\(\\( 1, 2, 3, 4, 5\\) \\( 11, 12, 13, 14, 15\\) \\( 21, 22, 23, 24, 25\\) \\( 31, 32, 33, 34, 35\\) \\( 41, 42, 43, 44, 45\\) \\)" \
+	 " = \\(\\( 1, 3, 5, 7, 9\\) \\( 21, 23, 25, 27, 29\\) \\( 41, 43, 45, 47, 49\\) \\( 61, 63, 65, 67, 69\\) \\( 81, 83, 85, 87, 89\\) \\)" \
+	 " = \\(\\( 1, 4, 7, 10\\) \\( 21, 24, 27, 30\\) \\( 41, 44, 47, 50\\) \\( 61, 64, 67, 70\\) \\( 81, 84, 87, 90\\) \\)" \
+	 " = \\(\\( 1, 5, 9\\) \\( 31, 35, 39\\) \\( 61, 65, 69\\) \\( 91, 95, 99\\) \\)" \
+	 " = \\(\\( -26, -25, -24, -23, -22, -21, -20, -19, -18, -17\\) \\( -19, -18, -17, -16, -15, -14, -13, -12, -11, -10\\) \\( -12, -11, -10, -9, -8, -7, -6, -5, -4, -3\\) \\( -5, -4, -3, -2, -1, 0, 1, 2, 3, 4\\) \\( 2, 3, 4, 5, 6, 7, 8, 9, 10, 11\\) \\( 9, 10, 11, 12, 13, 14, 15, 16, 17, 18\\) \\( 16, 17, 18, 19, 20, 21, 22, 23, 24, 25\\) \\( 23, 24, 25, 26, 27, 28, 29, 30, 31, 32\\) \\( 30, 31, 32, 33, 34, 35, 36, 37, 38, 39\\) \\( 37, 38, 39, 40, 41, 42, 43, 44, 45, 46\\) \\)" \
+	 " = \\(\\( -26, -25, -24, -23, -22, -21\\) \\( -19, -18, -17, -16, -15, -14\\) \\( -12, -11, -10, -9, -8, -7\\) \\)" \
+	 " = \\(\\( -26, -24, -22, -20, -18\\) \\( -5, -3, -1, 1, 3\\) \\( 16, 18, 20, 22, 24\\) \\( 37, 39, 41, 43, 45\\) \\)" ]
+
+set message_strings \
+    [list \
+	 " = 'array'" \
+	 " = 'array \\(1:5,1:5\\)'" \
+	 " = 'array \\(1:10:2,1:10:2\\)'" \
+	 " = 'array \\(1:10:3,1:10:2\\)'" \
+	 " = 'array \\(1:10:5,1:10:3\\)'" ]
+
+set i 0
+foreach result $array_contents msg $message_strings {
+    incr i
+    with_test_prefix "test $i" {
+	gdb_continue_to_breakpoint "show"
+	gdb_test "p array" $result
+	gdb_test "p message" "$msg"
+    }
+}
+
+gdb_continue_to_breakpoint "continue to Final Breakpoint"
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.20191126/gdb/testsuite/gdb.fortran/array-slices.f90 ./gdb/testsuite/gdb.fortran/array-slices.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/gdb.fortran/array-slices.f90	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/array-slices.f90	2019-12-03 01:49:16.000000000 +0000
@@ -0,0 +1,70 @@
+! Copyright 2019 Free Software Foundation, Inc.
+!
+! This program is free software; you can redistribute it and/or modify
+! it under the terms of the GNU General Public License as published by
+! the Free Software Foundation; either version 3 of the License, or
+! (at your option) any later version.
+!
+! This program is distributed in the hope that it will be useful,
+! but WITHOUT ANY WARRANTY; without even the implied warranty of
+! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+! GNU General Public License for more details.
+!
+! You should have received a copy of the GNU General Public License
+! along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+subroutine show (message, array)
+  character (len=*) :: message
+  integer, dimension (:,:) :: array
+
+  print *, message
+  do i=LBOUND (array, 2), UBOUND (array, 2), 1
+     do j=LBOUND (array, 1), UBOUND (array, 1), 1
+        write(*, fmt="(i4)", advance="no") array (j, i)
+     end do
+     print *, ""
+ end do
+ print *, array
+ print *, ""
+
+end subroutine show
+
+program test
+
+  interface
+     subroutine show (message, array)
+       character (len=*) :: message
+       integer, dimension(:,:) :: array
+     end subroutine show
+  end interface
+
+  integer, dimension (1:10,1:10) :: array
+  integer, allocatable :: other (:, :)
+
+  allocate (other (-5:4, -2:7))
+
+  do i=LBOUND (array, 2), UBOUND (array, 2), 1
+     do j=LBOUND (array, 1), UBOUND (array, 1), 1
+        array (j,i) = ((i - 1) * UBOUND (array, 2)) + j
+     end do
+  end do
+
+  do i=LBOUND (other, 2), UBOUND (other, 2), 1
+     do j=LBOUND (other, 1), UBOUND (other, 1), 1
+        other (j,i) = ((i - 1) * UBOUND (other, 2)) + j
+     end do
+  end do
+
+  call show ("array", array)
+  call show ("array (1:5,1:5)", array (1:5,1:5))
+  call show ("array (1:10:2,1:10:2)", array (1:10:2,1:10:2))
+  call show ("array (1:10:3,1:10:2)", array (1:10:3,1:10:2))
+  call show ("array (1:10:5,1:10:3)", array (1:10:4,1:10:3))
+
+  call show ("other", other)
+  call show ("other (-5:0, -2:0)", other (-5:0, -2:0))
+  call show ("other (-5:4:2, -2:7:3)", other (-5:4:2, -2:7:3))
+
+  deallocate (other)
+  print *, "" ! Final Breakpoint.
+end program test
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.20191126/gdb/testsuite/gdb.fortran/derived-type-striding.exp ./gdb/testsuite/gdb.fortran/derived-type-striding.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/gdb.fortran/derived-type-striding.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/derived-type-striding.exp	2019-12-03 01:49:16.000000000 +0000
@@ -0,0 +1,37 @@
+# Copyright 2019 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/> .
+
+# Print some single dimensional integer arrays that will have a byte
+# stride in the debug information.
+
+if {[skip_fortran_tests]} { return -1 }
+
+standard_testfile ".f90"
+
+if {[prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
+	 {debug f90}]} {
+    return -1
+}
+
+if {![runto [gdb_get_line_number "post_init"]]} then {
+    perror "couldn't run to breakpoint post_init"
+    continue
+}
+
+# Test homogeneous derived type.
+gdb_test "p point_dimension" "= \\\(2, 2, 2, 2, 2, 2, 2, 2, 2\\\)"
+
+# Test mixed type derived type.
+gdb_test "p point_mixed_dimension" "= \\\(3, 3, 3, 3\\\)"
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.20191126/gdb/testsuite/gdb.fortran/derived-type-striding.f90 ./gdb/testsuite/gdb.fortran/derived-type-striding.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/gdb.fortran/derived-type-striding.f90	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/derived-type-striding.f90	2019-12-03 01:49:16.000000000 +0000
@@ -0,0 +1,43 @@
+! Copyright 2019 Free Software Foundation, Inc.
+!
+! This program is free software; you can redistribute it and/or modify
+! it under the terms of the GNU General Public License as published by
+! the Free Software Foundation; either version 3 of the License, or
+! (at your option) any later version.
+!
+! This program is distributed in the hope that it will be useful,
+! but WITHOUT ANY WARRANTY; without even the implied warranty of
+! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+! GNU General Public License for more details.
+!
+! You should have received a copy of the GNU General Public License
+! along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+program derived_type_member_stride
+    type cartesian
+        integer(kind=8) :: x
+        integer(kind=8) :: y
+        integer(kind=8) :: z
+    end type
+    type mixed_cartesian
+        integer(kind=8) :: x
+        integer(kind=4) :: y
+        integer(kind=8) :: z
+    end type
+    type(cartesian), dimension(10), target :: cloud
+    type(mixed_cartesian), dimension(10), target :: mixed_cloud
+    integer(kind=8), dimension(:), pointer :: point_dimension => null()
+    integer(kind=8), dimension(:), pointer :: point_mixed_dimension => null()
+    cloud(:)%x = 1
+    cloud(:)%y = 2
+    cloud(:)%z = 3
+    point_dimension => cloud(1:9)%y
+    mixed_cloud(:)%x = 1
+    mixed_cloud(:)%y = 2
+    mixed_cloud(:)%z = 3
+    point_mixed_dimension => mixed_cloud(1:4)%z
+    ! Prevent the compiler from optimising the work out.
+    print *, cloud(:)%x ! post_init
+    print *, point_dimension
+    print *, point_mixed_dimension
+end program
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.20191126/gdb/testsuite/gdb.fortran/info-modules.exp ./gdb/testsuite/gdb.fortran/info-modules.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/gdb.fortran/info-modules.exp	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/info-modules.exp	2019-12-03 01:49:16.000000000 +0000
@@ -23,7 +23,7 @@ if { [skip_fortran_tests] } { continue }
 standard_testfile info-types.f90 info-types-2.f90
 
 if { [prepare_for_testing "failed to prepare" $testfile \
-	  [list $srcfile $srcfile2] {debug f90}] } {
+	  [list $srcfile2 $srcfile] {debug f90}] } {
     return -1
 }
 
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.20191126/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90 ./gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90	2019-12-03 01:49:16.000000000 +0000
@@ -0,0 +1,33 @@
+! Copyright 2009-2019 Free Software Foundation, Inc.
+!
+! This program is free software; you can redistribute it and/or modify
+! it under the terms of the GNU General Public License as published by
+! the Free Software Foundation; either version 3 of the License, or
+! (at your option) any later version.
+!
+! This program is distributed in the hope that it will be useful,
+! but WITHOUT ANY WARRANTY; without even the implied warranty of
+! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+! GNU General Public License for more details.
+!
+! You should have received a copy of the GNU General Public License
+! along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+module mod1
+  integer :: var_i = 1
+  integer :: var_const
+  parameter (var_const = 20)
+contains
+  subroutine check_all
+    if (var_i .ne. 1) call abort
+    if (var_const .ne. 20) call abort
+  end subroutine check_all
+end module mod1
+
+module mod2
+  integer :: var_i = 2
+contains
+    subroutine check_var_i
+    if (var_i .ne. 2) call abort
+  end subroutine check_var_i
+end module mod2
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.20191126/gdb/testsuite/gdb.mi/mi-fortran-modules.exp ./gdb/testsuite/gdb.mi/mi-fortran-modules.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/gdb.mi/mi-fortran-modules.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-fortran-modules.exp	2019-12-03 01:49:16.000000000 +0000
@@ -0,0 +1,52 @@
+# Copyright 2019 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test -symbol-info-modules, listing Fortran modules.
+
+load_lib fortran.exp
+load_lib mi-support.exp
+set MIFLAGS "-i=mi"
+
+standard_testfile "mi-fortran-modules.f90" "mi-fortran-modules-2.f90"
+
+if {[prepare_for_testing "failed to prepare" ${testfile} \
+	 [list $srcfile $srcfile2] {debug f90}]} {
+    return -1
+}
+
+gdb_exit
+if {[mi_gdb_start]} {
+    continue
+}
+
+mi_run_to_main
+
+mi_gdb_test "101-symbol-info-modules" \
+    "101\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"16\",name=\"mod1\"\},\{line=\"27\",name=\"mod2\"\}\\\]\},\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"16\",name=\"mod3\"\},\{line=\"32\",name=\"modmany\"\},\{line=\"41\",name=\"moduse\"\}\\\]\}\\\]\}" \
+    "-symbol-info-modules"
+
+mi_gdb_test "102-symbol-info-modules --name mod\[123\]" \
+    "102\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"16\",name=\"mod1\"\},\{line=\"27\",name=\"mod2\"\}\\\]\},\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"16\",name=\"mod3\"\}\\\]\}\\\]\}" \
+    "-symbol-info-modules --name mod\[123\]"
+
+mi_gdb_test "103-symbol-info-modules --name moduse" \
+    "103\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"41\",name=\"moduse\"\}\\\]\}\\\]\}" \
+    "-symbol-info-modules --name moduse"
+
+
+
+
+
+
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.20191126/gdb/testsuite/gdb.mi/mi-fortran-modules.f90 ./gdb/testsuite/gdb.mi/mi-fortran-modules.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/gdb.mi/mi-fortran-modules.f90	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-fortran-modules.f90	2019-12-03 01:49:16.000000000 +0000
@@ -0,0 +1,87 @@
+! Copyright 2009-2019 Free Software Foundation, Inc.
+! 
+! This program is free software; you can redistribute it and/or modify
+! it under the terms of the GNU General Public License as published by
+! the Free Software Foundation; either version 3 of the License, or
+! (at your option) any later version.
+! 
+! This program is distributed in the hope that it will be useful,
+! but WITHOUT ANY WARRANTY; without even the implied warranty of
+! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+! GNU General Public License for more details.
+! 
+! You should have received a copy of the GNU General Public License
+! along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+module mod3
+  integer :: mod2 = 3
+  integer :: mod1 = 3
+  integer :: var_i = 3
+contains
+  subroutine check_all
+    if (mod2 .ne. 3) call abort
+    if (mod1 .ne. 3) call abort
+    if (var_i .ne. 3) call abort
+  end subroutine check_all
+
+  subroutine check_mod2
+    if (mod2 .ne. 3) call abort
+  end subroutine check_mod2
+end module mod3
+
+module modmany
+  integer :: var_a = 10, var_b = 11, var_c = 12, var_i = 14
+contains
+  subroutine check_some
+    if (var_a .ne. 10) call abort
+    if (var_b .ne. 11) call abort
+  end subroutine check_some
+end module modmany
+
+module moduse
+  integer :: var_x = 30, var_y = 31
+contains
+  subroutine check_all
+    if (var_x .ne. 30) call abort
+    if (var_y .ne. 31) call abort
+  end subroutine check_all
+
+  subroutine check_var_x
+    if (var_x .ne. 30) call abort
+  end subroutine check_var_x
+end module moduse
+
+subroutine sub1
+  use mod1
+  if (var_i .ne. 1) call abort
+  var_i = var_i                         ! i-is-1
+end subroutine sub1
+
+subroutine sub2
+  use mod2
+  if (var_i .ne. 2) call abort
+  var_i = var_i                         ! i-is-2
+end subroutine sub2
+
+subroutine sub3
+  use mod3
+  var_i = var_i                         ! i-is-3
+end subroutine sub3
+
+program module
+
+  use modmany, only: var_b, var_d => var_c, var_i
+  use moduse, var_z => var_y
+
+  call sub1
+  call sub2
+  call sub3
+
+  if (var_b .ne. 11) call abort
+  if (var_d .ne. 12) call abort
+  if (var_i .ne. 14) call abort
+  if (var_x .ne. 30) call abort
+  if (var_z .ne. 31) call abort
+  var_b = var_b                         ! a-b-c-d
+
+end program 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.20191126/gdb/testsuite/gdb.mi/mi-sym-info-1.c ./gdb/testsuite/gdb.mi/mi-sym-info-1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/gdb.mi/mi-sym-info-1.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-sym-info-1.c	2019-12-03 01:49:16.000000000 +0000
@@ -0,0 +1,48 @@
+/* Copyright 2019 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Function and variables declared in mi-sym-info-2.c.  */
+extern float f2 (float arg);
+extern int f3 (int arg);
+extern int global_i2;
+extern float global_f2;
+
+static int global_i1;
+static float global_f1;
+
+typedef int my_int_t;
+
+static my_int_t
+f1 (int arg1, int arg2)
+{
+  return arg1 + arg2;
+}
+
+void
+f4 (int *arg)
+{
+  (*arg)++;
+}
+
+int
+main ()
+{
+  int v = f3 (4);
+  f4 (&v);
+  float tmp = f2 (1.0);
+  return f1 (3, v) + ((int) tmp);
+}
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.20191126/gdb/testsuite/gdb.mi/mi-sym-info-2.c ./gdb/testsuite/gdb.mi/mi-sym-info-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/gdb.mi/mi-sym-info-2.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-sym-info-2.c	2019-12-03 01:49:16.000000000 +0000
@@ -0,0 +1,43 @@
+/* Copyright 2019 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+static int global_i1;
+static float global_f1;
+int global_i2;
+int global_f2;
+
+typedef int another_int_t;
+typedef float another_float_t;
+
+static another_float_t
+f1 (int arg)
+{
+  return (float) arg;
+}
+
+float
+f2 (another_float_t arg)
+{
+  return arg + f1 (1);
+}
+
+int
+f3 (another_int_t arg)
+{
+  return arg + 2;
+}
+
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.20191126/gdb/testsuite/gdb.mi/mi-sym-info.exp ./gdb/testsuite/gdb.mi/mi-sym-info.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/gdb.mi/mi-sym-info.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-sym-info.exp	2019-12-03 01:49:16.000000000 +0000
@@ -0,0 +1,129 @@
+# Copyright 2019 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test -symbol-info-functions, -symbol-info-variables, and
+# -symbol-info-types.
+
+load_lib mi-support.exp
+set MIFLAGS "-i=mi"
+
+standard_testfile mi-sym-info-1.c mi-sym-info-2.c
+
+if {[prepare_for_testing "failed to prepare" ${testfile} \
+	 [list $srcfile $srcfile2] {debug}]} {
+    return -1
+}
+
+gdb_exit
+if {[mi_gdb_start]} {
+    continue
+}
+
+mi_run_to_main
+
+set qstr "\"\[^\"\]+\""
+set fun_re "\{line=\"$decimal\",name=${qstr},type=${qstr},description=${qstr}\}"
+set type_re "\{(?:line=\"$decimal\",)*name=${qstr}\}"
+set sym_list "\\\[${fun_re}(?:,$fun_re)*\\\]"
+set type_sym_list "\\\[${type_re}(?:,$type_re)*\\\]"
+set symtab_re \
+    "\{filename=${qstr},fullname=${qstr},symbols=${sym_list}\}"
+set symtab_type_re \
+    "\{filename=${qstr},fullname=${qstr},symbols=${type_sym_list}\}"
+set debug_only_syms \
+    "symbols=\{debug=\\\[${symtab_re}(?:,${symtab_re})*\\\]\}"
+set all_syms \
+    "symbols=\{debug=\\\[${symtab_re}(?:,${symtab_re})*\\\],nondebug=\\\[.*\\\]\}"
+set type_syms \
+    "symbols=\{debug=\\\[${symtab_type_re}(?:,${symtab_type_re})*\\\]\}"
+
+# Fetch all functions, variables and types without any non-debug
+# symbols.
+mi_gdb_test "111-symbol-info-functions" \
+    "111\\^done,${debug_only_syms}" \
+    "List all functions from debug information only"
+
+mi_gdb_test "112-symbol-info-variables" \
+    "112\\^done,${debug_only_syms}" \
+    "List all variables from debug information only"
+
+mi_gdb_test "113-symbol-info-types" \
+    "113\\^done,${type_syms}" \
+    "List all types"
+
+# Fetch functions and variables but also grab the non-debug symbols
+# (from the symbol table).  There's often so much output output from
+# this command that we overflow expect's buffers, avoid this by
+# fetching the output piece by piece.
+set testname "List all functions"
+gdb_test_multiple "114-symbol-info-functions --include-nondebug" ${testname} {
+    -re "114\\^done,symbols=\{debug=\\\[${symtab_re}(?:,${symtab_re})*\\\],nondebug=\\\[" {
+	exp_continue
+    }
+
+    -re "\{address=${qstr},name=${qstr}\}," {
+	exp_continue
+    }
+
+    -re "\{address=${qstr},name=${qstr}\}\\\]\}\r\n${mi_gdb_prompt}$" {
+	pass ${testname}
+    }
+}
+
+set testname "List all variables"
+gdb_test_multiple "115-symbol-info-variables --include-nondebug" ${testname} {
+    -re "115\\^done,symbols=\{debug=\\\[${symtab_re}(?:,${symtab_re})*\\\],nondebug=\\\[" {
+	verbose -log "Got the first part of the input"
+	exp_continue
+    }
+
+    -re "\{address=${qstr},name=${qstr}\}," {
+	exp_continue
+    }
+
+    -re "\{address=${qstr},name=${qstr}\}\\\]\}\r\n${mi_gdb_prompt}$" {
+	pass ${testname}
+    }
+}
+
+# Filter functions by name and type.
+set lineno [gdb_get_line_number "f3 (another_int_t arg)" ${srcfile2}]
+mi_gdb_test "116-symbol-info-functions --name f3" \
+    "116\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"39\",name=\"f3\",type=\"int \\(another_int_t\\)\",description=\"int f3\\(another_int_t\\);\"\}\\\]\}\\\]\}" \
+    "List all functions matching pattern f3"
+
+set lineno [gdb_get_line_number "f4 (int *arg)" ${srcfile}]
+mi_gdb_test "117-symbol-info-functions --type void" \
+    "117\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"36\",name=\"f4\",type=\"void \\(int \\*\\)\",description=\"void f4\\(int \\*\\);\"\}\\\]\}\\\]\}" \
+    "List all functions matching type void"
+
+# Filter variables by name and type.
+set lineno [gdb_get_line_number "int global_f2;" ${srcfile2}]
+mi_gdb_test "118-symbol-info-variables --name global_f2" \
+    "118\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"21\",name=\"global_f2\",type=\"int\",description=\"int global_f2;\"\}\\\]\}\\\]\}" \
+    "List all variables matching pattern global_f2"
+
+set lineno1 [gdb_get_line_number "static float global_f1;" ${srcfile}]
+set lineno2 [gdb_get_line_number "static float global_f1;" ${srcfile2}]
+mi_gdb_test "119-symbol-info-variables --type float" \
+    "119\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"25\",name=\"global_f1\",type=\"float\",description=\"static float global_f1;\"\}\\\]\},\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"19\",name=\"global_f1\",type=\"float\",description=\"static float global_f1;\"\}\\\]\}\\\]\}" \
+    "List all variables matching type float"
+
+# Fetch types, filtering by name.
+set lineno1 [gdb_get_line_number "typedef int my_int_t;" ${srcfile}]
+set lineno2 [gdb_get_line_number "typedef int another_int_t;" ${srcfile2}]
+mi_gdb_test "120-symbol-info-types --name _int_" \
+    "120\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"27\",name=\"my_int_t\"\}\\\]\},\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"23\",name=\"another_int_t\"\}\\\]\}\\\]\}" \
+    "List all types matching _int_"
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.20191126/gdb/testsuite/lib/gdb.exp ./gdb/testsuite/lib/gdb.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/testsuite/lib/gdb.exp	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/testsuite/lib/gdb.exp	2019-12-03 01:49:16.000000000 +0000
@@ -2942,7 +2942,7 @@ gdb_caching_proc skip_btrace_tests {
     # Compile a test program.
     set src { int main() { return 0; } }
     if {![gdb_simple_compile $me $src executable]} {
-        return 0
+        return 1
     }
 
     # No error message, compilation succeeded so now run it via gdb.
@@ -2993,7 +2993,7 @@ gdb_caching_proc skip_btrace_pt_tests {
     # Compile a test program.
     set src { int main() { return 0; } }
     if {![gdb_simple_compile $me $src executable]} {
-        return 0
+        return 1
     }
 
     # No error message, compilation succeeded so now run it via 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.20191126/gdb/top.c ./gdb/top.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/top.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/top.c	2019-12-03 01:49:16.000000000 +0000
@@ -627,6 +627,18 @@ execute_command (const char *p, int from
       /* c->user_commands would be NULL in the case of a python command.  */
       if (c->theclass == class_user && c->user_commands)
 	execute_user_command (c, arg);
+      else if (c->theclass == class_user
+	       && c->prefixlist && !c->allow_unknown)
+	/* If this is a user defined prefix that does not allow unknown
+	   (in other words, C is a prefix command and not a command
+	   that can be followed by its args), report the list of
+	   subcommands.  */
+	{
+	  printf_unfiltered
+	    ("\"%.*s\" must be followed by the name of a subcommand.\n",
+	     (int) strlen (c->prefixname) - 1, c->prefixname);
+	  help_list (*c->prefixlist, c->prefixname, all_commands, gdb_stdout);
+	}
       else if (c->type == set_cmd)
 	do_set_command (arg, from_tty, c);
       else if (c->type == show_cmd)
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.20191126/gdb/tui/tui.c ./gdb/tui/tui.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/tui/tui.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/tui/tui.c	2019-12-03 01:49:16.000000000 +0000
@@ -496,8 +496,9 @@ tui_enable (void)
   tui_install_hooks ();
   rl_startup_hook = tui_rl_startup_hook;
 
-  tui_update_variables ();
-  
+  if (tui_update_variables ())
+    tui_rehighlight_all ();
+
   tui_setup_io (1);
 
   tui_active = 1;
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.20191126/gdb/tui/tui-disasm.c ./gdb/tui/tui-disasm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/tui/tui-disasm.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/tui/tui-disasm.c	2019-12-03 01:49:16.000000000 +0000
@@ -245,7 +245,7 @@ tui_disasm_window::set_contents (struct 
 	   + asm_lines[i].insn);
 
       const char *ptr = line.c_str ();
-      src->line = tui_copy_source_line (&ptr, -1, offset, line_width);
+      src->line = tui_copy_source_line (&ptr, -1, offset, line_width, 0);
 
       src->line_or_addr.loa = LOA_ADDRESS;
       src->line_or_addr.u.addr = asm_lines[i].addr;
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.20191126/gdb/tui/tui-io.c ./gdb/tui/tui-io.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/tui/tui-io.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/tui/tui-io.c	2019-12-03 01:49:16.000000000 +0000
@@ -306,8 +306,8 @@ get_color_pair (int fg, int bg)
 
 /* Apply STYLE to W.  */
 
-static void
-apply_style (WINDOW *w, ui_file_style style)
+void
+tui_apply_style (WINDOW *w, ui_file_style style)
 {
   /* Reset.  */
   wattron (w, A_NORMAL);
@@ -413,7 +413,7 @@ apply_ansi_escape (WINDOW *w, const char
       style.set_reverse (true);
     }
 
-  apply_style (w, style);
+  tui_apply_style (w, style);
   return n_read;
 }
 
@@ -438,7 +438,7 @@ tui_set_reverse_mode (WINDOW *w, bool re
       style.set_fg (reverse_save_fg);
     }
 
-  apply_style (w, style);
+  tui_apply_style (w, style);
 }
 
 /* Print LENGTH characters from the buffer pointed to by BUF to the
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.20191126/gdb/tui/tui-io.h ./gdb/tui/tui-io.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/tui/tui-io.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/tui/tui-io.h	2019-12-03 01:49:16.000000000 +0000
@@ -51,6 +51,9 @@ extern gdb::unique_xmalloc_ptr<char> tui
 /* Enter/leave reverse video mode.  */
 extern void tui_set_reverse_mode (WINDOW *w, bool reverse);
 
+/* Apply STYLE to the window.  */
+extern void tui_apply_style (WINDOW *w, ui_file_style style);
+
 extern struct ui_out *tui_out;
 extern cli_ui_out *tui_old_uiout;
 
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.20191126/gdb/tui/tui-source.c ./gdb/tui/tui-source.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/tui/tui-source.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/tui/tui-source.c	2019-12-03 01:49:16.000000000 +0000
@@ -20,6 +20,7 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
+#include <math.h>
 #include <ctype.h>
 #include "symtab.h"
 #include "frame.h"
@@ -33,6 +34,7 @@
 #include "tui/tui-data.h"
 #include "tui/tui-io.h"
 #include "tui/tui-stack.h"
+#include "tui/tui-win.h"
 #include "tui/tui-winsource.h"
 #include "tui/tui-source.h"
 #include "gdb_curses.h"
@@ -59,8 +61,10 @@ tui_source_window::set_contents (struct 
       nlines = (line_no + (height - 2)) - line_no;
 
       std::string srclines;
+      const std::vector<off_t> *offsets;
       if (!g_source_cache.get_source_lines (s, line_no, line_no + nlines,
-					    &srclines))
+					    &srclines)
+	  || !g_source_cache.get_line_charpos (s, &offsets))
 	ret = TUI_FAILURE;
       else
 	{
@@ -78,6 +82,13 @@ tui_source_window::set_contents (struct 
 	  start_line_or_addr.loa = LOA_LINE;
 	  cur_line_no = start_line_or_addr.u.line_no = line_no;
 
+	  int digits = 0;
+	  if (compact_source)
+	    {
+	      double l = log10 (offsets->size ());
+	      digits = 1 + (int) l;
+	    }
+
 	  const char *iter = srclines.c_str ();
 	  content.resize (nlines);
 	  while (cur_line < nlines)
@@ -89,7 +100,7 @@ tui_source_window::set_contents (struct 
 	      if (*iter != '\0')
 		text = tui_copy_source_line (&iter, cur_line_no,
 					     horizontal_offset,
-					     line_width);
+					     line_width, digits);
 
 	      /* Set whether element is the execution point
 		 and whether there is a break point on it.  */
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.20191126/gdb/tui/tui-win.c ./gdb/tui/tui-win.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/tui/tui-win.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/tui/tui-win.c	2019-12-03 01:49:16.000000000 +0000
@@ -30,6 +30,7 @@
 #include "breakpoint.h"
 #include "frame.h"
 #include "cli/cli-cmds.h"
+#include "cli/cli-style.h"
 #include "top.h"
 #include "source.h"
 #include "event-loop.h"
@@ -334,7 +335,8 @@ tui_get_cmd_list (void)
 
 /* The set_func hook of "set tui ..." commands that affect the window
    borders on the TUI display.  */
-void
+
+static void
 tui_set_var_cmd (const char *null_args,
 		 int from_tty, struct cmd_list_element *c)
 {
@@ -845,6 +847,12 @@ tui_set_focus_command (const char *arg, 
 static void
 tui_all_windows_info (const char *arg, int from_tty)
 {
+  if (!tui_active)
+    {
+      printf_filtered (_("The TUI is not active.\n"));
+      return;
+    }
+
   struct tui_win_info *win_with_focus = tui_win_with_focus ();
   struct ui_out *uiout = current_uiout;
 
@@ -926,6 +934,29 @@ tui_show_tab_width (struct ui_file *file
 
 }
 
+/* See tui-win.h.  */
+
+bool compact_source = false;
+
+/* Callback for "set tui compact-source".  */
+
+static void
+tui_set_compact_source (const char *ignore, int from_tty,
+			struct cmd_list_element *c)
+{
+  if (TUI_SRC_WIN != nullptr)
+    TUI_SRC_WIN->refill ();
+}
+
+/* Callback for "show tui compact-source".  */
+
+static void
+tui_show_compact_source (struct ui_file *file, int from_tty,
+			 struct cmd_list_element *c, const char *value)
+{
+  printf_filtered (_("TUI source window compactness is %s.\n"), value);
+}
+
 /* Set the tab width of the specified window.  */
 static void
 tui_set_tab_width_command (const char *arg, int from_tty)
@@ -1483,4 +1514,17 @@ When enabled GDB will print a message wh
 			   show_tui_resize_message,
 			   &maintenance_set_cmdlist,
 			   &maintenance_show_cmdlist);
+
+  add_setshow_boolean_cmd ("compact-source", class_tui,
+			   &compact_source, _("\
+Set whether the TUI source window is compact."), _("\
+Show whether the TUI source window is compact."), _("\
+This variable controls whether the TUI source window is shown\n\
+in a compact form.  The compact form puts the source closer to\n\
+the line numbers and uses less horizontal space."),
+			   tui_set_compact_source, tui_show_compact_source,
+			   &tui_setlist, &tui_showlist);
+
+  tui_border_style.changed.attach (tui_rehighlight_all);
+  tui_active_border_style.changed.attach (tui_rehighlight_all);
 }
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.20191126/gdb/tui/tui-wingeneral.c ./gdb/tui/tui-wingeneral.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/tui/tui-wingeneral.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/tui/tui-wingeneral.c	2019-12-03 01:49:16.000000000 +0000
@@ -22,9 +22,11 @@
 #include "defs.h"
 #include "tui/tui.h"
 #include "tui/tui-data.h"
+#include "tui/tui-io.h"
 #include "tui/tui-wingeneral.h"
 #include "tui/tui-win.h"
 #include "tui/tui-stack.h"
+#include "cli/cli-style.h"
 
 #include "gdb_curses.h"
 
@@ -51,6 +53,11 @@ box_win (struct tui_win_info *win_info, 
   else
     attrs = tui_border_attrs;
 
+  /* tui_apply_style resets the style entirely, so be sure to call it
+     before applying ATTRS.  */
+  tui_apply_style (win, (highlight_flag
+			 ? tui_active_border_style.style ()
+			 : tui_border_style.style ()));
   wattron (win, attrs);
 #ifdef HAVE_WBORDER
   wborder (win, tui_border_vline, tui_border_vline,
@@ -77,6 +84,7 @@ box_win (struct tui_win_info *win_info, 
 	}
     }
   wattroff (win, attrs);
+  tui_apply_style (win, ui_file_style ());
 }
 
 
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.20191126/gdb/tui/tui-win.h ./gdb/tui/tui-win.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/tui/tui-win.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/tui/tui-win.h	2019-12-03 01:49:16.000000000 +0000
@@ -54,7 +54,7 @@ extern void tui_update_gdb_sizes (void);
 /* Create or get the TUI command list.  */
 struct cmd_list_element **tui_get_cmd_list (void);
 
-/* Set a TUI variable.  */
-void tui_set_var_cmd (char *, int, struct cmd_list_element *);
+/* Whether compact source display should be used.  */
+extern bool compact_source;
 
 #endif /* TUI_TUI_WIN_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.20191126/gdb/tui/tui-winsource.c ./gdb/tui/tui-winsource.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/tui/tui-winsource.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/tui/tui-winsource.c	2019-12-03 01:49:16.000000000 +0000
@@ -69,7 +69,7 @@ tui_display_main ()
 
 std::string
 tui_copy_source_line (const char **ptr, int line_no, int first_col,
-		      int line_width)
+		      int line_width, int ndigits)
 {
   const char *lineptr = *ptr;
 
@@ -78,10 +78,15 @@ tui_copy_source_line (const char **ptr, 
 
   if (line_no > 0)
     {
-      result = string_printf ("%-6d", line_no);
-      int len = result.size ();
-      len = len - ((len / tui_tab_width) * tui_tab_width);
-      result.append (len, ' ');
+      if (ndigits > 0)
+	result = string_printf ("%*d ", ndigits, line_no);
+      else
+	{
+	  result = string_printf ("%-6d", line_no);
+	  int len = result.size ();
+	  len = len - ((len / tui_tab_width) * tui_tab_width);
+	  result.append (len, ' ');
+	}
     }
 
   int column = 0;
@@ -98,6 +103,8 @@ tui_copy_source_line (const char **ptr, 
 	  lineptr += skip_bytes;
 	  continue;
 	}
+      if (c == '\0')
+	break;
 
       ++lineptr;
       ++column;
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.20191126/gdb/tui/tui-winsource.h ./gdb/tui/tui-winsource.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/tui/tui-winsource.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/tui/tui-winsource.h	2019-12-03 01:49:16.000000000 +0000
@@ -238,12 +238,16 @@ extern void tui_update_source_windows_wi
 /* Extract some source text from PTR.  LINE_NO is the line number.  If
    it is positive, it is printed at the start of the line.  FIRST_COL
    is the first column to extract, and LINE_WIDTH is the number of
-   characters to display.  Returns a string holding the desired text.
-   PTR is updated to point to the start of the next line.  */
+   characters to display.  NDIGITS is used to format the line number
+   (if it is positive).  If NDIGITS is greater than 0, then that many
+   digits are used; otherwise the line number is formatted with 6
+   digits and the text is aligned to the next tab stop.  Returns a
+   string holding the desired text.  PTR is updated to point to the
+   start of the next line.  */
 
 extern std::string tui_copy_source_line (const char **ptr,
 					 int line_no, int first_col,
-					 int line_width);
+					 int line_width, int ndigits);
 
 /* Constant definitions. */
 #define SCROLL_THRESHOLD 2	/* Threshold for lazy scroll.  */
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.20191126/gdb/unittests/array-view-selftests.c ./gdb/unittests/array-view-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/array-view-selftests.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/array-view-selftests.c	2019-12-03 01:49:16.000000000 +0000
@@ -259,7 +259,7 @@ require_not_constructible ()
 
 /* Check the array_view<T>(PTR, SIZE) ctor, when T is a pointer.  */
 
-void
+static void
 check_ptr_size_ctor2 ()
 {
   struct A {};
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.20191126/gdb/unittests/basic_string_view/capacity/1.cc ./gdb/unittests/basic_string_view/capacity/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/capacity/1.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/capacity/1.cc	2019-12-03 01:49:16.000000000 +0000
@@ -131,8 +131,8 @@ namespace selftests {
 namespace string_view {
 namespace capacity_1 {
 
-void
-test01()
+static void
+test01 ()
 {
   gdb::basic_string_view<A<B>> str02;
   typedef gdb::basic_string_view< A<B> >::size_type size_type_o;
@@ -161,7 +161,7 @@ test01()
   VERIFY( sz03 >= sz04 );
 }
 
-int
+static int
 main()
 {
   test01();
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.20191126/gdb/unittests/basic_string_view/cons/char/1.cc ./gdb/unittests/basic_string_view/cons/char/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/cons/char/1.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/cons/char/1.cc	2019-12-03 01:49:16.000000000 +0000
@@ -21,8 +21,8 @@
 
 namespace cons_1 {
 
-void
-test01()
+static void
+test01 ()
 {
   typedef gdb::string_view::size_type csize_type;
 
@@ -56,8 +56,8 @@ test01()
   VERIFY( str07.length() == 10 );
 }
 
-int
-main()
+static int
+main ()
 { 
   test01();
 
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.20191126/gdb/unittests/basic_string_view/cons/char/2.cc ./gdb/unittests/basic_string_view/cons/char/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/cons/char/2.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/cons/char/2.cc	2019-12-03 01:49:16.000000000 +0000
@@ -21,8 +21,8 @@
 
 namespace cons_2 {
 
-void
-test03()
+static void
+test03 ()
 {
   const char* with_nulls = "This contains \0 a zero byte.";
 
@@ -35,8 +35,8 @@ test03()
   VERIFY( s2.size() == 28 );
 }
 
-int
-main()
+static int
+main ()
 { 
   test03();
 
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.20191126/gdb/unittests/basic_string_view/cons/char/3.cc ./gdb/unittests/basic_string_view/cons/char/3.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/cons/char/3.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/cons/char/3.cc	2019-12-03 01:49:16.000000000 +0000
@@ -21,15 +21,15 @@
 
 namespace cons_3 {
 
-void
-test05()
+static void
+test05 ()
 {
   char const * s = 0;
   gdb::string_view zero_length_built_with_NULL(s, 0);
 }
 
-int
-main()
+static int
+main ()
 { 
   test05();
 
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.20191126/gdb/unittests/basic_string_view/element_access/char/1.cc ./gdb/unittests/basic_string_view/element_access/char/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/element_access/char/1.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/element_access/char/1.cc	2019-12-03 01:49:16.000000000 +0000
@@ -21,8 +21,8 @@
 
 namespace element_access_1 {
 
-void
-test01()
+static void
+test01 ()
 {
   typedef gdb::string_view::size_type csize_type;
   typedef gdb::string_view::const_reference cref;
@@ -60,8 +60,8 @@ test01()
   }
 }
 
-int
-main()
+static int
+main ()
 { 
   test01();
   return 0;
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.20191126/gdb/unittests/basic_string_view/element_access/char/empty.cc ./gdb/unittests/basic_string_view/element_access/char/empty.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/element_access/char/empty.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/element_access/char/empty.cc	2019-12-03 01:49:16.000000000 +0000
@@ -20,8 +20,8 @@
 
 namespace element_access_empty {
 
-int
-main()
+static int
+main ()
 {
   {
     gdb::string_view empty;
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.20191126/gdb/unittests/basic_string_view/element_access/char/front_back.cc ./gdb/unittests/basic_string_view/element_access/char/front_back.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/element_access/char/front_back.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/element_access/char/front_back.cc	2019-12-03 01:49:16.000000000 +0000
@@ -20,8 +20,8 @@
 
 namespace element_access_front_back {
 
-void
-test01()
+static void
+test01 ()
 {
   gdb::string_view str("ramifications");
   const gdb::string_view cstr("melodien");
@@ -32,8 +32,8 @@ test01()
   VERIFY( cstr.back() == 'n' );
 }
 
-int
-main()
+static int
+main ()
 {
   test01();
 
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.20191126/gdb/unittests/basic_string_view/inserters/char/2.cc ./gdb/unittests/basic_string_view/inserters/char/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/inserters/char/2.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/inserters/char/2.cc	2019-12-03 01:49:16.000000000 +0000
@@ -30,8 +30,8 @@ namespace inserters_2 {
 // testing basic_filebuf::xsputn via stress testing with large string_views
 // based on a bug report libstdc++ 9
 // mode == out
-void
-test05(std::size_t size)
+static void
+test05 (std::size_t size)
 {
   bool test ATTRIBUTE_UNUSED = true;
 
@@ -78,8 +78,8 @@ test05(std::size_t size)
   VERIFY( count == 2 * size );
 }
 
-int
-main()
+static int
+main ()
 {
   test05(1); 
   test05(1000); 
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.20191126/gdb/unittests/basic_string_view/modifiers/remove_prefix/char/1.cc ./gdb/unittests/basic_string_view/modifiers/remove_prefix/char/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/modifiers/remove_prefix/char/1.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/modifiers/remove_prefix/char/1.cc	2019-12-03 01:49:16.000000000 +0000
@@ -19,8 +19,8 @@
 
 namespace modifiers_remove_prefix {
 
-void
-test01()
+static void
+test01 ()
 {
   using gdb::string_view;
 
@@ -52,8 +52,8 @@ test02()
 }
 #endif
 
-int
-main()
+static int
+main ()
 { 
   test01();
 #ifndef GDB_STRING_VIEW
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.20191126/gdb/unittests/basic_string_view/modifiers/remove_suffix/char/1.cc ./gdb/unittests/basic_string_view/modifiers/remove_suffix/char/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/modifiers/remove_suffix/char/1.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/modifiers/remove_suffix/char/1.cc	2019-12-03 01:49:16.000000000 +0000
@@ -19,8 +19,8 @@
 
 namespace modifiers_remove_suffix {
 
-void
-test01()
+static void
+test01 ()
 {
   using gdb::string_view;
 
@@ -52,8 +52,8 @@ test02()
 }
 #endif
 
-int
-main()
+static int
+main ()
 { 
   test01();
 #ifndef GDB_STRING_VIEW
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.20191126/gdb/unittests/basic_string_view/modifiers/swap/char/1.cc ./gdb/unittests/basic_string_view/modifiers/swap/char/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/modifiers/swap/char/1.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/modifiers/swap/char/1.cc	2019-12-03 01:49:16.000000000 +0000
@@ -20,8 +20,8 @@
 
 namespace modifiers_swap {
 
-void
-test01()
+static void
+test01 ()
 {
   using gdb::string_view;
 
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.20191126/gdb/unittests/basic_string_view/operations/compare/char/13650.cc ./gdb/unittests/basic_string_view/operations/compare/char/13650.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/operations/compare/char/13650.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/compare/char/13650.cc	2019-12-03 01:49:16.000000000 +0000
@@ -22,8 +22,8 @@
 namespace operations_compare_13650 {
 
 // libstdc++/13650
-void
-test01()
+static void
+test01 ()
 {
   using gdb::string_view;
 
@@ -39,7 +39,7 @@ test01()
   VERIFY( str_b.compare(0, 3, lit_02, 5) < 0 );
 }
 
-int
+static int
 main()
 {
   test01();
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.20191126/gdb/unittests/basic_string_view/operations/compare/char/1.cc ./gdb/unittests/basic_string_view/operations/compare/char/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/operations/compare/char/1.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/compare/char/1.cc	2019-12-03 01:49:16.000000000 +0000
@@ -61,8 +61,8 @@ test_value(int result, want_value expect
   return 0;
 }
 
-int
-test01()
+static int
+test01 ()
 {
   using gdb::string_view;
 
@@ -121,8 +121,8 @@ test01()
 }
 
 
-int
-main()
+static int
+main ()
 {
   test01();
 
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.20191126/gdb/unittests/basic_string_view/operations/copy/char/1.cc ./gdb/unittests/basic_string_view/operations/copy/char/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/operations/copy/char/1.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/copy/char/1.cc	2019-12-03 01:49:16.000000000 +0000
@@ -21,8 +21,8 @@
 
 namespace operations_copy_1 {
 
-void
-test01()
+static void
+test01 ()
 {
   typedef gdb::string_view::size_type csize_type;
 
@@ -35,8 +35,8 @@ test01()
   VERIFY( '9' == buffer[0] );
 }
 
-int
-main()
+static int
+main ()
 { 
   test01();
 
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.20191126/gdb/unittests/basic_string_view/operations/data/char/1.cc ./gdb/unittests/basic_string_view/operations/data/char/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/operations/data/char/1.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/data/char/1.cc	2019-12-03 01:49:16.000000000 +0000
@@ -21,8 +21,8 @@
 
 namespace operations_data_1 {
 
-int
-test01()
+static int
+test01 ()
 {
   gdb::string_view empty;
 
@@ -33,8 +33,8 @@ test01()
   return 0;
 }
 
-int
-main()
+static int
+main ()
 { 
   test01();
 
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.20191126/gdb/unittests/basic_string_view/operations/find/char/1.cc ./gdb/unittests/basic_string_view/operations/find/char/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/operations/find/char/1.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/find/char/1.cc	2019-12-03 01:49:16.000000000 +0000
@@ -21,8 +21,8 @@
 
 namespace operations_find_1 {
 
-void
-test01()
+static void
+test01 ()
 {
   typedef gdb::string_view::size_type csize_type;
   typedef gdb::string_view::const_reference cref;
@@ -154,8 +154,8 @@ test02()
 }
 #endif
 
-int
-main()
+static int
+main ()
 {
   test01();
 #ifndef GDB_STRING_VIEW
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.20191126/gdb/unittests/basic_string_view/operations/find/char/2.cc ./gdb/unittests/basic_string_view/operations/find/char/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/operations/find/char/2.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/find/char/2.cc	2019-12-03 01:49:16.000000000 +0000
@@ -21,8 +21,8 @@
 
 namespace operations_find_2 {
 
-void
-test02()
+static void
+test02 ()
 {
   typedef gdb::string_view::size_type csize_type;
   csize_type npos = gdb::string_view::npos;
@@ -152,8 +152,8 @@ test03()
 }
 #endif
 
-int
-main()
+static int
+main ()
 {
   test02();
 #ifndef GDB_STRING_VIEW
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.20191126/gdb/unittests/basic_string_view/operations/find/char/3.cc ./gdb/unittests/basic_string_view/operations/find/char/3.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/operations/find/char/3.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/find/char/3.cc	2019-12-03 01:49:16.000000000 +0000
@@ -21,8 +21,8 @@
 
 namespace operations_find_3 {
 
-void
-test03()
+static void
+test03 ()
 {
   typedef gdb::string_view::size_type csize_type;
   csize_type npos = gdb::string_view::npos;
@@ -152,8 +152,8 @@ test04()
 }
 #endif
 
-int
-main()
+static int
+main ()
 {
   test03();
 #ifndef GDB_STRING_VIEW
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.20191126/gdb/unittests/basic_string_view/operations/find/char/4.cc ./gdb/unittests/basic_string_view/operations/find/char/4.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/operations/find/char/4.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/find/char/4.cc	2019-12-03 01:49:16.000000000 +0000
@@ -22,7 +22,7 @@
 namespace operations_find_4 {
 
 // libstdc++/31401
-void
+static void
 test01()
 {
   typedef gdb::string_view::size_type csize_type;
@@ -34,8 +34,8 @@ test01()
   VERIFY( pos1 == npos );
 }
 
-int
-main()
+static int
+main ()
 {
   test01();
 
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.20191126/gdb/unittests/basic_string_view/operations/rfind/char/1.cc ./gdb/unittests/basic_string_view/operations/rfind/char/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/operations/rfind/char/1.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/rfind/char/1.cc	2019-12-03 01:49:16.000000000 +0000
@@ -21,8 +21,8 @@ namespace operations_rfind_1 {
 
 // basic_string_view rfind
 
-void
-test01()
+static void
+test01 ()
 {
   typedef gdb::string_view::size_type csize_type;
   typedef gdb::string_view::const_reference cref;
@@ -84,8 +84,8 @@ test01()
   VERIFY( csz01 == npos );
 }
 
-int
-main()
+static int
+main ()
 {
   test01();
 
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.20191126/gdb/unittests/basic_string_view/operations/rfind/char/2.cc ./gdb/unittests/basic_string_view/operations/rfind/char/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/operations/rfind/char/2.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/rfind/char/2.cc	2019-12-03 01:49:16.000000000 +0000
@@ -21,8 +21,8 @@ namespace operations_rfind_2 {
 
 // basic_string_view::find_last_of
 
-void
-test02()
+static void
+test02 ()
 {
   gdb::string_view z("ab");
   gdb::string_view::size_type pos;
@@ -42,8 +42,8 @@ test02()
   VERIFY( pos == gdb::string_view::npos );
 }
 
-int
-main()
+static int
+main ()
 {
   test02();
 
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.20191126/gdb/unittests/basic_string_view/operations/rfind/char/3.cc ./gdb/unittests/basic_string_view/operations/rfind/char/3.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/operations/rfind/char/3.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/rfind/char/3.cc	2019-12-03 01:49:16.000000000 +0000
@@ -21,8 +21,8 @@ namespace operations_rfind_3 {
 
 // basic_string_view::find_last_not_of
 
-void
-test03()
+static void
+test03 ()
 {
   typedef gdb::string_view::size_type csize_type;
   gdb::string_view::size_type pos;
@@ -56,8 +56,9 @@ test03()
   pos = z.find_last_not_of("Xa");
   VERIFY( pos == 1 );
 }
-int
-main()
+
+static int
+main ()
 {
   test03();
 
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.20191126/gdb/unittests/basic_string_view/operations/substr/char/1.cc ./gdb/unittests/basic_string_view/operations/substr/char/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/operations/substr/char/1.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/substr/char/1.cc	2019-12-03 01:49:16.000000000 +0000
@@ -21,8 +21,8 @@
 
 namespace operations_substr_1 {
 
-void
-test01()
+static void
+test01 ()
 {
   typedef gdb::string_view::size_type csize_type;
   typedef gdb::string_view::const_reference cref;
@@ -68,8 +68,8 @@ test01()
   }
 }
 
-int
-main()
+static int
+main ()
 { 
   test01();
 
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.20191126/gdb/unittests/basic_string_view/operators/char/2.cc ./gdb/unittests/basic_string_view/operators/char/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/basic_string_view/operators/char/2.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operators/char/2.cc	2019-12-03 01:49:16.000000000 +0000
@@ -111,7 +111,7 @@ template<class charT, class traits, clas
 
 namespace operators_2 {
 
-void
+static void
 test01()
 {
   gdb::string_view 	str_0("costa rica");
@@ -360,8 +360,8 @@ test02()
 }
 #endif
 
-int
-main()
+static int
+main ()
 {
   test01();
 #ifndef GDB_STRING_VIEW
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.20191126/gdb/unittests/main-thread-selftests.c ./gdb/unittests/main-thread-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/main-thread-selftests.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/unittests/main-thread-selftests.c	2019-12-03 01:49:16.000000000 +0000
@@ -0,0 +1,80 @@
+/* Self tests for run_on_main_thread
+
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include "defs.h"
+#include "gdbsupport/selftest.h"
+#include "gdbsupport/block-signals.h"
+#include "run-on-main-thread.h"
+#include "event-loop.h"
+#if CXX_STD_THREAD
+#include <thread>
+#endif
+
+namespace selftests {
+namespace main_thread_tests {
+
+#if CXX_STD_THREAD
+
+static bool done;
+
+static void
+set_done ()
+{
+  run_on_main_thread ([] ()
+    {
+      done = true;
+    });
+}
+
+static void
+run_tests ()
+{
+  std::thread thread;
+
+  done = false;
+
+  {
+    gdb::block_signals blocker;
+
+    thread = std::thread (set_done);
+  }
+
+  while (!done && gdb_do_one_event () >= 0)
+    ;
+
+  /* Actually the test will just hang, but we want to test
+     something.  */
+  SELF_CHECK (done);
+
+  thread.join ();
+}
+
+#endif
+
+}
+}
+
+void
+_initialize_main_thread_selftests ()
+{
+#if CXX_STD_THREAD
+  selftests::register_test ("run_on_main_thread",
+			    selftests::main_thread_tests::run_tests);
+#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.20191126/gdb/unittests/optional/assignment/1.cc ./gdb/unittests/optional/assignment/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/optional/assignment/1.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/optional/assignment/1.cc	2019-12-03 01:49:16.000000000 +0000
@@ -92,7 +92,8 @@ struct value_type : private mixin_counte
   state_type state = zero;
 };
 
-void test()
+static void
+test ()
 {
   using O = gdb::optional<value_type>;
   using S = value_type::state_type;
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.20191126/gdb/unittests/optional/assignment/2.cc ./gdb/unittests/optional/assignment/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/optional/assignment/2.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/optional/assignment/2.cc	2019-12-03 01:49:16.000000000 +0000
@@ -92,7 +92,8 @@ struct value_type : private mixin_counte
   state_type state = zero;
 };
 
-void test()
+static void
+test ()
 {
   using O = gdb::optional<value_type>;
   using S = value_type::state_type;
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.20191126/gdb/unittests/optional/assignment/3.cc ./gdb/unittests/optional/assignment/3.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/optional/assignment/3.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/optional/assignment/3.cc	2019-12-03 01:49:16.000000000 +0000
@@ -92,7 +92,8 @@ struct value_type : private mixin_counte
   state_type state = zero;
 };
 
-void test()
+static void
+test ()
 {
   using O = gdb::optional<value_type>;
   using S = value_type::state_type;
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.20191126/gdb/unittests/optional/assignment/4.cc ./gdb/unittests/optional/assignment/4.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/optional/assignment/4.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/optional/assignment/4.cc	2019-12-03 01:49:16.000000000 +0000
@@ -92,7 +92,8 @@ struct value_type : private mixin_counte
   state_type state = zero;
 };
 
-void test()
+static void
+test ()
 {
   using O = gdb::optional<value_type>;
   using S = value_type::state_type;
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.20191126/gdb/unittests/optional/assignment/5.cc ./gdb/unittests/optional/assignment/5.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/optional/assignment/5.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/optional/assignment/5.cc	2019-12-03 01:49:16.000000000 +0000
@@ -28,7 +28,8 @@ struct mixin_counter
 
 struct value_type : private mixin_counter { };
 
-void test()
+static void
+test ()
 {
   using O = gdb::optional<value_type>;
 
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.20191126/gdb/unittests/optional/assignment/6.cc ./gdb/unittests/optional/assignment/6.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/optional/assignment/6.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/optional/assignment/6.cc	2019-12-03 01:49:16.000000000 +0000
@@ -34,7 +34,8 @@ struct value_type : private mixin_counte
   int state = 0;
 };
 
-void test()
+static void
+test ()
 {
   using O = gdb::optional<value_type>;
 
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.20191126/gdb/unittests/optional/assignment/7.cc ./gdb/unittests/optional/assignment/7.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/optional/assignment/7.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/optional/assignment/7.cc	2019-12-03 01:49:16.000000000 +0000
@@ -17,7 +17,8 @@
 
 namespace assign_7 {
 
-void test()
+static void
+test ()
 {
   gdb::optional<int> o{666};
   VERIFY(o && *o == 666);
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.20191126/gdb/unittests/optional/cons/copy.cc ./gdb/unittests/optional/cons/copy.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/optional/cons/copy.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/optional/cons/copy.cc	2019-12-03 01:49:16.000000000 +0000
@@ -47,7 +47,8 @@ struct throwing_copy
   throwing_copy(throwing_copy const&) { throw exception {}; }
 };
 
-void test()
+static void
+test ()
 {
   // [20.5.4.1] Constructors
 
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.20191126/gdb/unittests/optional/cons/default.cc ./gdb/unittests/optional/cons/default.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/optional/cons/default.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/optional/cons/default.cc	2019-12-03 01:49:16.000000000 +0000
@@ -33,7 +33,8 @@ struct tracker
 
 int tracker::count = 0;
 
-void test()
+static void
+test ()
 {
   // [20.5.4.1] Constructors
 
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.20191126/gdb/unittests/optional/cons/move.cc ./gdb/unittests/optional/cons/move.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/optional/cons/move.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/optional/cons/move.cc	2019-12-03 01:49:16.000000000 +0000
@@ -47,7 +47,8 @@ struct throwing_move
   throwing_move(throwing_move const&) { throw exception {}; }
 };
 
-void test()
+static void
+test ()
 {
   // [20.5.4.1] Constructors
 
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.20191126/gdb/unittests/optional/cons/value.cc ./gdb/unittests/optional/cons/value.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/optional/cons/value.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/optional/cons/value.cc	2019-12-03 01:49:16.000000000 +0000
@@ -55,7 +55,8 @@ struct throwing_construction
   bool propagate;
 };
 
-void test()
+static void
+test ()
 {
   // [20.5.4.1] Constructors
 
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.20191126/gdb/unittests/optional/in_place.cc ./gdb/unittests/optional/in_place.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/optional/in_place.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/optional/in_place.cc	2019-12-03 01:49:16.000000000 +0000
@@ -17,7 +17,8 @@
 
 namespace in_place {
 
-void test()
+static void
+test ()
 {
   // [20.5.5] In-place construction
   {
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.20191126/gdb/unittests/optional/observers/1.cc ./gdb/unittests/optional/observers/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/optional/observers/1.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/optional/observers/1.cc	2019-12-03 01:49:16.000000000 +0000
@@ -22,7 +22,8 @@ struct value_type
   int i;
 };
 
-void test()
+static void
+test ()
 {
   gdb::optional<value_type> o { value_type { 51 } };
   VERIFY( (*o).i == 51 );
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.20191126/gdb/unittests/optional/observers/2.cc ./gdb/unittests/optional/observers/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/optional/observers/2.cc	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/unittests/optional/observers/2.cc	2019-12-03 01:49:16.000000000 +0000
@@ -24,7 +24,8 @@ struct value_type
 
 void* operator&(const value_type&) = delete;
 
-void test()
+static void
+test ()
 {
   gdb::optional<value_type> o { value_type { 51 } };
   VERIFY( o->i == 51 );
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.20191126/gdb/unittests/tui-selftests.c ./gdb/unittests/tui-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/unittests/tui-selftests.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/unittests/tui-selftests.c	2019-12-03 01:49:16.000000000 +0000
@@ -0,0 +1,54 @@
+/* Self tests for the TUI
+
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include "defs.h"
+#include "gdbsupport/selftest.h"
+#include "tui/tui-winsource.h"
+
+#ifdef TUI
+
+namespace selftests {
+namespace tui {
+
+static void
+run_tests ()
+{
+  const char *text = "hello";
+  std::string result = tui_copy_source_line (&text, 0, 0, 50, 0);
+  SELF_CHECK (result == "hello");
+  SELF_CHECK (*text == '\0');
+
+  text = "hello\n";
+  result = tui_copy_source_line (&text, 0, 0, 3, 0);
+  SELF_CHECK (result == "hel");
+  SELF_CHECK (*text == '\0');
+}
+
+} /* namespace tui*/
+} /* namespace selftests */
+
+#endif /* TUI */
+
+void
+_initialize_tui_selftest ()
+{
+#ifdef TUI
+  selftests::register_test ("tui", selftests::tui::run_tests);
+#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.20191126/gdb/valarith.c ./gdb/valarith.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/valarith.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/valarith.c	2019-12-03 01:49:16.000000000 +0000
@@ -188,6 +188,17 @@ value_subscripted_rvalue (struct value *
   struct type *array_type = check_typedef (value_type (array));
   struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (array_type));
   ULONGEST elt_size = type_length_units (elt_type);
+
+  /* Fetch the bit stride and convert it to a byte stride, assuming 8 bits
+     in a byte.  */
+  LONGEST stride = TYPE_ARRAY_BIT_STRIDE (array_type);
+  if (stride != 0)
+    {
+      struct gdbarch *arch = get_type_arch (elt_type);
+      int unit_size = gdbarch_addressable_memory_unit_size (arch);
+      elt_size = stride / (unit_size * 8);
+    }
+
   ULONGEST elt_offs = elt_size * (index - lowerbound);
 
   if (index < lowerbound
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.20191126/gdb/valops.c ./gdb/valops.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/valops.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/valops.c	2019-12-03 01:49:16.000000000 +0000
@@ -3023,6 +3023,33 @@ find_oload_champ (gdb::array_view<value 
       bv = rank_function (parm_types,
 			  args.slice (static_offset));
 
+      if (overload_debug)
+	{
+	  if (methods != NULL)
+	    fprintf_filtered (gdb_stderr,
+			      "Overloaded method instance %s, # of parms %d\n",
+			      methods[ix].physname, (int) parm_types.size ());
+	  else if (xmethods != NULL)
+	    fprintf_filtered (gdb_stderr,
+			      "Xmethod worker, # of parms %d\n",
+			      (int) parm_types.size ());
+	  else
+	    fprintf_filtered (gdb_stderr,
+			      "Overloaded function instance "
+			      "%s # of parms %d\n",
+			      functions[ix]->demangled_name (),
+			      (int) parm_types.size ());
+
+	  fprintf_filtered (gdb_stderr,
+			    "...Badness of length : {%d, %d}\n",
+			    bv[0].rank, bv[0].subrank);
+
+	  for (jj = 1; jj < bv.size (); jj++)
+	    fprintf_filtered (gdb_stderr,
+			      "...Badness of arg %d : {%d, %d}\n",
+			      jj, bv[jj].rank, bv[jj].subrank);
+	}
+
       if (oload_champ_bv->empty ())
 	{
 	  *oload_champ_bv = std::move (bv);
@@ -3048,29 +3075,9 @@ find_oload_champ (gdb::array_view<value 
 	    break;
 	  }
       if (overload_debug)
-	{
-	  if (methods != NULL)
-	    fprintf_filtered (gdb_stderr,
-			      "Overloaded method instance %s, # of parms %d\n",
-			      methods[ix].physname, (int) parm_types.size ());
-	  else if (xmethods != NULL)
-	    fprintf_filtered (gdb_stderr,
-			      "Xmethod worker, # of parms %d\n",
-			      (int) parm_types.size ());
-	  else
-	    fprintf_filtered (gdb_stderr,
-			      "Overloaded function instance "
-			      "%s # of parms %d\n",
-			      functions[ix]->demangled_name (),
-			      (int) parm_types.size ());
-	  for (jj = 0; jj < args.size () - static_offset; jj++)
-	    fprintf_filtered (gdb_stderr,
-			      "...Badness @ %d : %d\n", 
-			      jj, bv[jj].rank);
-	  fprintf_filtered (gdb_stderr, "Overload resolution "
-			    "champion is %d, ambiguous? %d\n", 
-			    oload_champ, oload_ambiguous);
-	}
+	fprintf_filtered (gdb_stderr, "Overload resolution "
+			  "champion is %d, ambiguous? %d\n",
+			  oload_champ, oload_ambiguous);
     }
 
   return oload_champ;
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.20191126/gdb/value.c ./gdb/value.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/value.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/value.c	2019-12-03 01:49:16.000000000 +0000
@@ -2421,33 +2421,43 @@ function_command (const char *command, i
   /* Do nothing.  */
 }
 
-/* Clean up if an internal function's command is destroyed.  */
-static void
-function_destroyer (struct cmd_list_element *self, void *ignore)
+/* Helper function that does the work for add_internal_function.  */
+
+static struct cmd_list_element *
+do_add_internal_function (const char *name, const char *doc,
+			  internal_function_fn handler, void *cookie)
 {
-  xfree ((char *) self->name);
-  xfree ((char *) self->doc);
+  struct internal_function *ifn;
+  struct internalvar *var = lookup_internalvar (name);
+
+  ifn = create_internal_function (name, handler, cookie);
+  set_internalvar_function (var, ifn);
+
+  return add_cmd (name, no_class, function_command, doc, &functionlist);
 }
 
-/* Add a new internal function.  NAME is the name of the function; DOC
-   is a documentation string describing the function.  HANDLER is
-   called when the function is invoked.  COOKIE is an arbitrary
-   pointer which is passed to HANDLER and is intended for "user
-   data".  */
+/* See value.h.  */
+
 void
 add_internal_function (const char *name, const char *doc,
 		       internal_function_fn handler, void *cookie)
 {
-  struct cmd_list_element *cmd;
-  struct internal_function *ifn;
-  struct internalvar *var = lookup_internalvar (name);
+  do_add_internal_function (name, doc, handler, cookie);
+}
 
-  ifn = create_internal_function (name, handler, cookie);
-  set_internalvar_function (var, ifn);
+/* See value.h.  */
 
-  cmd = add_cmd (xstrdup (name), no_class, function_command, (char *) doc,
-		 &functionlist);
-  cmd->destroyer = function_destroyer;
+void
+add_internal_function (gdb::unique_xmalloc_ptr<char> &&name,
+		       gdb::unique_xmalloc_ptr<char> &&doc,
+		       internal_function_fn handler, void *cookie)
+{
+  struct cmd_list_element *cmd
+    = do_add_internal_function (name.get (), doc.get (), handler, cookie);
+  doc.release ();
+  cmd->doc_allocated = 1;
+  name.release ();
+  cmd->name_allocated = 1;
 }
 
 /* Update VALUE before discarding OBJFILE.  COPIED_TYPES is used to
@@ -3937,7 +3947,7 @@ isvoid_internal_fn (struct gdbarch *gdba
   return value_from_longest (builtin_type (gdbarch)->builtin_int, ret);
 }
 
-/* Implementation of the convenience function $_cimag.  Extracts the
+/* Implementation of the convenience function $_creal.  Extracts the
    real part from a complex number.  */
 
 static struct value *
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.20191126/gdb/value.h ./gdb/value.h
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/value.h	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/value.h	2019-12-03 01:49:16.000000000 +0000
@@ -1165,9 +1165,22 @@ typedef struct value *(*internal_functio
 					       int argc,
 					       struct value **argv);
 
-void add_internal_function (const char *name, const char *doc,
-			    internal_function_fn handler,
-			    void *cookie);
+/* Add a new internal function.  NAME is the name of the function; DOC
+   is a documentation string describing the function.  HANDLER is
+   called when the function is invoked.  COOKIE is an arbitrary
+   pointer which is passed to HANDLER and is intended for "user
+   data".  */
+
+extern void add_internal_function (const char *name, const char *doc,
+				   internal_function_fn handler,
+				   void *cookie);
+
+/* This overload takes an allocated documentation string.  */
+
+extern void add_internal_function (gdb::unique_xmalloc_ptr<char> &&name,
+				   gdb::unique_xmalloc_ptr<char> &&doc,
+				   internal_function_fn handler,
+				   void *cookie);
 
 struct value *call_internal_function (struct gdbarch *gdbarch,
 				      const struct language_defn *language,
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.20191126/gdb/windows-nat.c ./gdb/windows-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/windows-nat.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/windows-nat.c	2019-12-03 01:49:16.000000000 +0000
@@ -2710,7 +2710,7 @@ windows_nat_target::create_inferior (con
 	redirect_inferior_handles (allargs, allargs_copy,
 				   &fd_inp, &fd_out, &fd_err);
       if (errno)
-	warning (_("Error in redirection: %s."), strerror (errno));
+	warning (_("Error in redirection: %s."), safe_strerror (errno));
       else
 	errno = e;
       allargs_len = strlen (allargs_copy);
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.20191126/gdb/xcoffread.c ./gdb/xcoffread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/gdb/xcoffread.c	2019-11-26 01:49:31.000000000 +0000
+++ ./gdb/xcoffread.c	2019-12-03 01:49:16.000000000 +0000
@@ -1574,7 +1574,7 @@ process_xcoff_symbol (struct coff_symbol
          will be patched with the type from its stab entry later on in
          patch_block_stabs (), unless the file was compiled without -g.  */
 
-      SYMBOL_SET_LINKAGE_NAME (sym, SYMNAME_ALLOC (name, symname_alloced));
+      sym->set_linkage_name (SYMNAME_ALLOC (name, symname_alloced));
       SYMBOL_TYPE (sym) = objfile_type (objfile)->nodebug_text_symbol;
 
       SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
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.20191126/md5.sum ./md5.sum
--- /sourceware/snapshot-tmp/gdb/snapshot/current-gdb/update-snapshot/old/gdb-9.0.50.20191126/md5.sum	2019-11-26 01:53:37.000000000 +0000
+++ ./md5.sum	2019-12-03 01:53:58.000000000 +0000
@@ -2,8 +2,8 @@ a657821f65bab77f4fbf3a75cdee6da9  ar-lib
 9404e13ea7b152453c548082da92b8da  bfd/cpu-pru.c
 deb393f679e2cb9d8afcf5d8f94ef4d5  bfd/tekhex.c
 c6f2335d823903da573f827b8c5d8290  bfd/reloc.c
-5cf229713a437b98154e7dd0b427bde7  bfd/dwarf2.c
-2bfdc7e7aa8d5c872e8059b5a291343d  bfd/libbfd.h
+deab5899cc3961c62a5d237f9f1d8192  bfd/dwarf2.c
+2f4f0e5bdcd60849e8038ac3045b33ec  bfd/libbfd.h
 8b8a453da673107291f4754c544a2ebe  bfd/cpu-nds32.c
 fb32050ffb28a5c4858c29991be30938  bfd/vaxnetbsd.c
 d5f2b771a1bb5f91cd00db34019c3299  bfd/elf64-ppc.c
@@ -36,14 +36,14 @@ a8bf329c24203303d1343c3eed58c07b  bfd/el
 5cb0eef365977eb8c7430c04738a9e2c  bfd/wasm-module.c
 ce93ef6cd4c0ba0799b9d6d75b36638a  bfd/elf64-mips.c
 c4d082a9c0c27456afe3357c4987b675  bfd/cpu-m9s12x.c
-eca4aee676861c3276fae075dc3b4237  bfd/version.h
+ce68f762e76f6a32ba10248ae1a56a79  bfd/version.h
 f635e95e06957e744083b2160029e168  bfd/cpu-tilegx.c
 f2af796af1efd1971472837a26010b6f  bfd/coff-mcore.c
 89637e92fbef834ef0c545805106bcc4  bfd/cpu-avr.c
 177bd7b4c84ba5c009fb078257ef06cb  bfd/aout64.c
 dc806684dd47180750f8cf5ff388f622  bfd/elf32-pru.c
 f5ad372cf681a57b9a43f6975c05e33c  bfd/ChangeLog-2012
-60809d4cd66530c33f1db48c06bd0622  bfd/elf.c
+226b49cf54fe0a6f9be8e45f77eb8fd8  bfd/elf.c
 0b76fafe89d70f2ea04f6b9a1e79989f  bfd/hppabsd-core.c
 8f4546a5e1b4bfb7045af3f6a958973e  bfd/elf32-xgate.c
 0b89057e69f67bd9835a9160e89333e7  bfd/elf32-nds32.h
@@ -60,7 +60,7 @@ d409d08248526f735f15722cfc595872  bfd/el
 db8c5846f5a187cf6f8eb455a1975b0a  bfd/libaout.h
 f528f4062ebaa7f218a73b5ab504e069  bfd/elfxx-aarch64.h
 8b31e3f09dc7f5ea410459c61f469a2c  bfd/elf-vxworks.c
-f44499c2b8ebf63b3941ed01794e8f0d  bfd/elfxx-mips.c
+98c057745f0991973c7c857ae1605c31  bfd/elfxx-mips.c
 add328284dfca8cd1321af403d6a725c  bfd/archive.c
 a0f20c7aaf8a06d11a0e7a01c26c2496  bfd/aix5ppc-core.c
 a8e426a4574de4afff59fd1278cf92b7  bfd/pei-ppc.c
@@ -166,7 +166,7 @@ bbf88fdf4e23c9cba924526076284b78  bfd/Ch
 d89df69f99d1232814c609c6e20e51e6  bfd/ecoff-bfd.h
 fdec41e5fe2428d1c2d298f3b22d08f1  bfd/coffcode.h
 aadd0e3c552b62ea5231b8f8e1f29c48  bfd/vms.h
-926ddb51ed56c431fe7f8c9deb5909a2  bfd/coff-sh.c
+48f832533f64eb19233f7860913e0008  bfd/coff-sh.c
 9cae02eefe2e22422234706b5f9a8892  bfd/cpu-csky.c
 bbcba73fa5056239bb44500e9ec00d90  bfd/cisco-core.c
 7c8e48e783711080575ef438683e4be6  bfd/ppcboot.c
@@ -182,7 +182,7 @@ a840edd00502ae1fb6ad77c6e9aea36d  bfd/pe
 c290f0e5bcbb5bbeb313e253517aa4ad  bfd/elf32-frv.c
 d9d91776e871b403933bd4b6aabafb14  bfd/pei-sh.c
 45037694df23448bf2fd28c2fac03b38  bfd/elf32-arc.c
-a755d4e4f7b1fcd855fdf651d03ffce4  bfd/elfnn-aarch64.c
+cb79ed3edf6c266e9203ed32ddf42582  bfd/elfnn-aarch64.c
 6ba81570a415f64ae3906377cc5415a8  bfd/cpu-aarch64.h
 e7453491dcc0635b84ebb5907d25d8e2  bfd/mach-o-i386.c
 c326eafd6d594ebb26df7bdb1441fe35  bfd/elf32-am33lin.c
@@ -204,7 +204,7 @@ f4044f1d530b3c842402863ae056ebc9  bfd/do
 a11231531c5c3cd6e7babf06426a657e  bfd/doc/ChangeLog-9103
 f32b11f47b666164ab1aa78183a50b1e  bfd/doc/hash.texi
 4635778e69bcb490e44389e420542276  bfd/doc/syms.texi
-d50cfd2a6c97f831071da09d0dc20e2d  bfd/doc/bfdver.texi
+b0249c7b998a1f43ece824837ab8bcd4  bfd/doc/bfdver.texi
 3d524b7e195fb38eb168045e4a2d18aa  bfd/doc/coffcode.texi
 11ed9773e30ff48eaba6617cf24b1f83  bfd/doc/makefile.vms
 37f6cb31f60d5757d40302482f49fdbc  bfd/doc/bfd.info
@@ -327,7 +327,7 @@ d6bd4f6d0c2627b13c05ef7cb49b2d7d  bfd/el
 784c80a5abc1b2693d0a0f8438e82545  bfd/elf32-iq2000.c
 506e4cf89b13520b65527de435f6e4b4  bfd/arc-plt.def
 0dcd615606a2ea2fdc30b601c1e9d7bc  bfd/elf-hppa.h
-0b22a808a6946dfa2672aed5475d48c7  bfd/elf32-sh.c
+aa0a17d3d300b8e872e4aaf4a06839e1  bfd/elf32-sh.c
 7d954b3eb28da5e5bf8feac3d3f19b48  bfd/cpu-xc16x.c
 bca184954cc2c57197d736dc7f25132f  bfd/elf64-hppa.h
 3178422f328ae18f3cb23a79cd858a82  bfd/cpu-arc.c
@@ -403,12 +403,12 @@ bf3124212f297f533195226f5574c9d1  bfd/el
 4f64387cc2f68f7f980105d0a6443858  bfd/elfxx-ia64.h
 72fd73fc0277b8c62634baabecbda132  bfd/elf32-or1k.c
 968eb947c31825340e4d7b98a8896ec4  bfd/targets.c
-11fb66f904cebe87f28c22e95394220b  bfd/ChangeLog
+436432cde9589983a1daea57279889b5  bfd/ChangeLog
 9c32275c313835ee61d8589d518f660b  bfd/section.c
 2fddd07f100af0551285d028f9fe8eb0  bfd/elf-s390-common.c
 07d1c3689bb0c5e5b6d5dfce7aee122e  bfd/elf32-lm32.c
 af4db43d12e2cfdaeffb10ef7befa9c4  bfd/elf32-avr.h
-46761fe1b890fa757fb0fb22f3846749  bfd/elf64-alpha.c
+66f08698bc6287b5a6a1c69f5a004b15  bfd/elf64-alpha.c
 f0a888c9c67dcd490a8d43be3bf7dc2a  bfd/verilog.c
 5dc4e75b7f08006b31a9c45f1de5465a  bfd/libhppa.h
 0dffd8ff7e8c42c17ab131e57dcd0b3e  bfd/pei-arm-wince.c
@@ -425,7 +425,7 @@ c50e59518604f040f78c62d4c1dba3a6  bfd/pe
 e4d2dc1f4dd23b77953636bf0a721cd1  bfd/cpu-tic30.c
 5dbf7dda55d75e9a4ba95e6e4c9de3ea  bfd/cpu-m32r.c
 7450da4150ff19cb98e15abd7f3acbbd  bfd/elf32-csky.c
-c90b9279e8304b14b15b885e1f6bd1b9  bfd/elf32-arm.c
+4c8cea3960591e5bf1251fc446bab4e5  bfd/elf32-arm.c
 b639c27d91e37fef6304c7e483f9d511  bfd/elf32-ppc.h
 1304eb5ab3399fa008542bc27b4f4798  bfd/cpu-msp430.c
 68a4c622bb1c6da72efb21da56fc15d3  bfd/cpu-fr30.c
@@ -448,7 +448,7 @@ b418dc9e0082fd3cd99b74bbe4b21662  bfd/el
 40cbaf8a1ebc7495016672b264d9b2b9  bfd/cpu-riscv.c
 dc7a1818389db5b1a7be3c8c5f07de9d  bfd/cpu-microblaze.c
 e5f50db9fb5c91581d5e66179fc3ff8c  bfd/coff-bfd.c
-fc4ad6786bc11c7ff3ac383e9c02eafe  bfd/libbfd-in.h
+0f4d5f051a9b724a8eeef5ad589a4adf  bfd/libbfd-in.h
 826d7bd2a8890110d7d56bd51543d605  bfd/cpu-m10200.c
 3f8878b7beb8fda7df2fedab47c3f6e8  bfd/cpu-tilepro.c
 1616089974633cf0fb24b7e9152a7f47  bfd/ChangeLog-2008
@@ -697,6 +697,7 @@ eaac0cdd8ac2b8c31194798a65896321  etc/Ma
 9201b6d74d22cb680dc60633857c89f6  etc/ChangeLog
 48803ea66a5aa68af0c6f226395ddb42  etc/configure.in
 4061bfaba2eb703e2a1a5f6ea2dfb6d5  gdb/xtensa-xtregs.c
+a858870ab7d4043b7114dacc3dce5d8b  gdb/run-on-main-thread.c
 cbb74cae47b3ee140382c8cf2ae9d28f  gdb/config/nm-nto.h
 3f42885aafe669fe9cd726e9e5f0d2d0  gdb/config/sparc/nm-sol2.h
 6f77e81e9901631d875f51e72983e548  gdb/config/djgpp/README
@@ -737,7 +738,7 @@ fd601b5312a3f82c5f513f8788d83e9e  gdb/Ch
 cc2084317970add66c3a0a173724b149  gdb/gdb_regex.h
 5eba1ff21922e43de2653317d14042c1  gdb/defs.h
 0e6aa81313c3e27623e048d35273c94f  gdb/observable.c
-4084698cbbd05b8aeca7f8891566d05c  gdb/aarch32-tdep.c
+8a9c823d45f5c64c1ff7a8ccf2faa37d  gdb/aarch32-tdep.c
 e5e589fe4f10abb8957a8c2e4cddb7f8  gdb/ChangeLog-1995
 b01c12dfbe91ef5bc2884a40348c3e5f  gdb/solib-target.h
 c368c37ef4ae857d42c714251848daf3  gdb/mn10300-tdep.c
@@ -752,7 +753,7 @@ c923fbcaa47240f82d7ef756c59c87ba  gdb/Ch
 644f2141634d41fa00b5cbf3b61331d1  gdb/frame.c
 f58a6ef9094881fb0797296e47d6358a  gdb/i386-bsd-nat.h
 872be449ea0ede048ac193747d131870  gdb/ChangeLog-2002
-d83770b49f7f4ed6e38722733a915f3a  gdb/maint.h
+02e431732534d52ead450b6d33a6ebba  gdb/maint.h
 c53d011c44de38f7035cdc4592a6c648  gdb/microblaze-linux-tdep.c
 3883017d85f3d418e11b1e486c651f83  gdb/unwind_stop_reasons.def
 15d7db35557a6abedb31d14f59624d51  gdb/bcache.h
@@ -775,16 +776,16 @@ e4ad0e0363c34db7802550035d3757aa  gdb/tr
 ffb3b80a0279866c6948e1131f589266  gdb/gdb-demangle.h
 02f0c034ef0f6c556acfed96a299d6a2  gdb/process-stratum-target.c
 78c6359a047e4d5483a90c021196a18a  gdb/ravenscar-thread.c
-f0140374c2516eeff1de5ea1fced3d9a  gdb/Makefile.in
+58ed9442653c0a565056a4af93f393b2  gdb/Makefile.in
 a76da13e8bc37fdb10451c8e325b8baf  gdb/btrace.h
 ed316f4adf752b73da1c357437cfa771  gdb/x86-bsd-nat.c
 2cc0e89d09628e04609b0d799c1784bf  gdb/windows-nat.h
-c82987de8310e2bf54a41501beea3df5  gdb/sparc64-linux-tdep.c
-0098668090ad04f88170a17025cef2c9  gdb/gdbtypes.h
+abd6c78ba2ba4e76bbdfe089c8f88265  gdb/sparc64-linux-tdep.c
+af6e6bf4407d462a3b8c6811e3130aac  gdb/gdbtypes.h
 a3e2eab3f675ede38d26697497bc0000  gdb/sim-regno.h
 e6441bf52ce0c783b9536b4cede70f4e  gdb/mips64-obsd-tdep.c
 08cfa0e1d1851e99aae2024bcf989b74  gdb/ia64-libunwind-tdep.c
-94a9b6d47081699fcb69fd0ecd512db0  gdb/rs6000-aix-tdep.c
+161075dc6935d2df14e3616460c60d25  gdb/rs6000-aix-tdep.c
 5b7d600fa479574abbf7c34722f49b28  gdb/macrotab.c
 5c1eb5863bd908ee8d3cbc89841b2329  gdb/rust-lang.h
 eea46dc745ad41c3c792bcd632b2fc18  gdb/agent.c
@@ -806,7 +807,7 @@ a5843e056f4a29811ef70df0054a6998  gdb/li
 c071aa7abc6d6ef102c20b448276c19b  gdb/solib.c
 53cf114ff5719cd047da9d38dd318599  gdb/ChangeLog-2012
 42b9f7c51223e595f66c2210064be682  gdb/ChangeLog-1990
-0c1f2fa9c224c50a0024e25be27c9f14  gdb/nto-procfs.c
+ebd0f97169ea5063dd7de47beed2098c  gdb/nto-procfs.c
 626a2513f9bd8417f3e13765d7bc78f1  gdb/d-exp.c
 7e0f4daebac998faa86313d6b6c7b754  gdb/infcall.c
 51b52961f790609827822eb71b4906dd  gdb/tracectf.c
@@ -815,9 +816,9 @@ ce736dbe663f54bda1bbf9f6192271c2  gdb/re
 bbe47b4b5324261b91d3c2241c9fd1cd  gdb/c-typeprint.c
 aaba5be6cbb9d783df71def1db3822c3  gdb/xtensa-tdep.c
 2e53e0b3e32b64a7ab61addbe43704db  gdb/or1k-linux-tdep.c
-466aa85c536be9a3433438dc2951c02a  gdb/top.c
+2a4493a9e3593e861beed66ca2f13499  gdb/top.c
 8d79f8f089a47be11386029a964cfa99  gdb/python/py-record-full.h
-33b83c6e0fdea4b3a6d17cd64e61f9bf  gdb/python/py-cmd.c
+67e134f107fb2e54c3b3d00ecb90cb1e  gdb/python/py-cmd.c
 6c72fc62b04884b670d728ade6b79ba9  gdb/python/py-infthread.c
 4b9f990273ead540d6b8b11096660791  gdb/python/py-continueevent.c
 462e4f315910547a4ebbd3646fe10d58  gdb/python/py-all-events.def
@@ -859,13 +860,13 @@ d5162dde02f2501227aeec72e9aa3156  gdb/py
 5e2170253929107830a4dd030c700543  gdb/python/lib/gdb/function/__init__.py
 9125af5d3de55ee79d9812049e63e938  gdb/python/lib/gdb/function/strfns.py
 410a6e8b8665c3b251fda88a9ee40775  gdb/python/lib/gdb/printing.py
-88a6a4ddbe38e43ae1365175a5d255ac  gdb/python/python.c
+40d22a7620ab021ae0c4af9942550fbc  gdb/python/python.c
 05d7fd26111a996cc9993913343ec331  gdb/python/py-inferior.c
 8dbcd1618d6cc297d0adda8e2c4c6a0a  gdb/python/py-symbol.c
 058b9a269553099a1c670bd7bc892a15  gdb/python/py-block.c
 ee0e2adb0e0067991d6fecf09da5b789  gdb/python/py-events.h
 b832b12bc56b70a00fb2d62b51330c67  gdb/python/py-ref.h
-c0cf46f9f387771667faeabd1d6c2ae5  gdb/python/py-function.c
+f2190524281e67e4141d1bb797b7c898  gdb/python/py-function.c
 74e656f5ceca242e6452dc9cb0ed27ab  gdb/python/py-record-btrace.h
 fc27514c5c3646abf4cc107120c2bb09  gdb/python/py-framefilter.c
 2d52638a41adb795b8a4d9197d5c955b  gdb/python/py-gdb-readline.c
@@ -920,7 +921,7 @@ deb9ce3a196ff161eceaa19b6424af5a  gdb/ri
 4653c248deddc02ce4b1c4e8267a6569  gdb/auto-load.c
 6b3894d0fc586b052969976d990132a5  gdb/interps.h
 fb0f557a46592d6e03288e2eed21da18  gdb/arm-linux-nat.c
-fb473ecfacec2af1776a48c420cee93b  gdb/arc-tdep.c
+b99f3f6ec2c08b6801c097e3d9f2ff98  gdb/arc-tdep.c
 c196c06378d1d5e587ef6de8468bc763  gdb/sh-tdep.c
 18d252f56f58d398f59c170e417216ce  gdb/linux-tdep.c
 8ee2919c7282a4e26f1b4359a2c88c54  gdb/hppa-nbsd-tdep.c
@@ -976,7 +977,7 @@ b516ff00780fcce8855eab106416697a  gdb/dw
 af0985d648de398a33ca6e6f0632d0ef  gdb/gnu-v3-abi.c
 5f7961a97b9443179074b345b9491d94  gdb/extension.h
 34856e49dde5199e3b63e9f0f4e1c86e  gdb/reverse.c
-2e16031833ae3f9207793b42f3ea653c  gdb/dictionary.h
+2a6fef2f16b898ae4148d3adae7ae3b8  gdb/dictionary.h
 206f338681e0c7f1b0c85fceaac447fd  gdb/x86-linux-nat.h
 24dafe04053931e031169dcafd928b83  gdb/sol-thread.c
 02601273c3288de3fa9c0c068f5f18db  gdb/xtensa-linux-tdep.c
@@ -997,16 +998,16 @@ a6cf3c46df0fd70b6d266a1db9c4567a  gdb/pp
 4c2b99ac1738ac1c9af01497f7169127  gdb/arm-nbsd-nat.c
 e29e38bfd5dd34ec69271a3378013e6a  gdb/ser-unix.h
 10f1ab52f1493708bbbe37fd10ad91dd  gdb/inferior-iter.h
-a57677b1ee596d9d19609afd283422f1  gdb/csky-linux-tdep.c
+1edb0611df86e0a068f2a8765dfeb5e9  gdb/csky-linux-tdep.c
 73cbb81e1354da382c4a49f917e12f09  gdb/utils.c
 90e56dea65beb67443d6c83cbc5fed7f  gdb/ChangeLog-1997
 0d5ba3c2e32c43e5417a9d08edfdb968  gdb/trad-frame.h
 a7d91380ff4dd9e0a720081f7a55257e  gdb/arm-tdep.c
 885f2d2bac75f91f4bcc343522f127c8  gdb/aarch64-fbsd-tdep.c
 dec9d980acd2133512f6907338258498  gdb/cris-tdep.c
-a65ac56501fe0a3a173d15a0a0dfabf6  gdb/dictionary.c
+b7e5a5eb46b2b4eb568834549b6163c4  gdb/dictionary.c
 ec6cb2c74194cbbea66086050bf84b3e  gdb/cli/cli-option.c
-1110f9665e7e5e87ad3517cbfa54e1d9  gdb/cli/cli-style.h
+f1b58bdfaa79c7dcc810c8dbf1e6a91e  gdb/cli/cli-style.h
 682de2d88e1bf7fe95b07b03b0e334cf  gdb/cli/cli-dump.c
 0e0572092cff3fd670610e39cf89a72b  gdb/cli/cli-interp.c
 be38836f5b8d23456edf044e0c440d3b  gdb/cli/cli-script.h
@@ -1014,20 +1015,20 @@ be38836f5b8d23456edf044e0c440d3b  gdb/cl
 c2490ae95a1db8708818fb0b80470ee4  gdb/cli/cli-setshow.h
 721e47f0361961749a00b546c0ac506b  gdb/cli/cli-setshow.c
 c44242b7139b3bfb6e107f716e8dbc28  gdb/cli/cli-interp.h
-5ea121c6fa21e0f4258bfd0bcaf07c8b  gdb/cli/cli-decode.c
+5ce8120f39cc0c6389cf0c74eba0ac36  gdb/cli/cli-decode.c
 e302ebca6e9393f5322574ab5eef531b  gdb/cli/cli-cmds.c
 7ea598dfd3e54c135a690b36f61bfd8c  gdb/cli/cli-utils.h
-146c361946c2f6abd75c18a9b39768c0  gdb/cli/cli-script.c
+5815b00432331e6c84f6a89f9a0c1032  gdb/cli/cli-script.c
 6dba03ffcd4179e20aa50a116f920993  gdb/cli/cli-logging.c
-fb92fe19241f8a516bd6a0922479e78f  gdb/cli/cli-decode.h
-6670d5848e05f687eaa447748d6e9ed8  gdb/cli/cli-style.c
+56662ecc45eff5d68850ed1ea3c3a9c4  gdb/cli/cli-decode.h
+ce9e4d25454b0aa061b6e7ba88a24331  gdb/cli/cli-style.c
 cd657a4e8ed2d45e7bd6bac5a702c10c  gdb/cli/cli-utils.c
 09304ec3c1277123e9d2beff2a20863c  gdb/cli/cli-option.h
 00f89ff2b81028c32352996aa07f7b4f  gdb/copyright.py
 e028b7abe14710c81376c8dba0e7174b  gdb/cp-namespace.c
 21b85dc2ed09d1125c8ab4fbdb043c7a  gdb/notify.defs
 82899e567314d0cadf3c96f25d6548eb  gdb/bsd-uthread.h
-8a87c501fe518b605668725895d49cec  gdb/inferior.h
+04a81d92a29c02f77e16049f1b9c05ba  gdb/inferior.h
 123020c82ab80c6c777cbff26d3f4c1b  gdb/csky-tdep.h
 1fd63a67946e65e50c4e9ea89a7714d8  gdb/reggroups.h
 0995979778608fe7203391a85d13e743  gdb/copying.awk
@@ -1049,7 +1050,7 @@ e7e6eaf8ad874ef36051184e9c509085  gdb/se
 e75b23e6e87f65fbe648895cb8c46e18  gdb/ui-file.h
 5e2ee5e3f08e842d90bdc20c2f96df9f  gdb/user-regs.h
 ff6f680f23dad45d62b0b88e006cd1da  gdb/PROBLEMS
-958564bf0a22f7bd2dfec63fc5241383  gdb/config.in
+2bc43aa63f04bbcf4e8ce47ae8480744  gdb/config.in
 a6611d644d27479184db42627778c689  gdb/configure.ac
 752cc726423f319218ee7048b5dc7d38  gdb/ChangeLog-2015
 31b7ceb93c53930455100165bb903bb1  gdb/amd64-sol2-tdep.c
@@ -1059,15 +1060,15 @@ a6611d644d27479184db42627778c689  gdb/co
 cc4a8d780d09dfb64ad4a3f9e65f97ce  gdb/README
 726c7279928f259999c506ca13b9cd8d  gdb/riscv-fbsd-tdep.h
 ee4a61e6937e01529f64a6d89f2f4613  gdb/fbsd-nat.h
-4c7745fc5a005d4a68eea43ea0e51311  gdb/inferior.c
+cdea5d6f9bac90f1cc2253a8ac6588c5  gdb/inferior.c
 cf4bf55d52b3fd322e1e505aa0676578  gdb/mips-tdep.c
 85bb40c5d02876059100091fbfff9353  gdb/solib-dsbt.c
-75ac97711478c9b20f9d71273776e6a8  gdb/minsyms.c
+bbcb64a09dc92b845d1b65dca6426240  gdb/minsyms.c
 f723363e60108c880e59b753662acddc  gdb/i386-darwin-tdep.c
 eeeb11bd5598871af4fab7bd1438faf1  gdb/m68k-bsd-nat.c
 ac941da2de4682fd470093be06df6fc1  gdb/linux-nat-trad.h
 7b8a5048cfb6f899a8199897f0864c8f  gdb/ChangeLog-2005
-77ba08df8184065661494f9888ac8b7b  gdb/event-top.c
+ee0beee388bb6cca37bf2360ee1602e3  gdb/event-top.c
 141fb605ccd4c086d7e66e6086581201  gdb/mem-break.c
 22f0b85440bf90f031e702fdb51a4f3b  gdb/riscv-linux-nat.c
 8ac0cc460149d894ba660ac1772b7a97  gdb/charset.c
@@ -1111,7 +1112,7 @@ dfd0ab5839c6a87d483aefe22cc49e6e  gdb/sy
 7c8eb7c6906c776cbfca2e4bba158002  gdb/syscalls/ppc64-linux.xml
 b7682d3ae7df80ad208a73c734a253a4  gdb/probe.c
 6cfc687fe0d53a8078da98386f81c346  gdb/osdata.h
-203e97664e057e9bb89b6b0e802d6a0f  gdb/s12z-tdep.c
+76ea59a6c0999f0376aa65e389363f53  gdb/s12z-tdep.c
 1ff8f75e9c2fe639c6e1b18d250e874c  gdb/posix-hdep.c
 99bfd70f9c0d6881ee7ee7ff07f7c447  gdb/filename-seen-cache.h
 126cc9756fd3896d543d894f7253a6b9  gdb/varobj.h
@@ -1127,7 +1128,7 @@ c19eb344fc98390a193de2528fe6a7ed  gdb/am
 274531d49f64f6aa88bc4831f38bb40c  gdb/amd64-fbsd-tdep.c
 3d6f418f4f15072102a58a25ce42023f  gdb/p-lang.c
 eb99f2f702801759ed86400d4500e9b6  gdb/ser-event.c
-f6de633f57fa3f3b2845fadf671235f0  gdb/aix-thread.c
+677330ea51fe9f01545e4b642f6aa120  gdb/aix-thread.c
 382f208e56f5011c23898c3e37e8a537  gdb/arm-fbsd-nat.c
 bbfc70529afda405460847dcaa7ac7ea  gdb/dummy-frame.h
 243424d63713085e363c9ab478ef7a22  gdb/i386-darwin-tdep.h
@@ -1141,7 +1142,7 @@ f98c74d8d18b873c82c8fc840711c2f9  gdb/me
 4f465abeee57fc8d8c68a1b88917974c  gdb/windows-tdep.c
 14b7b59842ba57eaf6f7e3b4ed70a279  gdb/coff-pe-read.h
 21507829ca1f1fc0b51e58710ea79e61  gdb/go-lang.c
-cbf5f47d9698f7aa4d3f5a75e3168dc6  gdb/infrun.c
+0c2a5681b167b4b38c40697e2d9d31c4  gdb/infrun.c
 c450b4fedef864650f5f53610decac0f  gdb/ppc-fbsd-nat.c
 f317cde2d1b97efdeb83c3a4700df844  gdb/jit-reader.in
 e3eacfa14bfda41e07058fd6c5cabdc6  gdb/darwin-nat-info.c
@@ -1153,13 +1154,13 @@ f9cc8b094bb2d94a31214e353808d959  gdb/re
 60b4873a6bdd481029ee36a2c1c9280b  gdb/gdb_buildall.sh
 d0968c7adf9964741d77eef328cbb935  gdb/target-descriptions.c
 14f14413e6f9397edd41ce8b7da5aee5  gdb/target.c
-2c2b564c141fab1ac6dd294021f0d4ce  gdb/remote-sim.c
+8ad91bd6c1979a05d058b1ae52274de5  gdb/remote-sim.c
 ab960dd28873265f19e9a83458aa498e  gdb/rl78-tdep.c
 aa2a7f6fd9f90abd11c4788816931fa6  gdb/i386-sol2-tdep.c
 f0f0f42873330be830a2ed8ee825e2bc  gdb/frame.h
 cf7a4b2f598a72e543dd03779502a87f  gdb/darwin-nat.c
 cd48a447305aa41ba9525cdf1cdbc876  gdb/symfile-debug.c
-8f6a4b3b59e68fb6ec0d06aebe3aa217  gdb/stack.c
+4ab35895f5bcfd25d8b616d20cc13f2a  gdb/stack.c
 dceecd1f6b79c70b072c20fe1322e39f  gdb/ser-tcp.c
 aef891e489ec61945aa539060447dd83  gdb/vax-tdep.h
 923e62f97e0d12603992f06db4646984  gdb/ptrace.m4
@@ -1175,7 +1176,7 @@ ce8e906ee5a9523e760c2ac9d2b7fd5a  gdb/db
 a12c129c6a322b6da6f3be28d5c64855  gdb/remote-notif.c
 1b9023495f4606b354761e1adc7fbf38  gdb/aarch64-linux-tdep.h
 5241e5be3915f50b85756f742ec519bd  gdb/aarch64-linux-tdep.c
-777a3025554a9a04f15901d6c2e868b9  gdb/f-lang.c
+9ea56b4b5732ba3a33ba731792957d2e  gdb/f-lang.c
 5849b004ac8a54dad31586d8124b58ec  gdb/break-catch-throw.c
 3456e2eb17d78fe98353c160e67c309d  gdb/rs6000-aix-tdep.h
 fe457323b648ee915db69d8eca7fe933  gdb/gnu-v2-abi.c
@@ -1191,7 +1192,7 @@ b57cda336e0adf8ed7402d4504ea1bbf  gdb/m6
 3e7ef614cc92115ce3aa3634b318e752  gdb/warning.m4
 2462cfa95e371a4f1e1e843574681c55  gdb/ppc-tdep.h
 7ecf5a6e96d723b7440604bf944d9079  gdb/dtrace-probe.c
-ffb73c16332236ccb8a9eab222ba7030  gdb/aarch32-tdep.h
+37a7627b8b8fd08a9c1d89cdac8d2d2f  gdb/aarch32-tdep.h
 aa0a6e756d88ffde87f7fde6b143b292  gdb/configure.host
 b08fe1e6c3db19cb8a9ac1d4d56caa2d  gdb/observable.h
 3f2670e44833c7cd879bc3e6122fd045  gdb/x86-nat.h
@@ -1199,13 +1200,13 @@ da569d364e8c66dc7bf7096eb628cf41  gdb/li
 ac248e274c2c760c953e346666672b33  gdb/c-exp.c
 06d80438c468e3b5e61b2dec2ae1d7ef  gdb/alpha-linux-nat.c
 cdaa654bddaff716531556c9f599dfd5  gdb/type-stack.h
-6cc1b6b22d9d045cc47121da5e9c34e4  gdb/ada-exp.c
+57bca29613546a9cbc8fcf5f847da7d9  gdb/ada-exp.c
 87c90e30f0cd3c13664b7161960aa754  gdb/tilegx-linux-tdep.c
 304a177a9b8e8e43814a4388158b470d  gdb/mips-fbsd-tdep.c
 ad0a28559cae16d5c6917cd8223dec0f  gdb/m32r-linux-nat.c
 963c0b6541094fe70dd3a064c26c13f9  gdb/sparc64-nbsd-nat.c
 96b992596bf1d8f56076097f3c55b099  gdb/gdb_bfd.c
-50783f72bb1fd839c8ef0ec09c0da32f  gdb/NEWS
+dd0a66bc41611a3557b1ca0bca200ce9  gdb/NEWS
 97fdbf06d19ca02ff16730e400dc2cfc  gdb/x86-nat.c
 80a4f4781f91d134f9322ebbea92bec8  gdb/dcache.c
 c4f2c8bc152abb23fccef51af4ead140  gdb/ada-lex.l
@@ -1244,7 +1245,7 @@ e5d8607c145dbb29d18b1f2ef8ceb08d  gdb/th
 9c23f700bf128acd07789bc1782ab4c1  gdb/target-debug.h
 27478eae1fb263995247f2f02d8e3195  gdb/ia64-linux-nat.c
 1de7a7437734dc4d54475a91e5adf50d  gdb/cli-out.c
-f0da7f39bc0a7ab9ad50e6dac258dab3  gdb/main.c
+889910123d7a497e30ea7c457f37cbf1  gdb/main.c
 d50de449e9c5cab033b421990b667cb6  gdb/acx_configure_dir.m4
 8f1ce8d07c78de019b75982aab7be105  gdb/proc-service.c
 a5b9e71c4651fdd32c99b54c632efaef  gdb/inflow.h
@@ -1262,39 +1263,40 @@ b41211493d2874762ee48e4e202bb832  gdb/bc
 e82e1a53dbb63d792fc8645192a4b2cb  gdb/gdb-gdb.gdb.in
 6de6b99fba813f41cfc34f9f3a3ee100  gdb/rust-exp.c
 3003aeb2f0a62020daf165042967653a  gdb/i386-linux-tdep.h
-b9b82b0408fc41d8278a0c115bbe779d  gdb/tui/tui-winsource.h
+0cc7848cb02c6994bce128c6dd8d9094  gdb/tui/tui-winsource.h
 4938d1612eed96c389ba7d89136a6fdb  gdb/tui/tui-stack.h
 645a0d06902d4b7d5ac946f9f056c2ff  gdb/tui/tui-disasm.h
 473e3a7211b9b188775a4d1cdb000069  gdb/tui/tui-command.c
 a12f3617ffba20c72097f7acddc82c68  gdb/tui/tui-hooks.h
 febe04e7d1eeaa9760b3fa7169099848  gdb/tui/tui-hooks.c
 56dd0b48c0031697a3d5efcad2da47c3  gdb/tui/tui-out.h
-55762ae2032bdcda921479b1f7172ecc  gdb/tui/tui.c
-86e5b78ad38c43311995e5f052ac9b67  gdb/tui/tui-disasm.c
-1a89bc00e9b0a9a632fbef244118a11c  gdb/tui/tui-io.h
+11bbc056347b1e7d7a6e7b26003867b3  gdb/tui/tui.c
+25b1223a16e852b4068e95e52a6c50cb  gdb/tui/tui-disasm.c
+f5b7f048f5d7bf39ba6641b531a97636  gdb/tui/tui-io.h
 1e0bb38c8b363e0d18ad25dbfc573ee0  gdb/tui/tui-layout.h
 f61c26618cd1a3106c3bba05f1626a52  gdb/tui/tui-command.h
 51f6c905cf266e1d94505f5e2f083b2d  gdb/tui/tui-stack.c
-ecd9cf003546126b25076a1c554132ea  gdb/tui/tui-source.c
-18576345e06a2237a1a2087538f8ba3c  gdb/tui/tui-io.c
+21cba99dbe52aa63198186c73b863671  gdb/tui/tui-source.c
+debbb649e8312c71265a504d33e63bcb  gdb/tui/tui-io.c
 3751e7eb4c6c6ad085e2c1db4f35e025  gdb/tui/tui-layout.c
 482795171785083441ed13601c879126  gdb/tui/tui-wingeneral.h
 a62f7a678d56cd4bfbd984ac2ba973bc  gdb/tui/tui-interp.c
 23d545bd050b58e374a16359aa43daab  gdb/tui/tui-source.h
-93586e35d76bf24a0a06836a057a2a9f  gdb/tui/tui-winsource.c
+e6ad8bf4caaaafee7691cbbc56229f21  gdb/tui/tui-winsource.c
 f4ab8011ea7e23cabc6b4df15fbcf261  gdb/tui/tui-data.c
 f24255c78455cae3d79938aa022f7af0  gdb/tui/tui-regs.h
 47166d0c2ae51670d0eb3d2cb5379446  gdb/tui/tui-regs.c
 75c9dc88d38c06de1770a866dce36db6  gdb/tui/tui-file.c
 db9e1004ab1d2295d604d54012a3f355  gdb/tui/tui-file.h
 0415f3bd7a379430b752618c1e8c7cd4  gdb/tui/ChangeLog-1998-2003
-4d8b6dff9303df97ae5904c5f67d14ed  gdb/tui/tui-wingeneral.c
+19a1dc415e0872cf86552d2fd3d76792  gdb/tui/tui-wingeneral.c
 db080741beda79d95dd9faea631a6647  gdb/tui/tui-out.c
-ac7a1e3debe8dbae5cd578549f823c2a  gdb/tui/tui-win.c
+6fe02bb88026669e4ebc73b56ac385db  gdb/tui/tui-win.c
 aa7596d6a9a59de31d516173c2f4b159  gdb/tui/tui-data.h
-0ce586573e6740f65110921c31318d98  gdb/tui/tui-win.h
+8f0b69e7b27dcf8f451bfa881554fcf1  gdb/tui/tui-win.h
 6933bbe7dc97cb5d6287bd4b87132bce  gdb/tui/tui.h
 1c4827e1487d0d3852b24fc243af7a8f  gdb/target-dcache.h
+494954741fe33105057d00270b597a02  gdb/run-on-main-thread.h
 5c594f36a3a4c1cd26c04c565181c092  gdb/ui-file.c
 43b1580f440d14ab98d54191fc2ea29b  gdb/m2-exp.c
 b05d438c126e44cabe19eb5c84fc92cb  gdb/ser-base.h
@@ -1322,7 +1324,7 @@ e702c76e3ff96a6c491fa0781e028a59  gdb/se
 28c0a137c3fd5a9c49015ea95aae8780  gdb/arch-utils.c
 499d9b971299640d8c2db6b2d0e5d3c2  gdb/cp-valprint.c
 df393c602e6b20bc1b0caa1b02df828f  gdb/disable-implicit-rules.mk
-70dcd877ce499089b48d18d5dafd036a  gdb/dwarf2read.c
+822d1296479b56e5a791e1b6cfc9838f  gdb/dwarf2read.c
 8f9dcb34c25a585309cf4701768ae8a9  gdb/or1k-tdep.c
 3b50204234e7134ded67613004098c2e  gdb/amd64-windows-tdep.c
 e4708e4b23e4e6ddd07c7245736d37b3  gdb/testsuite/config/cygmon.exp
@@ -1794,9 +1796,11 @@ d8cbb532bb4604e351ab96e709d9a35f  gdb/te
 bbff496566f190853c0830bf572d6d95  gdb/testsuite/gdb.mi/gdb701.c
 eab0470af2db6fa0a74f0210ac7aa818  gdb/testsuite/gdb.mi/mi-pendshr2.c
 4e7ea6d0196365658f3360667f66c21e  gdb/testsuite/gdb.mi/list-thread-groups-available.c
+01a2cf9531398d3b56f3cfe96efd3d8c  gdb/testsuite/gdb.mi/mi-sym-info-2.c
 55f4d0c14001f391a9996d256eee5735  gdb/testsuite/gdb.mi/mi-cli.exp
 a17be9805328bfb71efef55afe11a928  gdb/testsuite/gdb.mi/mi2-cli-display.c
 4a2bf3b398634258ffd3e7dfcb198354  gdb/testsuite/gdb.mi/mi-catch-cpp-exceptions.cc
+9133c3c81b494ccc9dae783da41957f6  gdb/testsuite/gdb.mi/mi-fortran-modules.f90
 53e4c2fe233716e226cc10dda91bf9ca  gdb/testsuite/gdb.mi/mi-cmd-error.exp
 6af8ab77eefa2c0852b0ee5542ee58c6  gdb/testsuite/gdb.mi/mi-dprintf.exp
 01b7c91a05b59bea58f0740ed9fad76f  gdb/testsuite/gdb.mi/mi-language.exp
@@ -1810,6 +1814,7 @@ d842f3134dbac91b77ca50d320988178  gdb/te
 cd6c9868a368ccac32e341ae2d9bf168  gdb/testsuite/gdb.mi/vla.c
 3e98e578c2e3e169d47c5840618dedc6  gdb/testsuite/gdb.mi/mi-nsintrall.exp
 13d565b4ff8084f9b7a1124ad70b0710  gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state-mt.c
+7d2420dfef4635ccecfc1d6d0b9bacb9  gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90
 f52f494539b4016d5037a6368235c8c3  gdb/testsuite/gdb.mi/mi-breakpoint-multiple-locations.exp
 6c2ef1e6d8755b51b964f78fbda2571e  gdb/testsuite/gdb.mi/mi-var-list-children-invalid-grandchild.exp
 d37e1a5878a7bd039e6cf5828cd20065  gdb/testsuite/gdb.mi/new-ui-mi-sync.c
@@ -1874,9 +1879,11 @@ c3d96db14f550eba3d63fdb116bd03db  gdb/te
 0a4e0653a70b945cab192cec378b4199  gdb/testsuite/gdb.mi/mi-complete.exp
 b7af8651b2953285ecc560a1ab651519  gdb/testsuite/gdb.mi/mi-var-child.exp
 eb42cc01ef5b7737073f82b6b1e25fc6  gdb/testsuite/gdb.mi/mi-var-cp.exp
+aa72c9eeb4f4d7034731458617b8303e  gdb/testsuite/gdb.mi/mi-sym-info-1.c
 3b642b7e4302fbf6bf56235e6ccc7e00  gdb/testsuite/gdb.mi/new-ui-mi-sync.exp
 e7cb20e68fc6bb8dfaf4a51dd9cad8da  gdb/testsuite/gdb.mi/pr11022.c
 3dc1b104660ab4c437b5d8eee5ba1760  gdb/testsuite/gdb.mi/dw2-ref-missing-frame-func.c
+481031b3fe16f4dd98c268ea82d92d45  gdb/testsuite/gdb.mi/mi-fortran-modules.exp
 dafea5ce5b67848d17781aba9106a646  gdb/testsuite/gdb.mi/mi-until.exp
 6f3f75b9ab538b2e2c0c265c84df43ce  gdb/testsuite/gdb.mi/mi-linespec-err-cp.cc
 6fae9a7302efd1408dead21e8aa07364  gdb/testsuite/gdb.mi/mi-async-run.exp
@@ -1905,6 +1912,7 @@ f525e617551741bb042b36a16da75346  gdb/te
 943eaf98cd48863c39058b07604f860f  gdb/testsuite/gdb.mi/mi-catch-cpp-exceptions.exp
 ccd01123ef1ef463ecd1f0cc394dcebd  gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state.exp
 2ee09bceb4e05d993c58fc572a3c3d1d  gdb/testsuite/gdb.mi/mi-regs.exp
+1230de42d306fc698da4736e1f8010d1  gdb/testsuite/gdb.mi/mi-sym-info.exp
 dd9c725b18bf560e560a546ed6405536  gdb/testsuite/gdb.mi/mi2-amd64-entry-value.c
 bb14dbfe59cfd2ed78301914e3c6f5e1  gdb/testsuite/gdb.mi/mi-file.exp
 85d2706223a2de58af6607aea6dd94cf  gdb/testsuite/gdb.mi/mi-pthreads.exp
@@ -2681,7 +2689,7 @@ acbf5cbbd8c3cb209ce83e906b45fe01  gdb/te
 942d57244ba1c8c0ea4f98950177c953  gdb/testsuite/gdb.base/argv0-symlink.exp
 15a87b4b3d993a80899b27d41b7d5dc7  gdb/testsuite/gdb.base/settings.c
 755439e1798546b447128606ffd9ceeb  gdb/testsuite/gdb.base/hashline1.exp
-ef7fbbff529bea789eea6291bd5a21ac  gdb/testsuite/gdb.base/setshow.exp
+f8938fffa36cea5123c00b32f73fabc4  gdb/testsuite/gdb.base/setshow.exp
 3705535fff4480289f0827acb667777d  gdb/testsuite/gdb.base/step-resume-infcall.c
 a1fbd3579f94299ada4d832050f71964  gdb/testsuite/gdb.base/type-opaque.exp
 56324ff69c4ccac8a5e37fe8759887d8  gdb/testsuite/gdb.base/remote.exp
@@ -2705,6 +2713,7 @@ beeea8fe7ff48da86aaa5a01983821cf  gdb/te
 c6f1e38015779a42db246f82444582b1  gdb/testsuite/gdb.base/valgrind-infcall.c
 ef7c7a047fba2b508c2f473fb5290679  gdb/testsuite/gdb.base/watchpoint-cond-gone.c
 448edac9fbe803d6ef3d5e1c71d11bfe  gdb/testsuite/gdb.base/watch_thread_num.exp
+83db0359915d52ae5dd9809d6173c5ef  gdb/testsuite/gdb.base/define-prefix.exp
 9f67035ca8ce8d6ca1037378b1fb293f  gdb/testsuite/gdb.base/solib-display-main.c
 47a30bd3066c93445b26860b86dfc165  gdb/testsuite/gdb.base/utf8-identifiers.c
 e6ace3d0228311eba67632c4e079a26e  gdb/testsuite/gdb.base/fortran-sym-case.c
@@ -2766,7 +2775,7 @@ ca247c5185f5aaeb8181888cec97ab26  gdb/te
 aad099ff8a05fcfbabe81634e5b0f1e1  gdb/testsuite/gdb.base/watch-read.c
 3afe15725519e403e302af55674b7ca3  gdb/testsuite/gdb.base/disasm-optim.c
 9711fde58a1452d8126868fa271fe5a8  gdb/testsuite/gdb.base/sigstep.c
-a191b88f7c0246638607649ab83facec  gdb/testsuite/gdb.base/define.exp
+188ad0e41b2eb240e7ca50862521b349  gdb/testsuite/gdb.base/define.exp
 f0769deff7ae99bf53e6345f40938bf1  gdb/testsuite/gdb.base/info_minsym.c
 d870fa9f4ee390ba3ed1ef83aa9b377f  gdb/testsuite/gdb.base/ptr-typedef.c
 3f963bc74888d52af2106449500bdf83  gdb/testsuite/gdb.base/gcore-relro-main.c
@@ -3241,6 +3250,7 @@ b79aed6cc9f2658cccf95aaf5ab16850  gdb/te
 4d886f1e18af6fb304ab59df6973c3cb  gdb/testsuite/gdb.stabs/gdb11479.c
 9c1baa23773a06d9c47a7d21f294895c  gdb/testsuite/gdb.fortran/pointers.f90
 b824c9e0a13fc5b08176855f5260c550  gdb/testsuite/gdb.fortran/derived-type-function.exp
+46f7ce52fc67210e8d49fc0af636e7a6  gdb/testsuite/gdb.fortran/array-slices.f90
 2f0e2f795a0b8e891cbba84d9d37f341  gdb/testsuite/gdb.fortran/printing-types.f90
 d072447b9539687a5f7ff6d9fac64136  gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp
 0911038011834f9bbedaa9cafdceaf76  gdb/testsuite/gdb.fortran/vla-value-sub.exp
@@ -3261,6 +3271,7 @@ ded7f1addee3c7dab88b985e29b61da9  gdb/te
 f363b967d733be0c744f91b15a6412a8  gdb/testsuite/gdb.fortran/array-element.f
 fbafec08cfcaa1a0a871ef199834bbb7  gdb/testsuite/gdb.fortran/complex.exp
 4d6b1955d6067719c9d9c980882b21fa  gdb/testsuite/gdb.fortran/function-calls.exp
+35450e3cf0f7ce9f233944d70a5fdec3  gdb/testsuite/gdb.fortran/derived-type-striding.f90
 16cee3af4df7062d5a02352621427521  gdb/testsuite/gdb.fortran/short-circuit-argument-list.exp
 09dc65e08eb072d3395f06a07d30360b  gdb/testsuite/gdb.fortran/function-calls.f90
 736d53d0ece32ed7cfacba9b5f771333  gdb/testsuite/gdb.fortran/subarray.exp
@@ -3275,6 +3286,7 @@ b5c48b320404fe67a6eb43f2b2a55a39  gdb/te
 18bf8415a43c6bdd0d58f0dc17e90814  gdb/testsuite/gdb.fortran/multi-dim.f90
 966dd8d569abfe0e8c1a8a13dc4f8646  gdb/testsuite/gdb.fortran/block-data.exp
 eb1b11af62b865da0e1131c5c418b8e5  gdb/testsuite/gdb.fortran/print-formatted.f90
+84bfca9d547dd7b3d0e7c676793021c3  gdb/testsuite/gdb.fortran/array-slices.exp
 8061d9e6f99f63e2360bc8321b37f303  gdb/testsuite/gdb.fortran/library-module.exp
 1dda002ac9e1f2fd5a2c912530bd5ef3  gdb/testsuite/gdb.fortran/nested-funcs-2.exp
 5b4488b46dee8efd670abfdebe93e15d  gdb/testsuite/gdb.fortran/array-element.exp
@@ -3297,7 +3309,7 @@ a52244712b420c89de3d39536a18e14d  gdb/te
 23d5de4f34f6d0fc5fd33534baac6e63  gdb/testsuite/gdb.fortran/vla-sub.f90
 39bb8c8add5476e3ca38f5ee219ddb68  gdb/testsuite/gdb.fortran/common-block.f90
 894cd1c42cc4491dc48b6d6928e8575b  gdb/testsuite/gdb.fortran/exprs.exp
-e376e4207bed46da15eafb20ed3bf1bc  gdb/testsuite/gdb.fortran/info-modules.exp
+a1eb647994f7aec7696a1bbb3cbb015e  gdb/testsuite/gdb.fortran/info-modules.exp
 9ea552c1ea45f06c772c7e090e4c4bc4  gdb/testsuite/gdb.fortran/vla-ptype.exp
 8287b34a073eb0050f2da89e82baf1d2  gdb/testsuite/gdb.fortran/nested-funcs-2.f90
 088fc01d2a072fb3d78fcc1e90e52c9f  gdb/testsuite/gdb.fortran/vla-ptr-info.exp
@@ -3313,6 +3325,7 @@ b8fd51c608bff4b3c1b2180ee1de0ac3  gdb/te
 4cc009298304e303844c11db9fa0f206  gdb/testsuite/gdb.fortran/module.f90
 edc2f85e3f302e8a2ebe0e1a3ea201d1  gdb/testsuite/gdb.fortran/library-module-main.f90
 cdb6a59c77c3a104db50c725d286ae28  gdb/testsuite/gdb.fortran/ptr-indentation.exp
+8f7f90a99fe0409329bf8ae816a3606f  gdb/testsuite/gdb.fortran/derived-type-striding.exp
 55340b24db8533984926072168e714eb  gdb/testsuite/gdb.fortran/max-depth.f90
 da855aaa95733876e7cfa169ad01977c  gdb/testsuite/analyze-racy-logs.py
 6d64dbc77bf895960b91ea27023f1790  gdb/testsuite/gdb.btrace/vdso.exp
@@ -3388,6 +3401,7 @@ bfceab5c07e44efa3352eb9296dfa607  gdb/te
 02de0d315213441b525e8188d45baa2e  gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.exp
 609645a0fe254d28ca4f38c0c567223c  gdb/testsuite/gdb.dwarf2/dw2-anon-mptr.exp
 077af012e972d3d4b51adeed9733bf43  gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.c
+a4db0450a2b856d8ac7cff65f330d878  gdb/testsuite/gdb.dwarf2/imported-unit.exp
 b37cafeac79671ac3889b4d748f803d4  gdb/testsuite/gdb.dwarf2/subrange.exp
 ec20c38b114576838578f500ea05b7fd  gdb/testsuite/gdb.dwarf2/dw2-cu-size.exp
 526715cab8abd8df7a548b4c5e8d3204  gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.exp
@@ -3557,6 +3571,7 @@ e67237d9aa1501a5e8afd2e588bfb8bb  gdb/te
 66dff7abb42a5b191f3df1fb1617237c  gdb/testsuite/gdb.dwarf2/dw4-sig-types.h
 a3c4606db32ff04310e7333e8661f334  gdb/testsuite/gdb.dwarf2/dw2-dos-drive.exp
 36a15fec4a6ff333aabb7ebeb3425cdc  gdb/testsuite/gdb.dwarf2/dw2-entry-value.exp
+558efc91cbb32c9d1e24ea7dab3bd434  gdb/testsuite/gdb.dwarf2/imported-unit.c
 2e77eb8a1ea61aa520441638226c6cf6  gdb/testsuite/gdb.dwarf2/member-ptr-forwardref.S
 1cb38841a662a70e82ef92738ba3d722  gdb/testsuite/gdb.dwarf2/fission-mix2.c
 078cc5d787063d7b0fe833b8499e3210  gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.c
@@ -4077,7 +4092,7 @@ ad7c35ff788ad968c44b9b05d466bdd9  gdb/te
 449fdf67df4f576905fe2d430029f636  gdb/testsuite/lib/prelink-support.exp
 02afb85a1fb26fbc069e4c97b3933a8f  gdb/testsuite/lib/opencl.exp
 0d0ccc80941c04e2e66a189f3faa1fb9  gdb/testsuite/lib/perftest.exp
-8b97b830e429762a19a66126b582538d  gdb/testsuite/lib/gdb.exp
+71f7a5064d73def3552ac214ffea0633  gdb/testsuite/lib/gdb.exp
 544c015f3560780d7f4e07786e8abcc7  gdb/testsuite/lib/compiler.cc
 2ce5f63e3001d2cbd1ad5daf077b18a0  gdb/testsuite/lib/opencl_hostapp.c
 4c4f00f092de08a5b41182a813508d9f  gdb/testsuite/lib/valgrind.exp
@@ -4434,7 +4449,7 @@ a73456a413ec206c45a1c05bede47b75  gdb/te
 3ae360ac3827f64fb894dcbec57961b3  gdb/testsuite/gdb.go/max-depth.go
 68d17058fa82304a192749f0eadc138d  gdb/testsuite/gdb.go/strings.go
 81b7ed6cb92c627d245bd2efc4b953b9  gdb/testsuite/gdb.go/methods.go
-4135a620f5a02521a88c0391ef5b5f76  gdb/testsuite/ChangeLog
+e30c3c4c66b7e0a0a19ca1c9c6ef8207  gdb/testsuite/ChangeLog
 b3f11b21e5921c419a43f93720dedf85  gdb/testsuite/gdb.asm/empty.inc
 f2ba3acca1442df88b4c0ee97da94c54  gdb/testsuite/gdb.asm/asm-source.exp
 f1621bbbb2acbec5adef86d7d9549975  gdb/testsuite/gdb.asm/bfin.inc
@@ -5261,54 +5276,54 @@ fc41122ade5af8a08f4674de7e688c82  gdb/te
 9ac5514a454173af6d2ce46435dde817  gdb/testsuite/gdb.modula2/unbounded1.c
 9bbed41578331d2318d5d7ddb0fe58d6  gdb/testsuite/gdb.modula2/max-depth.c
 29e88756c6c310c96a2006047bfcbe23  gdb/tilegx-tdep.h
-29adfac2b115fa84daefe93bfeb07443  gdb/symtab.h
-2098f2de3a39de7a85a164bb244f7e96  gdb/f-valprint.c
+214e0bd6827421a4af7917d419b87a17  gdb/symtab.h
+518eeb650ede533c76597c3a1c3b5b5f  gdb/f-valprint.c
 b4661232e1c651351e7aab789eebdb61  gdb/gdb_curses.h
 8108dd8f906f2654fecc74958cf383db  gdb/doc/psrc.sed
-2137d294b2283185d4455b26105f3106  gdb/doc/gdb.info-3
-72e7782950eea5d3047dd6ebf829239a  gdb/doc/gdb.info-4
+84073b5ef50f060fd68d13d8ac33f6f6  gdb/doc/gdb.info-3
+d281677c0e6daf9214670579c99354de  gdb/doc/gdb.info-4
 ab0fe311032294b952da80585b8b90e7  gdb/doc/fdl.texi
 5db562992b3f0178f803b66c2b2337fd  gdb/doc/Makefile.in
-87e06791db4b53d8d1b038c3619b44d7  gdb/doc/gdb.info-7
-2d7ca13133bc0d865d2bfcaff43bb96b  gdb/doc/gdbserver.1
+8664b8af390c68001f064d8189d77414  gdb/doc/gdb.info-7
+c6462ef88d87bfed0271b06b82234268  gdb/doc/gdbserver.1
 34e70c52a663f6a691f6ceb17e8b3e48  gdb/doc/guile.texi
 f81a0e00e0cb9e41b078069fb9bedb07  gdb/doc/stack_frame.txt
 a07e6b7f88c558d15d03adeeaca94c74  gdb/doc/stabs.info
-7dd54edc918bd57caf1a4d3417c8dc6a  gdb/doc/gdb.info-5
-d42df361a44cf5783ba89ffc015a2d92  gdb/doc/gdb.info-8
+42fcb7244425d5164637be54e19e8a95  gdb/doc/gdb.info-5
+c881da4f5fc65b37f872aa9b9722039d  gdb/doc/gdb.info-8
 9137c9e47e1692b8efec8e28482aa6fb  gdb/doc/agentexpr.texi
 66674dc351ba95941f422dc18cae24bb  gdb/doc/.gitignore
-cf8aee5f491d64cc7169361a4a39de1c  gdb/doc/gdb.info-1
+e64be871bc86365665ee2fd34a1eb2cf  gdb/doc/gdb.info-1
 d5d06eaf9b4d44aa442a4a281aa9aea4  gdb/doc/a4rc.sed
-e86c4cca28139f6c0678ad31d5b8fa8b  gdb/doc/gdb.info-6
-8fc826744ba080a5a77230f6d5716b84  gdb/doc/gdb.texinfo
-a7dc9ead9a7736ebaea09499d3e4dcdd  gdb/doc/gdb-add-index.1
+cbc0487d8ea7028d6b7a74002e644e93  gdb/doc/gdb.info-6
+c913592b2fb88d4c4788b3559213a0e8  gdb/doc/gdb.texinfo
+fdb5a88e0a2586032e9f9990e03632ca  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
-d0e58ead94e9bbe1579c1a599ed9a0cd  gdb/doc/gdb.info-2
+c0f569997de12da533fb34305cf42fab  gdb/doc/gdb.info-2
 fdd79e6125e56c1eb7e28b2a71d5b48e  gdb/doc/refcard.tex
 6076d300a46651562d4ecd0604442414  gdb/doc/stack_frame.png
-de9bf19369ff9580e2066f8c299ae432  gdb/doc/gdb.info
+e645e6ad3372f7f886939d9c1ed6cbe9  gdb/doc/gdb.info
 8bb39bf41da6a03890e05a9ab1b373b9  gdb/doc/python.texi
 9927faec0d3464d1bc485cd0c69a4a46  gdb/doc/stabs.texinfo
-420556c3da0e97123ce03e5506e56c29  gdb/doc/ChangeLog
-d3a03abcd1b3c3eee5c176109ec2f79e  gdb/doc/gdb.1
-6cc53c6e9e5656748ed9ec759db4a43c  gdb/doc/gcore.1
+90f029c9cdc64ed39ea0be5f07f90b7e  gdb/doc/ChangeLog
+bd1a981830d9e1d39f78e9f2918f9ace  gdb/doc/gdb.1
+7396f7cf684032c7c4aa21487353fcbf  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
-7d52706efdd95b53e2c28aa11643f59f  gdb/doc/gdbinit.5
+fa7c6a0e79e457d3e68c981b4738ea32  gdb/doc/gdbinit.5
 24d4f8b6396da16d9a8dd98281ac40ff  gdb/doc/Doxyfile-gdb-xref.in
 6f3b23a5f42aba8cbac1bcf7329942e4  gdb/doc/annotate.texinfo
 0b3e26fe6db92700f1e51071ff475193  gdb/doc/doxy-index.in
 1716190b9b7ca4294d581e2b27a19184  gdb/doc/Doxyfile-gdbserver.in
 73ec71cd3b2e7f61bc530f19d4b35056  gdb/doc/lpsrc.sed
-f4c6742793e1a0fc464a468c9a433fa7  gdb/parse.c
+14d560d030d6f4d414dc707c461e31e6  gdb/parse.c
 1fbbb184e51da27c54307ec336fda6f8  gdb/fbsd-nat.c
 308628cf14ff3b071b1f409c534fbbfd  gdb/windows-tdep.h
 d08a9379f46f6cbf7f54188e6f7fc001  gdb/stap-probe.h
@@ -5332,14 +5347,14 @@ f99eed23dd28aaa43e5f0241e2919377  gdb/mi
 0d602d583002185b9e5d6fd1db7bab3f  gdb/mi/mi-cmd-catch.c
 682b62f7415d5ae21f988ab7dac31bfd  gdb/mi/mi-cmd-disas.c
 041cdd43cc41c8e8334f9b6ecd6edf4f  gdb/mi/mi-getopt.h
-a933ac3d09ee6406bec4fe8be3ddbbdd  gdb/mi/mi-interp.c
-f1a2202d78f7e766ce4cb95377988621  gdb/mi/mi-symbol-cmds.c
+ebb2ab100f9273e4fbeed1732549fab3  gdb/mi/mi-interp.c
+8a1290c6226a395a3e21a769c83a5291  gdb/mi/mi-symbol-cmds.c
 34898c50b11372898f008f7418d5758b  gdb/mi/mi-cmd-target.c
 05ef63a349fd961b577150eb0b820d3b  gdb/mi/mi-cmd-var.c
 d1b2be78858f84a199c8da4d88bc00d9  gdb/mi/mi-common.h
 90b81f951a2351c88c1b4a1fedbb492f  gdb/mi/ChangeLog-1999-2003
-9fe46998c55457562abe330a2e2662b8  gdb/mi/mi-cmds.c
-7c22c60889b5e3b237f31259b88c55e2  gdb/mi/mi-cmds.h
+1fde500b700dbbf8d4ba228ed3ab4665  gdb/mi/mi-cmds.c
+58dc5f899e3d5638b03277349db43575  gdb/mi/mi-cmds.h
 84f8f333570dc7efbb05bfce804fde50  gdb/mi/mi-main.c
 7330863f8e8705d45e875b1d8061462a  gdb/mi/mi-cmd-break.h
 0f159abe054cbd8446b5a99f0754c479  gdb/mi/mi-out.h
@@ -5358,7 +5373,7 @@ d72c0a28942309f3c94ae825059c1bc3  gdb/pp
 2cf27bcfcc332ddedfd8ffe5a916c02d  gdb/dwarf-index-common.c
 d134a8c83098ecec6847dcbb51c76264  gdb/annotate.c
 f8ef1c4fdc043ed02cb189ab003d69de  gdb/addrmap.h
-86d149e03f56fa2d22a141497fa92bfa  gdb/valarith.c
+59021576d18ed2d162541e09bd8318fd  gdb/valarith.c
 51da586ad00e6a5bbcf259994a0ae484  gdb/rs6000-tdep.c
 3c39c68cc78f76d3d9197dd8e3c8d71f  gdb/linux-fork.h
 66cfa710958741f26aa9fc2a6eb0be21  gdb/dwarf2-frame.c
@@ -5391,17 +5406,17 @@ fa65e5caeea359892241390569065984  gdb/ft
 cc8d949a11ca64c3ccff8b7e92449d12  gdb/tic6x-tdep.c
 652e9b357cacf96ad83c4cd7b134e146  gdb/gregset.h
 1818e224275234a88f51c541c8e468c2  gdb/infcall.h
-897d3bedcd15738a88a00f61d438ca91  gdb/source.c
+9ff17085439c0df277aa143916fbc52a  gdb/source.c
 e80bcdf714445215a7895be33ffe0f26  gdb/sparc64-linux-nat.c
 282b55eac069eb15c13cb719dbab4438  gdb/build-id.h
-bf0601473c27b4db8104675b467cce10  gdb/xcoffread.c
-f83083e30ee21c2bfc65dda78e2dd090  gdb/valops.c
+d5e828332ce4825474128ed81a8c89f9  gdb/xcoffread.c
+f508fce11cec611605079e9bbdd0dc1c  gdb/valops.c
 652eeae5b48e928e984068969b0579d4  gdb/d-namespace.c
-ef4775646b33d6a8f5a970de54a1c748  gdb/sparc-nat.c
+193c3f778f952d6850a601627666682b  gdb/sparc-nat.c
 b0d7765cde908403b2a60a419e8e5e7c  gdb/test-target.c
 9c2ef671f91314480a7eaa8cfcda58b0  gdb/continuations.h
 d3c3774037b52a130908c5b0e77b5519  gdb/infrun.h
-f802fd77fd74b42b7a24e381bb3cefd3  gdb/jit.c
+2439bc100cd31e615cdf3d021e8837d1  gdb/jit.c
 5dd4f42bee6ff8d579a1ff2ffc9b0130  gdb/rx-tdep.c
 b09142fd95c99052976f2670e53006b6  gdb/frame-base.h
 e12e581d2911f2644ad6cf433c0e4a19  gdb/xml-syscall.c
@@ -5424,7 +5439,7 @@ cd9264f4a0a08c80dca6789693d7f3b3  gdb/v8
 ac58e6906cf3e28e0cb1d9f7fcb5376f  gdb/ppc64-tdep.h
 779a71168b43ad3fba7363f1d3d99366  gdb/c-valprint.c
 59b50f3575105c4ffad5887eed3baae9  gdb/alloc.c
-1d12b4099889b84f6819b9d19a1e60c2  gdb/value.c
+2da17404d718d785829c353a2e373e55  gdb/value.c
 277d89b15969db659b113979860c8266  gdb/dummy-frame.c
 26237c9c840d296d3019ace35f5e6e27  gdb/ser-mingw.c
 b6e4670dafc9bb8323887026274d3edb  gdb/completer.h
@@ -5734,17 +5749,17 @@ c622629ce98d348a92a1d82095ac28ee  gdb/ty
 d71fe72add3d11f0bea0d05e69bd4965  gdb/selftest-arch.h
 ff2b2264d3bc2c96926dca89c1596eff  gdb/prologue-value.h
 6ce01f5f6d16f8a7bf879c0bd920c0da  gdb/auto-load.h
-5dd3ae074060cab4ba9805d332dabfb8  gdb/maint.c
+dce587078c693a6ff096e9ac8c76f247  gdb/maint.c
 c086e7b7f948f2285c1cbb4d6656689c  gdb/x86-bsd-nat.h
 a8282658401449c6beef61c9f36f145b  gdb/moxie-tdep.c
-454d5cdceba533b470ed1c7b7c6b426c  gdb/gdbtypes.c
+c09840d78954327b5d5689faf68dd15c  gdb/gdbtypes.c
 c5ffbe634b4abf2108700a75ba62aa0f  gdb/ppc-obsd-nat.c
 11e488d83e18c4036892ff4450937c16  gdb/mips-nbsd-nat.c
 8de7206d485292751ca31a6de7590c3b  gdb/elfread.c
 f15d1e283f9e847ae3b36dc2408ea6b7  gdb/thread-iter.h
 dd5e9cd4b794e2d0b2e0ab3cf71ee6a7  gdb/aarch64-linux-nat.c
 b62b5f777230687f3911fc1e1cdf283c  gdb/gdb_obstack.c
-9079db3b5117a1ccef2979d9a88fa921  gdb/inflow.c
+2de2104b88f329763637969eb7a95ce7  gdb/inflow.c
 5ab96067d16345760a73ed40974c00d7  gdb/bfin-tdep.c
 0bcc5c5f4ef70e70030d71625c0db150  gdb/linux-tdep.h
 1e4f41404acdc9bbc4ddeabc8d2af13b  gdb/i387-tdep.h
@@ -5752,7 +5767,7 @@ dbf06537c23bdc4fb8155bfc7a8c1471  gdb/gc
 b52468a6f6f9622c8cfafd8bf3a35263  gdb/gcore.h
 8f768c4c7417c2c05be096e76dca48aa  gdb/arm-linux-tdep.c
 0cea409b6e8fe72a91f44aa956dd2ac4  gdb/hppa-tdep.h
-ce1ab7d961d1774fa478928d2abcf258  gdb/completer.c
+28d523120309cc6323704a5d86df3642  gdb/completer.c
 e52cd6aeee07bcb30ad90254f6f416c4  gdb/dwarf2expr.c
 f5b912301b8191b05fd28a9d8e4027dc  gdb/vax-bsd-nat.c
 367431cad6c1444071757850b589e0b8  gdb/cp-name-parser.y
@@ -5782,18 +5797,18 @@ c88416a9f0d2988fd610dc1ee314665b  gdb/ia
 a01c7b4b18efc22dbe5cc8662acf024c  gdb/frv-tdep.c
 d6f1771cf6ffce764f036d928cab89d9  gdb/c-varobj.c
 1e08e39cebf71d253881b63cd7f9c905  gdb/or1k-tdep.h
-338aa5b8f24ecb354297aec2ec3a12ef  gdb/i386-tdep.c
-570f9d3696ca76414f8c3afb781aed11  gdb/symtab.c
+552838669dd0cf8bc2ed20b7b2bb19cd  gdb/i386-tdep.c
+1376ee856127fd0fad6684d515c53056  gdb/symtab.c
 b8d75545442a0eb808e403ea02538a26  gdb/osabi.c
 d3170a8bbbd34d38a15902a5b596654d  gdb/m32r-linux-tdep.c
 840e0e0e830e2fd302199c92f049e9a5  gdb/inf-child.c
 de9373569b0f760ec6ee8d2a6c917ab2  gdb/selftest.m4
-123447be004ba7528e0e1235e8224d97  gdb/ada-exp.y
+7cc7167bdd5aa7bf3426a83031e80c1c  gdb/ada-exp.y
 9a068736d3084aadea48ab854945e5aa  gdb/x86-tdep.h
 0cb2dad0557a0517616f3bf6ea822480  gdb/frame-unwind.c
-17ccafc7cc99746fc3338e5bf3457095  gdb/acinclude.m4
+e9901b202d6cf9982cc038eaad71ed8f  gdb/acinclude.m4
 a31e3a75542af8ef237965b13e287606  gdb/arm-tdep.h
-f6a6cefbafd2d84527d2bdc255aa2a28  gdb/configure
+022db154202c2c04247a252117e3fdb0  gdb/configure
 2761ea60a99dfb77555b2a525464d874  gdb/main.h
 7d232cc7027a902f84304848f188778a  gdb/alpha-tdep.c
 a30b3bcd800fc48da1db92bda3997d83  gdb/xml-tdesc.h
@@ -5807,12 +5822,12 @@ a88e31ebdc95dea2e182e90fa3596b09  gdb/va
 2ea7cff28a922f84e6a33e423ffe50c1  gdb/aclocal.m4
 7ebb0bc09809687f5ec86c69bce1d052  gdb/p-lang.h
 54a58e9cfc36eb7b94da0947b41c07f0  gdb/solib-darwin.h
-2caec02fa7592d7230456c3265e16676  gdb/command.h
+192ba68186f6311f70ea4e1e4d65cb6f  gdb/command.h
 05aa0839346a2ef68dc2064615c958fa  gdb/buildsym-legacy.c
 7242736b5bba9098c974d0e015b167a5  gdb/std-regs.c
 90d72be4c884a79ded08fa4fbbcb6b9b  gdb/go-lang.h
 9a1fd6216061720bf8556e23cf224721  gdb/i386-windows-nat.c
-d3a5f3003329855cfba0ad08a7830d5e  gdb/po/gdb.pot
+80b6bb70b8e2bc0845e219872993941c  gdb/po/gdb.pot
 1851bff0653201a488dcae18dde7efad  gdb/po/gdbtext
 7da5f0db2eb697d3fb85524954abaef5  gdb/break-catch-syscall.c
 45a80779559782ef2ebb90e7fc5b4bde  gdb/ada-lang.c
@@ -5829,7 +5844,7 @@ d38535504d883ed3480bb4c0dd414b66  gdb/pp
 137fab3675e658b2048896b5a7f5d7a1  gdb/memattr.h
 9a38a0074f73b566a8cac7d2615897c8  gdb/moxie-tdep.h
 7f33f67bc62c18988b19f18c381f1a1c  gdb/tic6x-tdep.h
-c4fd53ab8a5ebe69ff77f9e6cf82ccca  gdb/dwarf2read.h
+91c566d32d779391c4b033a2fd6a4aaf  gdb/dwarf2read.h
 2df2e6a577389d2a78ef4d7cbefc21d5  gdb/regcache-dump.c
 a28ef3d93a58aad81a6f04ba9d0ed8f1  gdb/sparc64-fbsd-tdep.c
 5e06d10b1356f1d9d51774a8687bb844  gdb/location.h
@@ -5844,7 +5859,7 @@ e3e2430aebaf80b6aca6759cfa9612d4  gdb/nb
 0d4182edc7beb626c56d423668383a2b  gdb/i386-fbsd-nat.c
 094e893d632874e14e92917b8c57c5fd  gdb/mipsread.c
 d4e47464ef8b510c11c547fb163d603a  gdb/amd64-darwin-tdep.c
-10662b6e99413aaeecc13ec62112aa59  gdb/ChangeLog
+100c1f6537f03b0d22e829c4087631a9  gdb/ChangeLog
 2fd8f81fb260df7b31ffaaaa44e1d4b9  gdb/go-typeprint.c
 6bdae112ab8858c8b8eb3e32bc9b5b45  gdb/score-tdep.c
 170c97d0320940cea4fda1d1cb413687  gdb/xml-support.h
@@ -5855,10 +5870,10 @@ b882ca969c2b633c8a8513e0da4dcbf6  gdb/i3
 07403fb44ca46dd8e4c2e5deb96adf85  gdb/sparc64-tdep.h
 961d72c5e50893530090fff4cd4e8d3f  gdb/macroscope.c
 9cfe6317d50afe29f99b750eaa8be877  gdb/proc-why.c
-caa24ebb6bd44a47b30901123b81a3c5  gdb/cp-support.c
+29c05240197249f63dbd680439f4cad7  gdb/cp-support.c
 1de2e2c8bd6fc22a95d8484cbf584e4d  gdb/process_reply.defs
 f62b48ff444e0f85fbbb22c1f2adf0e2  gdb/amd64-windows-nat.c
-c1ee83a319ccc3432d40479402614b25  gdb/remote.c
+094f0ca75a9760cb6f51f070079d5647  gdb/remote.c
 ec36b21691136ef0467817b5aed78b57  gdb/amd64-obsd-tdep.c
 9db106f64fd1c01393d7c4c61909868a  gdb/inf-child.h
 c3753169ffe91178ce189a46e7eb01ee  gdb/frame-unwind.h
@@ -5872,7 +5887,7 @@ dcc09de945cf86f1c77e306e5bf5c1ea  gdb/p-
 9e86e04b2f5733d59adcff89f9eaec0e  gdb/btrace.c
 2c19df9299d1bc883420b4ddd8f8ec0c  gdb/tracectf.h
 4db44dab0d67c700eadf0e385de3e90e  gdb/m68k-tdep.c
-e7a0e526e5cc4ec427c81bcaf180d0d2  gdb/coffread.c
+3c513193d4c65c9854396519b4042fd7  gdb/coffread.c
 3629f4a01bae6eb86b9eacda4a317361  gdb/findcmd.c
 017b0e44acab8e6fe317c80c0b921162  gdb/i386-tdep.h
 0118abe07c4d50638985083868d0db78  gdb/linux-nat-trad.c
@@ -5973,7 +5988,7 @@ ea3a0339e53fcacc45f5b891634f3e2d  gdb/so
 d01f52d121dd717d9096d1fae7d4d8a1  gdb/psympriv.h
 564d8abdb5314346ac78c3b9ef932a9b  gdb/rust-lang.c
 e3cecacdfe4a5f4957ea7a6a3f1d677c  gdb/m32r-tdep.c
-bf4c2ae497539be4b59e542d53c9fcde  gdb/hppa-tdep.c
+fd0cd98207f646eb3f72c949aa0d115c  gdb/hppa-tdep.c
 dea2b5a6b03948793599866325415211  gdb/exceptions.h
 f10ff16a74769a43765d05059c14de0e  gdb/csky-tdep.c
 d32239bcb673463ab874e80d47fae504  gdb/COPYING
@@ -5991,7 +6006,7 @@ d5fd1a463ba492ee6ae7caa6b8207281  gdb/gu
 b0af2c1fe8b7fbbb4114c41a5ca4a2c3  gdb/guile/scm-gsmob.c
 274ff78027afbba831cd959523e5f473  gdb/guile/scm-utils.c
 98e2d89a348c7b80f68305ab6bbe306a  gdb/guile/scm-iterator.c
-fc934ab80d9509030a3f4474343f0bad  gdb/guile/guile.c
+c282d1b172b350e73ba2901792c9bacb  gdb/guile/guile.c
 f593d2e94daa27ea7109c5a370dfd7f9  gdb/guile/lib/gdb.scm
 1c45478e50e427c61ca6d5582d101800  gdb/guile/lib/gdb/support.scm
 445198dad83af53fe35c2adc0cb6a1e9  gdb/guile/lib/gdb/printing.scm
@@ -6002,7 +6017,7 @@ e963ba2cb2f398f6678ff75fd766baa3  gdb/gu
 7f0b6b465e54b50a496761b92023a349  gdb/guile/lib/gdb/init.scm
 05918d25221d230088ba0ac075ea0bcf  gdb/guile/scm-string.c
 606c626ef8b2445a07e91a4aae81b396  gdb/guile/scm-ports.c
-e5116fa25301cf05c3bcd75f72fb3711  gdb/guile/scm-cmd.c
+ae9224513045924d7aec6d566cad38c0  gdb/guile/scm-cmd.c
 057da3ef458b7124db7472f2b54aed8e  gdb/guile/scm-symtab.c
 1b131b5d43861fb2c33633496c247e55  gdb/guile/scm-math.c
 3527b95d88b2e65b4646a4327c43d11f  gdb/guile/guile.h
@@ -6011,14 +6026,14 @@ e5116fa25301cf05c3bcd75f72fb3711  gdb/gu
 d50f7d9cca622c30d947ad66ad134ef9  gdb/guile/scm-pretty-print.c
 285f10e406912bf3ca175288545ff491  gdb/guile/scm-disasm.c
 91c2346964e99bd47f5e8b450beef1ea  gdb/guile/scm-progspace.c
-9feb17dae3961ecca3d04f788fddac1c  gdb/guile/guile-internal.h
+02b9d592f1dc798e1fbe47e29cfaff77  gdb/guile/guile-internal.h
 b2376b42f6294fd4a457b6c23dd49a86  gdb/guile/scm-block.c
 1309c37dab7cdcdf8ef05aec59482a7a  gdb/guile/scm-lazy-string.c
 d75e5df7abee3d614831bf2e9e9e48d7  gdb/obsd-tdep.h
 b57628c489d12a55931c64a1c75bee2b  gdb/charset.h
 97273dc809ad6327b606ddbb85a547ce  gdb/fortran-operator.def
 ec37492833a420567b71a6afa1840bc7  gdb/memory-map.c
-b3d4cad296595ceb0152241a969141db  gdb/mdebugread.c
+081c1b0e5d292b76fa9a9489c50ab2db  gdb/mdebugread.c
 e627ef90ea5e10cf66b83c23af44839d  gdb/progspace.c
 695314fdd81787b828c240a9c7256046  gdb/ChangeLog-2018
 35ae8edab0076f180bd5dd69040556d5  gdb/sparc64-fbsd-nat.c
@@ -6069,7 +6084,7 @@ d2d46bcec6f5aae8f7e2004cbb0d30a8  gdb/gd
 4bf941431e3862c45a6401018503f692  gdb/gdbserver/inferiors.h
 75711701abaf504c2d810ed7b50d0655  gdb/gdbserver/win32-arm-low.c
 15e4fd9096bd20303baa262b7e24ff00  gdb/gdbserver/linux-bfin-low.c
-5072f4eaab9fcb37ac38d6c67c2d9b60  gdb/gdbserver/Makefile.in
+891a683f77ae3ecfa8d7d511490d65f4  gdb/gdbserver/Makefile.in
 35b9e1dfff49293ebc44a4abae76bff5  gdb/gdbserver/x86-low.h
 6a7cf3def14023d9725682de58da3bfa  gdb/gdbserver/hostio-errno.c
 c49759dff0e29276ffbfbdc87aa8f26f  gdb/gdbserver/dll.h
@@ -6093,11 +6108,11 @@ d5f8542adb45b77f45cdd1b126048fce  gdb/gd
 93c3c895d1b799e240a747917cfc51b9  gdb/gdbserver/linux-x86-tdesc.c
 e21ca15762adda3e74d0dee7d6ce2d64  gdb/gdbserver/lynx-low.h
 e2f9439c334e84b1d0a052276177b60a  gdb/gdbserver/tdesc.c
-b3903b60b7af6b5b93c6e18e31990a9f  gdb/gdbserver/config.in
+5284bd25bc8ea301c572c7a966f002b4  gdb/gdbserver/config.in
 693541eef564c1191612342d5fd0f920  gdb/gdbserver/configure.ac
 4689db274cbcd53a10e266e717df6438  gdb/gdbserver/linux-aarch32-tdesc.h
 791b58ddf159b59c7d9375e2c2f00a07  gdb/gdbserver/README
-bec2b49bb19933a66ffa16d7de189074  gdb/gdbserver/mem-break.c
+cb518ee7d1c0154e4fb8c60e6e2e9294  gdb/gdbserver/mem-break.c
 2c02449ab61aa08d4d18b2ff4d522cbb  gdb/gdbserver/linux-mips-low.c
 397eabf44408be5055e84570aaa26e83  gdb/gdbserver/linux-x86-tdesc.h
 76c9b49d25ef432a204e4a65a989de0d  gdb/gdbserver/tracepoint.c
@@ -6113,7 +6128,7 @@ fe39815be26934b900d30ca445d3b853  gdb/gd
 fc25825af970ab717c85c8b3e4d3bf08  gdb/gdbserver/linux-i386-ipa.c
 117ca7c66926a45a859c23ea406f929d  gdb/gdbserver/.gitignore
 8a8792901d00c88a71c202ef053608d4  gdb/gdbserver/lynx-i386-low.c
-e069cfacaf68148a2e054a767c14c4b5  gdb/gdbserver/lynx-low.c
+59864f15fd650fcfd9fa042c786e2a6b  gdb/gdbserver/lynx-low.c
 9df5ffef99389a9fac6d47a8cb3eb89c  gdb/gdbserver/linux-s390-tdesc.h
 e0f05329b0bbb96b897830f34e7cfeed  gdb/gdbserver/linux-sh-low.c
 3344da962201e2fe1cb7403b53e84da6  gdb/gdbserver/symbol.c
@@ -6122,7 +6137,7 @@ f49b5cf9276f7efdd3b0fb4fed7a1ae3  gdb/gd
 baa6e939a9ac5c4c308673d191fd2ff9  gdb/gdbserver/linux-ppc-ipa.c
 45cf1684bbac2198d753aabbafafff10  gdb/gdbserver/proc-service.c
 547950569434000bb41d9c0be4ebed40  gdb/gdbserver/linux-arm-tdesc.h
-e16962118ed8e2547b542204dfd336bb  gdb/gdbserver/remote-utils.c
+289d7bc3cb02de44bd7dff297d0b9cfa  gdb/gdbserver/remote-utils.c
 882162f55f552b93d71d3071179ea861  gdb/gdbserver/hostio.h
 08486ffffea6e1e470808efcb8a6c576  gdb/gdbserver/notif.h
 3c0613be065b957f79f0b7f3dac36434  gdb/gdbserver/linux-arm-tdesc.c
@@ -6130,21 +6145,21 @@ e16962118ed8e2547b542204dfd336bb  gdb/gd
 607ae4d26639d81f879d3a9d982b39f0  gdb/gdbserver/server.c
 b9d24de1a2b2b930e6b8f57b7b0d3e01  gdb/gdbserver/dll.c
 54d753cd22397bbe52c7ff1d07b60cbc  gdb/gdbserver/debug.h
-486fb9cb4f577430a4ef14275a74b84f  gdb/gdbserver/nto-low.c
+e881473493d8aa4ec29e9c29909cbab4  gdb/gdbserver/nto-low.c
 306a391a1f195725832de86f84d2a8cc  gdb/gdbserver/x86-low.c
 937ae585e458e8ed3ac0686de51b2601  gdb/gdbserver/gdbreplay.c
 035bc41c866c169fd907a53d89ca3d2e  gdb/gdbserver/regcache.h
-99d4b45ae1e45f15e43186f8957f9a03  gdb/gdbserver/acinclude.m4
-7a94ed415823745d1433a8ab55c8a6d5  gdb/gdbserver/configure
+441e418c6c6515ff9d9f210c18400c2f  gdb/gdbserver/acinclude.m4
+5360e748957332627c238130c0682a83  gdb/gdbserver/configure
 6c3297ee3f0a24c92a5a71dc901c8711  gdb/gdbserver/notif.c
 eea815266498b2bf0b6eb3ea7c00f156  gdb/gdbserver/linux-cris-low.c
 14e3f51a1c926c2938db5a287828196b  gdb/gdbserver/aclocal.m4
 bf9d83d872573e7591621faa8ff8063d  gdb/gdbserver/thread-db.c
 7967452c1a174dbbaf9addf7039b767d  gdb/gdbserver/linux-s390-ipa.c
 d66371af32c6b6d99d5bad5cc116998f  gdb/gdbserver/linux-tile-low.c
-bf0af28df201dd9536fcfd83bc993a21  gdb/gdbserver/ChangeLog
+153c5fe911ffde35b28de3a79e28e1aa  gdb/gdbserver/ChangeLog
 5540812133f2773a7397f5d57bca31cf  gdb/gdbserver/linux-ppc-low.c
-342d872954b4ea1ffe6c11642edcc444  gdb/gdbserver/linux-low.c
+f19ef17d3c1606e4be2b582cca7b9e24  gdb/gdbserver/linux-low.c
 3bb976eb624e5c4cebf34f9652d67b50  gdb/gdbserver/proc-service.list
 40a1ece39d85775acb990697a91b498f  gdb/gdbserver/linux-s390-low.c
 487dbdd8c7cb1ac94d7331038a648687  gdb/gdbserver/utils.h
@@ -6155,7 +6170,7 @@ bf0af28df201dd9536fcfd83bc993a21  gdb/gd
 ed4b1cfbfa83e279241e55d600073ca2  gdb/gdbserver/wincecompat.h
 b4f883b66de5f68f24ad2d32d87214b8  gdb/gdbserver/i387-fp.c
 b87760b0ea3321bb7cba9dcdaee45a4b  gdb/gdbserver/tdesc.h
-09256dc62d61c13224b5baf9a7ec7778  gdb/gdbserver/debug.c
+2394733cbe7a27be8e05754b18203c2f  gdb/gdbserver/debug.c
 6f9a5e225f3e02d0ab9b643b904c5a92  gdb/gdbserver/gdbthread.h
 0ce888299411ad100e4319edfa7cc339  gdb/gdbserver/linux-aarch32-low.c
 797602a900a151519e740d078aaadd18  gdb/gdbserver/win32-low.h
@@ -6182,11 +6197,11 @@ ab547fc523d932c710785acb1950e83c  gdb/st
 8edc014e1b5928dd9761408fa7df0d64  gdb/stubs/sparc-stub.c
 140d077412ae615053b55e8cd29dfee2  gdb/stubs/sh-stub.c
 c40e87506f597a7943c5276b857d0684  gdb/buildsym.c
-2dd876fd8fd02218c084d9b901f66195  gdb/breakpoint.h
+0b599e8e57d09a54a7a57a90fb0e82d8  gdb/breakpoint.h
 61f1bf956c005df7b7782007cb41d4d5  gdb/objfiles.c
 336df5aa02e0c34ca27f7c40a8731e7b  gdb/debug.c
 91a2751fd55fc5eee28d4ff5ed905e4a  gdb/sol2-tdep.h
-a14d98f9793a900fdc28df5c72b524d8  gdb/ppc-linux-tdep.c
+8e5d59c64b208a6ef3be68d8d479f8a9  gdb/ppc-linux-tdep.c
 34e4c5a82017c9074d70a036a1195776  gdb/amd64-bsd-nat.h
 33e82795b3de28ec33551530ec362c2c  gdb/ChangeLog-2007
 db236eeb90f9b7cbce11309b97df389b  gdb/gdbthread.h
@@ -6212,7 +6227,7 @@ d54dab3401ff05ddaa799b4e58843913  gdb/ma
 b8469f2377649e6bd12fbbe0f8c750fd  gdb/m68k-linux-nat.c
 56fa350da5dd0b92207319c4723ec643  gdb/arm-nbsd-tdep.c
 79f0110d88dddbd62392dfb7a93750b1  gdb/rust-exp.y
-ea0aa46359479f43cce0b70404913594  gdb/linux-nat.c
+364ac7eec90535c9f90c76392c0f92fe  gdb/linux-nat.c
 a589b8fa2d251d722fc439789006dbf3  gdb/producer.h
 473f33ba921545be6c0c70ad25c103f4  gdb/nds32-tdep.h
 f2a08a5058f2f62a08f8e61839b7ac80  gdb/sh-tdep.h
@@ -6224,7 +6239,7 @@ f6a8bc868aad0f7d193f9c2c12fb9b34  gdb/xt
 842c0bdb7f1e2a5b8906bd851148a72e  gdb/alpha-bsd-tdep.c
 8f5a03c189727d347a330548f3ea9c98  gdb/ChangeLog-1991
 c318ef7599f816722fa0bad86a1f0b34  gdb/amd64-nat.h
-72149ea738571fab6a4e91a471046499  gdb/windows-nat.c
+77ca292ae5f4521bb14d5348451732d9  gdb/windows-nat.c
 515ab46bb14f15c859c83a0b9e977146  gdb/target-dcache.c
 56d40eefc754edd90f4c3899c7bda35f  gdb/alpha-mdebug-tdep.c
 877f8e32b3e1063da38a80163c59bd76  gdb/symmisc.c
@@ -6245,7 +6260,7 @@ fe8bfb0304fcf0372bb1cbd874f8327c  gdb/co
 797504580fb7b0cebd6e088c4e816f09  gdb/compile/compile-internal.h
 057e21b49faf3a8c53eddb9ef82b3686  gdb/compile/compile-object-load.h
 323a2dd57092c6e5677a50aad2a70faf  gdb/compile/compile-c-types.c
-db181c4f696e286a2945992a4a11bb2b  gdb/value.h
+b572e4d842caab0a001d818a4d1d2ad0  gdb/value.h
 ed5ee5ceb8418a3c9bdd4ac3368802f2  gdb/ppc-nbsd-nat.c
 bd9f3ddf10aa5822382e4b1b7894c911  gdb/auxv.h
 334796bc6963d95f52f05c9f7f3179b0  gdb/i386-dicos-tdep.c
@@ -6253,7 +6268,7 @@ bd9f3ddf10aa5822382e4b1b7894c911  gdb/au
 46a8c765ccff4cbf2fa3083ac30b570b  gdb/i387-tdep.c
 cef7717ad443ecddf064ffdc1977d469  gdb/ada-operator.def
 1469e8b56bbb43dc3c5eb0f5b4071844  gdb/libiberty.m4
-903b9e579d9d78bb3264e9105bb89ccc  gdb/dwarf-index-write.c
+8b9d31442e2f9cac3901877fe9578725  gdb/dwarf-index-write.c
 d4bce23a7af3129a6ab7cc56cb9b182b  gdb/gcore.c
 b8361790d5bf10aa0a3a48493e9a2571  gdb/hppa-linux-tdep.c
 1db93c25702b328960d3421d02910e19  gdb/p-exp.y
@@ -6262,7 +6277,7 @@ b8361790d5bf10aa0a3a48493e9a2571  gdb/hp
 e9e5d7db42e70ecd65eaca5b56f4cb75  gdb/xstormy16-tdep.c
 43de4283edd0c940a9e8b13715c553e5  gdb/i386-obsd-tdep.c
 527a92f93c7693f095fbe432ab6ad918  gdb/ppc-nbsd-tdep.c
-00814946df99a0daec2dec107fa9cd1f  gdb/stabsread.c
+557541777e1419c4062a504940ea0c62  gdb/stabsread.c
 9fdafccecd6cd44751141b88f8908bb9  gdb/MAINTAINERS
 f47044c0373443bbd1b7db7d37d267a1  gdb/arm-fbsd-tdep.c
 684b3f8393021bcde657ce22c1fe785b  gdb/i386-bsd-nat.c
@@ -6308,7 +6323,7 @@ ceb187eef73fbf6e87359f603204ef67  gdb/i3
 1d4e59e0fbddd775e98b42b6d142ae21  gdb/ppc-obsd-tdep.c
 e6586473312ae5226130efcc391c42b3  gdb/configure.nat
 2882b9b0f5cebdd33ab20188392de5b1  gdb/memattr.c
-cf11f4e005cc1523e81eac4c9351f9d3  gdb/event-top.h
+65c6340951cdb83866291652a006ff2c  gdb/event-top.h
 29e826c49c391f0dc74df2523ec68465  gdb/gdbarch.h
 9198f7b1807c968098814aa2a3901aee  gdb/gdb.gdb
 b77f981fd2a258c825464ee189a8e630  gdb/dwarf-index-cache.c
@@ -6348,12 +6363,13 @@ f9be875411682aba8ed88f0ca0597bb9  gdb/gd
 960520d1b8f6bbd765db541d9015a1ee  gdb/gdbsupport/scoped_mmap.c
 3493f48730a832fd25f85dbeef81d2ca  gdb/gdbsupport/poison.h
 706d69e673b5fcc97df84bf455ec8450  gdb/gdbsupport/run-time-clock.h
-e7e51222b16198de995733de5249700a  gdb/gdbsupport/common.m4
+e43ecf53381bbff26036171e7b415972  gdb/gdbsupport/common.m4
 de167a8e30589b9e4dd0b2569a8adf45  gdb/gdbsupport/gdb_unique_ptr.h
 d0d3e0d5e451be382cb48ee7c79c79af  gdb/gdbsupport/signals.c
 77b969b013873e314324d105ac5855dc  gdb/gdbsupport/gdb-dlfcn.h
 f4a8abf1fbb1051cd89d181c8ad65e3d  gdb/gdbsupport/gdb_tilde_expand.h
 c9bd55b91d8daa169e82c6f633744a05  gdb/gdbsupport/gdb_optional.h
+338f3390ac29ea5d3877b089e5d948d5  gdb/gdbsupport/alt-stack.h
 a3290f2ed7365e3748decd526d25263c  gdb/gdbsupport/common-inferior.h
 9f928512b902e02c3de6035321c0fa6e  gdb/gdbsupport/tdesc.c
 df32514a7454ab34784e66cb097751aa  gdb/gdbsupport/underlying.h
@@ -6374,6 +6390,7 @@ f914bf96917665a123fec5bcc254db01  gdb/gd
 14b480b9a17b3d904adf4ce6e6f7fbca  gdb/gdbsupport/scoped_mmap.h
 c717370aa06a7ecd1b88e2130059bfba  gdb/gdbsupport/scoped_restore.h
 d2eb5056b67ef31b7cf1eec0eeac60b5  gdb/gdbsupport/gdb_string_view.h
+1a7af9e15036a039938fe7348673cdf4  gdb/gdbsupport/thread-pool.c
 6be07717af3ac2e580fd350bcd67dc36  gdb/gdbsupport/rsp-low.h
 1051f2450834f86c537ebd14eef93696  gdb/gdbsupport/common-utils.c
 d4ce6a61596d8b5dade3f999c8fb046e  gdb/gdbsupport/gdb_assert.h
@@ -6393,9 +6410,11 @@ d8a7ffc11f241004d45c3e4b91796212  gdb/gd
 ff200282480b9cd49492ff4c2fc91a34  gdb/gdbsupport/gdb_unlinker.h
 26976478015d2fc22ae85a7f93d6aad2  gdb/gdbsupport/pathstuff.h
 3ddf304a7d731b166cde2ebda665473c  gdb/gdbsupport/default-init-alloc.h
+075c3788eebd849cecd3fc406af8b14b  gdb/gdbsupport/gdb-sigmask.h
 4df263e1ba1832e5fb9cf49629bcfaff  gdb/gdbsupport/safe-strerror.c
 80cf5d2dc3e037ec721a4e2d6901b98d  gdb/gdbsupport/new-op.c
 19c73edc63f84cb4bbbc0c25ed23d27f  gdb/gdbsupport/btrace-common.h
+52b076df1eedfa559a9f62d85a095787  gdb/gdbsupport/block-signals.h
 11892868404e4f5a0a4780e2a3c16e92  gdb/gdbsupport/gdb_signals.h
 6ded252b05d007fc0839e66e26ece33c  gdb/gdbsupport/gdb_ref_ptr.h
 f2358e2c78b01401dcca389db17f2fa2  gdb/gdbsupport/pathstuff.c
@@ -6412,6 +6431,7 @@ d638fa5bd8d3cf8f034f8e76b03b3e5a  gdb/gd
 dbcef0b1b67812f5fc6ef1c7c845df64  gdb/gdbsupport/gdb_splay_tree.h
 72afd745e66b842c6dc4e317a6d19442  gdb/gdbsupport/fileio.c
 2c132f82b76590e80e2d659daa013b45  gdb/gdbsupport/scope-exit.h
+43768a9f23969b98699db2321cce05c5  gdb/gdbsupport/thread-pool.h
 59c5ec0fc8e4ef0a2b782f0a5534eaf3  gdb/gdbsupport/ptid.h
 dcb65cc8c033e9c91b681adda12b57c3  gdb/gdbsupport/forward-scope-exit.h
 77ae4857a7034af45912de1bc102973b  gdb/gdbsupport/symbol.h
@@ -6426,30 +6446,32 @@ b4cdd9eb407a08ce5e8bab8780953a4f  gdb/gd
 66ac71d305bc53e52b0778d6a574120c  gdb/gdbsupport/xml-utils.c
 1ca377b94fc59ede2ab253ae0437f785  gdb/gdbsupport/hash_enum.h
 7d8924b65e59489047c9d465adbf096c  gdb/gdbsupport/errors.h
+37477e4a290013a751472531c9df7426  gdb/gdbsupport/parallel-for.h
 dbe963fc0c5568563bfa2609b4d9e505  gdb/gdbsupport/gdb_string_view.tcc
 ea3a0ebc5e1e9154fcc0a314554c7cf0  gdb/gdbsupport/format.c
 5777c910d71968f2118a2ca53edfc7b1  gdb/gdbsupport/run-time-clock.c
 ed8e52e19096f2277bb567896e4b1dc9  gdb/gdbsupport/errors.c
 6c540c2f6ee404f50e085f361b3d0c39  gdb/gdbsupport/gdb_vecs.h
 0978d2995e78d157ce981f8525238a88  gdb/gdbsupport/byte-vector.h
-db81b6e4809d05698f89a395d5cbe1ea  gdb/gdbsupport/signals-state-save-restore.c
+50b8d5b1bcd41fb511257a063223b962  gdb/gdbsupport/signals-state-save-restore.c
+779bc465769415454d6bd557acbfee11  gdb/unittests/main-thread-selftests.c
 cad617ad6c61d6c302751f66b1f7c72b  gdb/unittests/rsp-low-selftests.c
 fe06bf7dc62aaf318e0b82b0c8463f0b  gdb/unittests/utils-selftests.c
 cb54b6640ed2620d5ce3b25099d173a3  gdb/unittests/common-utils-selftests.c
-343a4c2ba0a7579a94e7aea6c7855700  gdb/unittests/optional/in_place.cc
-f8e8228372cc4bf10cffc4d7c056230e  gdb/unittests/optional/observers/1.cc
-55a04af3ae12e5b274c4209284fa79ca  gdb/unittests/optional/observers/2.cc
-8575ec0739d824183db00e7c0339f5d0  gdb/unittests/optional/cons/copy.cc
-b79134ae65813021d703d661b5aa253c  gdb/unittests/optional/cons/default.cc
-a393dd1ea3bc15c21710fdb62a581a66  gdb/unittests/optional/cons/move.cc
-008df011a329f3adc41567cbdbd57282  gdb/unittests/optional/cons/value.cc
-8a841c535b26c9706d2ed4d22e4b58b1  gdb/unittests/optional/assignment/3.cc
-325e20cde5f5bf8c8cf479d22208d02e  gdb/unittests/optional/assignment/1.cc
-47448be48ff46b01e66e2fdd135606b2  gdb/unittests/optional/assignment/2.cc
-3499b9d96472da1f5b8a27028f73919e  gdb/unittests/optional/assignment/7.cc
-e9d47c97628c9dc731a937bc05c6e6db  gdb/unittests/optional/assignment/4.cc
-c91bc8b8dea6361e99840c5c83da510b  gdb/unittests/optional/assignment/6.cc
-6680b080292ad196d124ee90644584c0  gdb/unittests/optional/assignment/5.cc
+96b1963d200d6e27d6cb5431da53780a  gdb/unittests/optional/in_place.cc
+5aa6d0eae8f8078457606876002d5ee8  gdb/unittests/optional/observers/1.cc
+9db0252f0936c5df78265caeaa56cfb7  gdb/unittests/optional/observers/2.cc
+b06478a95b8209aa8b14cd183deaf588  gdb/unittests/optional/cons/copy.cc
+a831e558051618520c44f5afd2a833c8  gdb/unittests/optional/cons/default.cc
+6370969b0aa34d1046ce017ac447da4c  gdb/unittests/optional/cons/move.cc
+7f653142c4daf2f2524125e826c85f93  gdb/unittests/optional/cons/value.cc
+9b925801cbd0a830a9fd939e05a5909b  gdb/unittests/optional/assignment/3.cc
+4e3cf357fc19ba127329745c68f925a1  gdb/unittests/optional/assignment/1.cc
+2cdcfbe650d9c37494b74aee67aa1d40  gdb/unittests/optional/assignment/2.cc
+75d5404d2f9146e371e02879196ca38a  gdb/unittests/optional/assignment/7.cc
+84a38acab2fbccdb01ceedf187ca97ca  gdb/unittests/optional/assignment/4.cc
+c8ae772cc206d45f66f14a76d0444741  gdb/unittests/optional/assignment/6.cc
+ddc60d057070021c593387e66f5128dc  gdb/unittests/optional/assignment/5.cc
 2765f533bf0a1f503ca3c68068ae0d49  gdb/unittests/cli-utils-selftests.c
 268553b5811b196316cf2aefccfddc36  gdb/unittests/style-selftests.c
 7f841fdf2459518f20ecbf60f20b3888  gdb/unittests/environ-selftests.c
@@ -6466,17 +6488,17 @@ f05a8aed96f6d5b71d236616b515a21c  gdb/un
 be732f744787eaa65e1c1657cf113b29  gdb/unittests/scoped_mmap-selftests.c
 f5f1fda12d36d28b5066a9afae8cd922  gdb/unittests/ptid-selftests.c
 14729d54706fe427eccc7decb4ae13bd  gdb/unittests/observable-selftests.c
-970c298548220fcbc62a77c0f12cf7aa  gdb/unittests/basic_string_view/modifiers/remove_prefix/char/1.cc
+38b07293c09f59b9ac0e76c435547e12  gdb/unittests/basic_string_view/modifiers/remove_prefix/char/1.cc
 19025b5888259613708a05388172045d  gdb/unittests/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc
-52e4af34f79e508ec918e9f46507752a  gdb/unittests/basic_string_view/modifiers/swap/char/1.cc
+6b1c55a69c74e0807fe0b2dd36493c98  gdb/unittests/basic_string_view/modifiers/swap/char/1.cc
 0b0258b5b4ec872278bf3af7e92969a8  gdb/unittests/basic_string_view/modifiers/swap/wchar_t/1.cc
-b6c8f809f97796e9b572b8eb1e69fc59  gdb/unittests/basic_string_view/modifiers/remove_suffix/char/1.cc
+40e1fd08319ee3c7351b03534f3806ef  gdb/unittests/basic_string_view/modifiers/remove_suffix/char/1.cc
 0fea870c6a7dfef42a014f48902c47d0  gdb/unittests/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc
 0e57c14f7245ed3d5a79cd6c5a867eb4  gdb/unittests/basic_string_view/typedefs.cc
 744d2c0ee3c84c7f0f8cfa4c81e04904  gdb/unittests/basic_string_view/include.cc
 a406a8578601bdaa734df9a0fbc17371  gdb/unittests/basic_string_view/range_access/char/1.cc
 2f8dbf5265e1e2bbdebbb168b1114208  gdb/unittests/basic_string_view/range_access/wchar_t/1.cc
-c221a3862906e37f2aa43ed2ea06099d  gdb/unittests/basic_string_view/operators/char/2.cc
+2ed1fffa434e612a37a1de2c568df97b  gdb/unittests/basic_string_view/operators/char/2.cc
 b8b2277c71805df19a7a9329f7845ccc  gdb/unittests/basic_string_view/operators/wchar_t/2.cc
 c947d23a8e1e9d7b922e2aec95ac2575  gdb/unittests/basic_string_view/requirements/typedefs.cc
 ab84b615da73587ba21949a18ffae825  gdb/unittests/basic_string_view/requirements/explicit_instantiation/char/1.cc
@@ -6484,56 +6506,56 @@ f9e9487048260c64ef6998da23d8d945  gdb/un
 8c77578a3f85480d5045badc4f9e38f4  gdb/unittests/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc
 42056a62341b78df0446a5658b66fdbc  gdb/unittests/basic_string_view/requirements/explicit_instantiation/1.cc
 91d6ac6fc3aa460270fb38938f5db460  gdb/unittests/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc
-13aa184fa9a0004f63fc2a00ad58bab6  gdb/unittests/basic_string_view/cons/char/3.cc
-69b45d62c1a09f2b8feea6bba9157418  gdb/unittests/basic_string_view/cons/char/1.cc
-3b7e3311a51a4e31ec3b529e5dfb4b39  gdb/unittests/basic_string_view/cons/char/2.cc
+6549d24ff1184640362c8a76243dc9ab  gdb/unittests/basic_string_view/cons/char/3.cc
+b5212c835272b893bc8df8b93906b02d  gdb/unittests/basic_string_view/cons/char/1.cc
+ceba9910916278f1cde6258610b7c8d5  gdb/unittests/basic_string_view/cons/char/2.cc
 538d2d79e34c78c0f0ad6b67995effe7  gdb/unittests/basic_string_view/cons/wchar_t/3.cc
 fbf832f4b887b0762a88b891cd0ed2f2  gdb/unittests/basic_string_view/cons/wchar_t/1.cc
 3ffcf05b79b1a3112313427016d1b7c0  gdb/unittests/basic_string_view/cons/wchar_t/2.cc
-3f2ff951692b917b1fb052d157350325  gdb/unittests/basic_string_view/capacity/1.cc
+ad8f1b48a2c4c6a0b7f8ee6dc52e03f1  gdb/unittests/basic_string_view/capacity/1.cc
 fc91348a17bcc6ca39f1fc77a81b41a6  gdb/unittests/basic_string_view/capacity/empty_neg.cc
 b67c9a04f5d836097f4f03b955607be3  gdb/unittests/basic_string_view/literals/types.cc
 a0d2b074cd4b8cb0b1319686a9990ca1  gdb/unittests/basic_string_view/literals/values.cc
-6b0c24bd930ee7b7ed565474de2666f8  gdb/unittests/basic_string_view/element_access/char/1.cc
+21bc655686bfc22c13c2b336eb811630  gdb/unittests/basic_string_view/element_access/char/1.cc
 f80bcbf380175a250df6ae85330a32bb  gdb/unittests/basic_string_view/element_access/char/2.cc
-9171f36efa9a4d35af831d37e89beac2  gdb/unittests/basic_string_view/element_access/char/empty.cc
-f65041496e557b9b3b7c987d7a2880da  gdb/unittests/basic_string_view/element_access/char/front_back.cc
+65ea94a34216d6957176b8954a8cb00f  gdb/unittests/basic_string_view/element_access/char/empty.cc
+f94ffc6b75d30703a87592a34b65d4dd  gdb/unittests/basic_string_view/element_access/char/front_back.cc
 2180ed5a7945fe089b9a0409806a587e  gdb/unittests/basic_string_view/element_access/wchar_t/1.cc
 0be3544bfb1bbb7e83778bacce623f16  gdb/unittests/basic_string_view/element_access/wchar_t/2.cc
 2b7ef497e26b984738e743f0af848626  gdb/unittests/basic_string_view/element_access/wchar_t/empty.cc
 6e1ceaa72e3591d5394b41c04854dc21  gdb/unittests/basic_string_view/element_access/wchar_t/front_back.cc
 36424b2b581cb8d145f1c4148b1785f5  gdb/unittests/basic_string_view/inserters/char/3.cc
 be2f240daccfc5540da7a51f536538f9  gdb/unittests/basic_string_view/inserters/char/1.cc
-ef2769e654cc8368068285fc1e39e770  gdb/unittests/basic_string_view/inserters/char/2.cc
+4a1b8dc21d8e70164106c36378b7570b  gdb/unittests/basic_string_view/inserters/char/2.cc
 07448a1feeacbaf735dca83426c077cf  gdb/unittests/basic_string_view/inserters/wchar_t/3.cc
 978afc8b796583272ea7ba30b08f6129  gdb/unittests/basic_string_view/inserters/wchar_t/1.cc
 46066c5195fd103025b490a9d076e309  gdb/unittests/basic_string_view/inserters/wchar_t/2.cc
 8dd2ec189bef565b98fc16be1f52d9ba  gdb/unittests/basic_string_view/inserters/pod/10081-out.cc
 de116768d07892be5f5e5e97c9b634e3  gdb/unittests/basic_string_view/types/1.cc
 aec49e56843b9d6ffffb2b03a1359808  gdb/unittests/basic_string_view/operations/string_conversion/1.cc
-382163a79abb17459251fbc6d6b0623b  gdb/unittests/basic_string_view/operations/copy/char/1.cc
+020257afb2a4709cdee1a74c52a2c830  gdb/unittests/basic_string_view/operations/copy/char/1.cc
 b50a80b7844048437b878a449bfc2fa7  gdb/unittests/basic_string_view/operations/copy/wchar_t/1.cc
-2b3be8e4d11925c225d7f3df61197273  gdb/unittests/basic_string_view/operations/data/char/1.cc
+4d49941688c5242fd2dde778fdc6133b  gdb/unittests/basic_string_view/operations/data/char/1.cc
 760d511a23321be24264f55e429cee77  gdb/unittests/basic_string_view/operations/data/wchar_t/1.cc
-e7e99ee539bb7b694cd38f8d0b11905d  gdb/unittests/basic_string_view/operations/substr/char/1.cc
+e8521ecbe86bdf0f4c8749a7e64f6bdd  gdb/unittests/basic_string_view/operations/substr/char/1.cc
 cad4e6bd3b7f60edec6af4b15ef08d78  gdb/unittests/basic_string_view/operations/substr/wchar_t/1.cc
-59c229e982cba174b20f10466a9ee725  gdb/unittests/basic_string_view/operations/rfind/char/3.cc
-ace83167f20f623e308da6c8a2f32c36  gdb/unittests/basic_string_view/operations/rfind/char/1.cc
-0089dc43fb8a41892536763ea732eb39  gdb/unittests/basic_string_view/operations/rfind/char/2.cc
+765c3b6928d30c129f6c528eb17e99a1  gdb/unittests/basic_string_view/operations/rfind/char/3.cc
+9795e1bf3b7c0eaeeea1ea7aef287ac8  gdb/unittests/basic_string_view/operations/rfind/char/1.cc
+e4a9be189724769ad54300e3e7ab1ed8  gdb/unittests/basic_string_view/operations/rfind/char/2.cc
 542b99001661e81b73a2e365ba3023a4  gdb/unittests/basic_string_view/operations/rfind/wchar_t/3.cc
 50b6db4b1035e5c2afec75b79082931c  gdb/unittests/basic_string_view/operations/rfind/wchar_t/1.cc
 a366c6bddcdea9f064708feabd14585d  gdb/unittests/basic_string_view/operations/rfind/wchar_t/2.cc
-4cbc28d9321e7e8c276485a4876ab600  gdb/unittests/basic_string_view/operations/compare/char/1.cc
+2ed9dde9abe18002873350c908e811c8  gdb/unittests/basic_string_view/operations/compare/char/1.cc
 e92c962620c8a940cfc60e1625683eb3  gdb/unittests/basic_string_view/operations/compare/char/2.cc
-a4c4140e6cb58573f5e2eef772b9ca5a  gdb/unittests/basic_string_view/operations/compare/char/13650.cc
+4b618c0ba6620a2517f71f48f5c17a06  gdb/unittests/basic_string_view/operations/compare/char/13650.cc
 31d8c0dde683f84f0f339b1d332e1613  gdb/unittests/basic_string_view/operations/compare/char/70483.cc
 8e10d8a6b26e5ce3df310b7c7272cf7a  gdb/unittests/basic_string_view/operations/compare/wchar_t/1.cc
 258d98752ed3879fcbb7cf1cd049ae2d  gdb/unittests/basic_string_view/operations/compare/wchar_t/2.cc
 28bf4552b8f5b84a5c832541d5e3747d  gdb/unittests/basic_string_view/operations/compare/wchar_t/13650.cc
-36ca7a5f71cbbc9d7fd72b0fa1b446e8  gdb/unittests/basic_string_view/operations/find/char/3.cc
-204e333cd06f3f7a3cfb9e41698916cd  gdb/unittests/basic_string_view/operations/find/char/1.cc
-2cb77e927517a7cdc6c1a4049cf6ab98  gdb/unittests/basic_string_view/operations/find/char/2.cc
-e7d382e18758f521d429f56cd4876421  gdb/unittests/basic_string_view/operations/find/char/4.cc
+5ee6a60394a266bc5241f6c9333646de  gdb/unittests/basic_string_view/operations/find/char/3.cc
+13e1d53b625dd5f8e0a73a9b0b674551  gdb/unittests/basic_string_view/operations/find/char/1.cc
+1dbe191359bb977fb7e11619a11759bb  gdb/unittests/basic_string_view/operations/find/char/2.cc
+5b184b24d6e375c2175893b53b6e65e6  gdb/unittests/basic_string_view/operations/find/char/4.cc
 72e74e4189c25c29ff5e9d94905ab9b7  gdb/unittests/basic_string_view/operations/find/wchar_t/3.cc
 e7c848d16a56780d13637a3ad5131fd7  gdb/unittests/basic_string_view/operations/find/wchar_t/1.cc
 a65e9659a77224a12959c68bc108746c  gdb/unittests/basic_string_view/operations/find/wchar_t/2.cc
@@ -6545,7 +6567,8 @@ d897b56d4055ab599e34d0d99079b30e  gdb/un
 a379144db871c32e5bc326a263ab2b71  gdb/unittests/xml-utils-selftests.c
 4e482ca090cb9f3d6d625d1290f07967  gdb/unittests/copy_bitwise-selftests.c
 71940ff68a2bb90eefea0a76efd9bed8  gdb/unittests/help-doc-selftests.c
-4a8aaf2ca58df246c2c243bc83842ece  gdb/unittests/array-view-selftests.c
+ffa959fe197c111bfbe522ceddc51977  gdb/unittests/tui-selftests.c
+4ddca0aa06a629682f013b349248d032  gdb/unittests/array-view-selftests.c
 b3d171ccad8a9c998eaf5a4fa3b02c4d  gdb/unittests/string_view-selftests.c
 817e51df4bbe66e7857fadba63f50e60  gdb/unittests/lookup_name_info-selftests.c
 3e91e5358303d9e98bb1b4fdacdc3515  gdb/disasm.h
